Java: 基于泊松的点过程约束在一个小区域

Java: Poisson-based point process constrained in a small region

同时模拟一个包含1000个点的基于泊松分布的随机点过程;它们似乎都占据了 window 中心的一个小区域。

我使用 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;
}

`

在我看来,问题出在您认为输出应该是什么,因为该程序似乎生成了您所要求的大部分内容。速率为 500 的 Poisson 的期望值和方差都等于 500,对于大的 λ 值,它非常对称且呈钟形。综上所述,这意味着标准偏差为 sqrt(500),略小于 22.4,因此您应该期望大约 95% 的收入为 500±45,这看起来像您得到的。

你随后的编辑说(在评论中)λ=250,结果表现相似。每个维度的可能结果范围是 250±31,仍然聚集到中心。

通过创建具有标准差的泊松随机变量,使得 ±3σ 跨越您的绘图区域,很容易证实我的解释。 您需要更大的 variance/standard 偏差来增加结果在 window 中的分布。为了演示这一点,我使用了 Poisson(6400)(标准差为 80)并减去 6150 得到平均值 250。因此,绝大多数值将落在 0 到 500 之间。我生成了 1000 个独立的值对并使用 JMP 统计包绘制它们,结果如下:

为了欢乐,这里有一个独立的 Normal(250, 80) 对图:

它们看起来非常相似,不是吗?

重申一下,您使用的泊松算法没有任何问题。它完全按照您的指示进行操作,即使这不是您期望的结果。


附录

既然您不相信 Poisson converges to Gaussian as lambda grows,这里有一些针对您的具体案例的直接证据,再次使用 JMP 生成:

左边是 1000 个随机生成的 Poisson(250) 值的直方图。注意结构良好的钟形。我有 JMP select 基于 AIC (Aikaike Information Criterion) 的最佳连续分布拟合。它 selected 正态性作为最佳拟合,诊断在右侧,结果密度图以红色叠加在直方图上。结果几乎不言自明。