如何绑定泊松随机变量样本以模拟到达



我想做一个蒙特卡洛模拟,在这个模拟上我生成 10 个场景,每个场景的特点是在一个时间范围内随机数量的到达。

我使用scipy.stats.poissonhttps://docs.scipy.org/doc/scipy/reference/generated/scipy.stats.poisson.html 以生成每个方案的到达样本,假设均值为 12。

from scipy.stats import poisson
arrivals = poisson.rvs(12, 10)
print arrivals

输出是随机数列表:

[11 13  9 10  8  9 13 12 11 23] 

平均值是 11.9,这已经足够了,但问题是在这种情况下,在最后一个场景中,有 23 人到达,这与平均值 12 相去甚远。

由于在运行此模拟之前,我必须选择一个总体,因此我必须使该总体的大小足够大以符合泊松随机变量。 因此,假设我选择了一个大小为 1.5 * 12 = 18 的总体,不幸的是,在最后一种情况下,我会得到一个错误,因为样本大于总体本身。

我的第一个问题是:为了使用泊松随机变量列表对这些到达进行采样而不会出错,我必须选择的最小总体大小是多少?

我的第二个问题是:有没有更好的方法来使用另一个概率分布来管理这种问题?

请注意,在这种情况下 mean=12,但我必须模拟 mean=57 和 mean=234 的其他上下文。

我必须使该总体的大小足够大以符合泊松随机变量

泊松分布在所有非负整数(形式 0 到无穷大)上定义。从理论上讲,如果您从该分布中生成数字,您应该期望得到任何正整数,但那些远离平均值 (lambda) 的出现概率很低。例如,使用 lambda 参数 12 获得值 18 或更高的概率为 3.7%:

>>> poisson.sf(18,12)
0.037416489663391859

因此,如果您想知道在模拟过程中需要用于获得 1% 误差的最小大小是多少,您可以使用相反的方法:

>>> poisson.isf(0.01,12)
21.0

Lambda 是一段时间内到达人数的平均值,而不是最大值(人口规模)。我想,模拟代码无法更改为使用样本中的最大值。

泊松分布对于您的情况似乎是明智的。但是,如果您想要一个反映大小总体中最大 N 的分布,则可以调整更灵活的分布(如 Beta 二项分布)的参数。我的建议是寻找你的现象的真实数据,然后从中调整或推导出概率函数。一个更简单的解决方案是通过随机选择值来引导它。 对于统计问题,我们鼓励您使用交叉验证

最新更新