Question

Lorsque vous utilisez la fonction POISSON dans Excel (ou dans OpenOffice Calc), deux arguments sont nécessaires:

  • un entier
  • un nombre 'moyen'

et renvoie un float.

En Python (j'ai essayé RandomArray et NumPy), il retourne un tableau de nombres de poissons aléatoires. Ce que je veux vraiment, c’est le pourcentage de cet événement (c’est un nombre constant et le tableau a chaque fois des nombres différents - est-ce donc une moyenne?).

par exemple:

print poisson(2.6,6)

renvoie [1 3 3 0 1 3] (et chaque fois que je l'exécute, c'est différent).

Le nombre que je reçois de calc / excel est 3.19 ( POISSON (6,2.16,0) * 100 ).

Est-ce que j'utilise mal le poisson du python (sans jeu de mots!) ou est-ce qu'il me manque quelque chose?

Était-ce utile?

La solution

C’est facile à faire à la main, mais vous pouvez déborder de cette façon. Vous pouvez faire l’exposant et la factorielle dans une boucle pour éviter le débordement:

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

Autres conseils

scipy a ce que vous voulez

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

Il est intéressant de noter qu'il est assez facile de calculer manuellement, aussi .

Cette page explique pourquoi vous obtenez un tableau, et la signification des nombres qu'il contient, au moins.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top