16

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

4

3 に答える 3

26

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)

手で計算するのも非常に簡単であることは注目に値します

于 2008-11-11T13:17:55.417 に答える
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
于 2008-11-11T13:24:40.860 に答える
1

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

于 2008-11-11T13:12:40.667 に答える