python - pmf - Calcular el porcentaje de probabilidad de poisson
probabilidad en python (3)
Es fácil hacerlo a mano, pero puede desbordarse haciéndolo de esa manera. Puede hacer el exponente y factorial en un bucle para evitar el desbordamiento:
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
Cuando utiliza la función POISSON en Excel (o en OpenOffice Calc), toma dos argumentos:
- un entero
- un número ''promedio''
y devuelve un flotador.
En Python (probé RandomArray y NumPy) devuelve una matriz de números aleatorios de Poisson. Lo que realmente quiero es el porcentaje en que ocurrirá este evento (es un número constante y la matriz tiene cada vez números diferentes, ¿es un promedio?).
por ejemplo:
print poisson(2.6,6)
devuelve [1 3 3 0 1 3]
(y cada vez que lo ejecuto, es diferente).
El número que obtengo de calc / excel es 3.19 ( POISSON(6,2.16,0)*100
).
¿Estoy usando mal el poisson de la pitón (sin juego de palabras) o me estoy perdiendo algo?
Esta página explica por qué obtienes una matriz y el significado de los números en ella, al menos.
scipy
tiene lo que quieres
>>> 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)
Vale la pena señalar que es bastante fácil de calcular a mano, también .