在基于包含1000个点的泊松分布模拟随机点过程的同时;它们似乎占据了窗口中心的一个小区域。
我使用Donald Knuth逆采样算法来实现基于泊松的伪随机数发生器。
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;
}
`
答案 0 :(得分:3)
在我看来,问题在于你认为输出应该是什么,因为程序似乎产生了你所要求的几乎所有。速率为500的Poisson将具有其预期值和方差等于500,对于λ的大值,它是非常对称和钟形的。总的来说,一切都意味着标准偏差为sqrt(500)
,略低于22.4,所以你应该期望你收入的95%是500±45,这看起来就像你得到的那样。
随后您的编辑说(在评论中)λ= 250,结果表现相似。每个维度的可能结果范围是250±31,仍然聚集到中心。
通过创建具有标准偏差的泊松随机变量可以很容易地确认我的解释,使得±3σ跨越您的绘图区域。 您需要更大的方差/标准偏差来增加整个窗口的结果传播。为了演示这个,我选择了Poisson(6400) - 其标准偏差为80-并减去6150,结果平均值为250.因此绝大多数值将落在0到500之间。我生成了1000个独立的值成对的值并使用JMP统计包绘制它们,结果如下:
只是为了jollies,这是一个独立的Normal(250,80)对的情节:
他们看起来很相似,不是吗?
重申一下,您使用的泊松算法没有任何问题。它完全按照你的要求去做,即使这不是你所期望的结果。
由于您不相信Poisson converges to Gaussian as lambda grows,这里是您的具体案例的一些直接证据,再次由JMP生成:
左边是1000个随机生成的泊松(250)值的直方图。注意形状良好的钟形。我让JMP根据AIC (Aikaike Information Criterion)选择最佳的连续分布拟合。它选择正态性作为最佳拟合,右侧的诊断和红色的结果密度图叠加在直方图上。结果几乎不言自明。