计算泊松概率百分比

时间:2008-11-11 12:51:44

标签: python statistics poisson

在Excel(或OpenOffice Calc)中使用POISSON函数时,它需要两个参数:

  • 一个整数
  • 一个'平均'数字

并返回一个浮点数。

在Python(我尝试过RandomArray和NumPy)中,它返回一个随机泊松数的数组。 我真正想要的是这个事件发生的百分比(它是一个常数,数组每次都有不同的数字 - 所以它是一个平均数吗?)。

例如:

print poisson(2.6,6)

返回[1 3 3 0 1 3](每次运行它都会有所不同)。

我从calc / excel得到的数字是3.19(POISSON(6,2.16,0)*100)。

我使用python的poisson错误(没有双关语!)或者我错过了什么?

3 个答案:

答案 0 :(得分:24)

scipy有你想要的东西

>>> scipy.stats.distributions
<module 'scipy.stats.distributions' from '/home/coventry/lib/python2.5/site-packages/scipy/stats/distributions.pyc'>
>>> scipy.stats.distributions.poisson.pmf(6, 2.6)
array(0.031867055625524499)

值得注意的是,手动计算很容易too

答案 1 :(得分:14)

手工操作很容易,但你可以这样做。您可以在循环中执行指数和阶乘以避免溢出:

def poisson_probability(actual, mean):
    # naive:   math.exp(-mean) * mean**actual / factorial(actual)

    # iterative, to keep the components from getting too large or small:
    p = math.exp(-mean)
    for i in xrange(actual):
        p *= mean
        p /= i+1
    return p

答案 2 :(得分:1)

This page解释了为什么你得到一个数组,以及数字的含义,至少。