在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错误(没有双关语!)或者我错过了什么?
scipy
有你想要的
>>> scipy.stats.distributions>>> scipy.stats.distributions.poisson.pmf(6, 2.6) array(0.031867055625524499)
值得一提的是,它很容易通过手来计算,太.
这很容易手工完成,但你可以这样做.您可以在循环中执行指数和阶乘以避免溢出:
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