質問

Excel(またはOpenOffice Calc)でPOISSON関数を使用する場合、2つの引数を取ります:

  • 整数
  • 「平均」数

フロートを返します。

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のポアソンを間違って使用していますか(しゃれはありません!)、または何か不足していますか?

役に立ちましたか?

解決

手作業で行うのは簡単ですが、その方法でオーバーフローさせることができます。オーバーフローを回避するために、ループで指数と階乗を行うことができます。

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

他のヒント

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)

手動で計算するのは非常に簡単であることに注意してください、

このページでは、配列を取得する理由を説明しています。少なくともその中の数字の意味。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top