2008-11-11 14 views
16

Wenn die Poisson-Funktion in Excel (oder in Open Calc) verwenden, es braucht zwei Argumente:berechnen Poisson-Wahrscheinlichkeit Prozentsatz

  • eine ganze Zahl
  • eine 'durchschnittliche' Anzahl

und gibt einen Gleitkommawert zurück.

In Python (Ich versuchte RandomArray und NumPy) gibt es ein Array von zufälligen Poissonzahlen. Was ich wirklich will, ist der Prozentsatz, dass dieses Ereignis auftreten wird (es ist eine konstante Zahl und das Array hat jedes Mal andere Zahlen - also ist es ein Durchschnitt?).

zum Beispiel:

print poisson(2.6,6) 

kehrt [1 3 3 0 1 3] (und jedes Mal, wenn ich es laufen, es ist anders).

Die Zahl, die ich von calc/Excel erhalte, ist 3.19 (POISSON(6,2.16,0)*100).

Verwende ich die Poisson des Pythons falsch (kein Wortspiel!) Oder fehle ich etwas?

Antwort

13

Es ist einfach, mit der Hand zu tun, aber Sie können es so überlaufen. Sie können die Exponenten und Fakultäts in einer Schleife tun, um den Überlauf zu vermeiden:

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 
1

This page erklärt, warum Sie ein Array und die Bedeutung der Zahlen mindestens erhalten.

23

scipy hat, was Sie wollen

>>> 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) 

Es ist erwähnenswert, dass es ziemlich einfach ist, von Hand zu berechnen, too.

+1

Alternative Import sei: 'aus scipy.stats importiert poisson' dann' poisson.pmf (6, 2.6) '= ,031867055625524499 – Jarad

Verwandte Themen