2017-02-27 3 views
-1

Ich weiß, es gibt vorherige Fragen zu dem Thema, aber ich kann nicht die Einzelheiten meiner Frage finden. Ich versuche, eine Poisson-Verteilung in einem Histogramm zu überlagern. Das erste, was ich versuchte, wurde die Poisson-Funktion aus dem Statistikmodul in scipy mit:overplot poisson Verteilung auf Histogramm

import numpy 
from scipy.stats import poisson 

mu = mean(data) 
n, bins, patches = pyplot.hist(data, 20, normed = 1) 
pyplot.plot(bins, poisson.pmf(bins, mu), 'r-') 
pyplot.show() 

jedoch wie in der Abbildung (in blau das Histogramm meiner Daten) gezeigt, erhalte ich die rote Handlung, die drei seltsame Spitzen hat .

The histogram in blue represents my data. The red line is the Poisson function using scipy.stats

So habe ich versucht, meine eigene Poisson-Verteilung Funktion zu schreiben:

def poisson(mu, x): 
    from scipy.misc import factorial 
    return numpy.exp(-mu) * mu**x * factorial(x)**-1 

y = poisson(mu, bins) 

Aber wenn ich versuche es mir ein Array von Nans erhalten zu drucken. Mache ich etwas falsch? Oder sind die Zahlen in den Behältern zu groß?

print y  
[ nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan] 

jedoch, wenn die Ergebnisse aus stats.poisson Druck erhalte ich:

[3.25452236e-06 0.00000000e+00 0.00000000e+00 0.00000000e+00 
0.00000000e+00 3.63110218e-04 0.00000000e+00 0.00000000e+00 
0.00000000e+00 0.00000000e+00 5.24385396e-03 0.00000000e+00 
0.00000000e+00 0.00000000e+00 0.00000000e+00 1.06061293e-02 
0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 
3.23183010e-03] 

Antwort

0
  • für die Poisson-Funktion, sollten Sie 'int' in Eingang anstelle Ihres 'Bins' geben, numpy .Arrang (1200, 1475) zum Beispiel.

  • für Ihre eigene Poisson-Funktion, Sie müssen vorsichtig sein, wenn Sie "Fakultät" verwenden, vor allem mit großen x (x> 20), weil es schnell zunimmt! Ich vermute, dass du der Ursprung deiner Nan ist. Auch Faktor von Float existiert nicht!

Versuch:

X = np.arange(1200, 1450) 
plt.plot(X, poisson.pmf(X,1375), 'r-') 
+0

Hallo, richtig, ich hatte gedacht, dass für meine eigene Fakultätsfunktion ich die Bins ganze Zahlen machen musste, ich weiß nicht, warum es nicht für die poisson auftrat Funktion im scipy Modul. Ein bisschen dumm von mir. Vielen Dank! – user3412058

Verwandte Themen