在模拟包含1000个点的泊松分布的随机点过程时;它们似乎都占据了窗口中心的一个小区域。
我使用Donald Knuth逆采样算法来实现基于Poisson的伪随机数生成器。
https://en.wikipedia.org/wiki/Poisson_distribution#Generating_Poisson-distributed_random_variables
Lambda值(又称成功率)设置为window_dimension / 2,并获得了此结果(屏幕截图)
码:
public double getPoisson(double lambda) {//250
double L = Math.exp(-lambda);
double p = 1d;
int k = 0;
do {
k++;
p *= Math.random();
} while (p > L);
return k-1;
}
`
最佳答案
在我看来,问题在于您认为输出应该是什么,因为该程序似乎在生成您所请求的内容。速率为500的Poisson的期望值和方差都等于500,并且对于较大的λ,它非常对称且呈钟形。综上所述,所有这些均意味着标准偏差为sqrt(500)
,略小于22.4,因此您应该期望收入的95%为500±45,看起来像您所得到的。
使用您随后的编辑(在注释中)说λ= 250,结果的行为类似。每个维度可能的结局范围为250±31,仍然聚集在中心。
通过创建具有标准偏差的Poisson随机变量以使±3σ跨您的绘图区域,很容易确认我的解释。
您需要更大的方差/标准差来增加结果在整个窗口中的分布。为了演示这一点,我使用了Poisson(6400)(标准偏差为80),然后减去6150得到的平均值为250。因此,绝大多数值将落在0到500之间。我生成了1000个独立变量对值,并使用JMP统计信息包将其绘制出来,结果如下:
只是为了欢笑,这是一对独立的Normal(250,80)对的图:
他们看起来很漂亮,不是吗?
重申一下,您使用的泊松算法没有问题。它确实按照您的指示执行操作,即使这不是您预期的结果。
附录
由于您不相信Poisson converges to Gaussian as lambda grows,因此以下是通过JMP再次生成的针对您特定情况的一些直接证据:
左侧是1000个随机生成的Poisson(250)值的直方图。注意钟形的形状。我让JMP根据AIC (Aikaike Information Criterion)选择最佳的连续分布拟合。它选择正态性作为最佳拟合,右侧的诊断程序将结果密度图以红色叠加在直方图上。结果几乎可以说明一切。