【问题标题】:How to draw a random sample from a Poisson distribution?如何从泊松分布中抽取随机样本?
【发布时间】:2018-05-12 23:08:47
【问题描述】:

我有一个整数 X(非常大)和一个概率 p,我想用它按照泊松分布从 X 中抽取样本 s(一个数字)。例如,如果 X = 10^8p=0.05,我希望 s 是我们得到的正面数。

我可以使用 random.binomial 轻松做到这一点:

s=np.random.binomial(n=X, p=p)

如何使用random.poisson 应用相同的想法?

【问题讨论】:

    标签: python numpy probability distribution poisson


    【解决方案1】:

    只需将pX 相乘:

    np.random.poisson(10**8 * 0.05)
    

    获得超过 10**8 的概率在数值上为零。

    @pjs 教授强调,我们正在将概率和数字组合成一个速率,这是泊松过程的参数。

    进一步值得一提的是,对于如此大的数字,您会发现二项式和泊松的 pmf 彼此非常相似,并且(使用概率函数或工程师称之为“cdf”)与高斯非常相似。

    【讨论】:

      【解决方案2】:

      https://docs.scipy.org/doc/numpy-1.14.0/reference/generated/numpy.random.poisson.html

       import numpy as np
       s = np.random.poisson(size=n, lam=p)
      

      【讨论】:

      • 5 和 10**4 是从哪里来的?
      • 我从 numpy 文档中的示例中复制了它 - 现在已修复它 :)
      • 我希望你意识到比率 (lam) 不是概率。