【问题标题】:How to bound the sample of Poisson Random Variates to simulate arrivals如何绑定泊松随机变量的样本以模拟到达
【发布时间】:2017-10-30 03:24:24
【问题描述】:

我想做一个蒙特卡罗模拟,在该模拟上我生成 10 个场景,每个场景的特征在于时间范围内的随机到达数。

我使用scipy.stats.poisson https://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 的其他上下文。

【问题讨论】:

  • 是否有某些原因您不能按需生成人口成员,而不是预先生成?

标签: python random scipy statistics poisson


【解决方案1】:

我必须使人口的规模足够大以符合泊松随机变量

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

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

因此,如果您想知道在模拟过程中获得 1% 的错误所需的最小尺寸是多少,您可以使用倒数:

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

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

泊松分布对您的情况似乎是明智的。但是,如果您想要一个反映您的人口规模中最大 N 的分布,您可以调整更灵活的参数,例如 Beta-binomial 分布。我的建议是寻找现象的真实数据,然后从中调整或导出概率函数。一个更简单的解决方案是通过随机选择值来引导它。 对于统计问题,鼓励您使用Cross validated

【讨论】:

  • 谢谢@Emer,我会利用你的解释。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2011-06-26
  • 1970-01-01
  • 1970-01-01
  • 2019-03-08
  • 2018-05-29
  • 2016-12-06
  • 1970-01-01
相关资源
最近更新 更多