ich habe leider ein Problem damit, meine Histogramme zu normieren.
Was bei einem Parametersatz klappt, klappt leider bei dem anderen nicht und umgekehrt und
alles was ich im Internet so finde, scheint mir nicht wirklich zu helfen.
Was genau habe ich vor?
Ich möchte ein Array von Zufallszahlen (nach einer beliebigen Verteilung) als Histogramm ausgeben und
zwar derart, dass auf der y-Achse nicht die absoluten, sondern die relativen Häufigkeiten aufgetragen werden.
Minimalbeispiel:
Code: Alles auswählen
Array1 = numpy.random.triangular(10,15,20 , size=10**6)
Array2 = numpy.random.triangular(14.995,15,15.005 , size=10**6)
### PLOT 1 ###
plt.hist(Array1 ,bins = 55, normed=True, cumulative=False)
plt.title('Wahrscheinlichkeitsverteilung')
plt.xlabel('Werte')
plt.ylabel("Wahrscheinlichkeit")
plt.show()
### PLOT 2 ###
plt.hist(Array2 ,bins = 55, normed=True, cumulative=False)
plt.title('Wahrscheinlichkeitsverteilung')
plt.xlabel('Werte')
plt.ylabel("Wahrscheinlichkeit")
plt.show()
### PLOT 3 ###
weights = numpy.ones_like(Array1)/len(Array1)
plt.hist(Array1, weights=weights, bins = 55, cumulative=False, normed=False)
plt.show()
### PLOT 4 ###
weights = numpy.ones_like(Array2)/len(Array2)
plt.hist(Array2, weights=weights, bins = 55, cumulative=False, normed=False)
plt.show()
und wenn man den Flächeninhalt A = p_max*(b-a)/2 = 0.2*10/2 = 1 berechnet, dann sieht man
auch, dass hier alles stimmt.
Dieselbe Methode funktioniert aber nicht mehr, wenn ich dieselbe Verteilungsform mit anderen Parametern
benutze; dies sieht man bei Plot 2. Dort reichen die Werte der y-Achse trotz Normierung bis 200. Die Fläche
ist dennoch insgesamt A= 200* 0,01 / 2 = 1. Dennoch kann die relative Häufigkeit nicht 200% sein.
Ich habe bei Stack eine zweite Methode gefunden, diese sind dann in Plot 3 und 4 dargestellt.
Dort erhalten wir bei BEIDEN Histogrammen die maximale Wahrscheinlichkeit von 0.035, was allerdings wegen
der unterschiedlichen Intervallbreite nicht sein. Die Fläche unter Plot 3 beträgt auch nur A=0,175 und bei Plot 4
A=0.00175. Das heißt, dass in keinem Fall die richtigen relativen Häufigkeiten angezeigt werden. Wenn ich hier normed=True
angebe, dann erhalte ich das gleiche Ergebnis wie in Plot 1 und 2.
Mit cumulative habe ich versucht, die Normierung der Verteilungen zu überprüfen, aber dies liefert mir für jede der Verteilungen die Maximalfläche von 1,
was man durch nachrechnen leicht widerlegen kann.
Gibt es eine Methode, um die korrekten relativen Häufigkeiten anzuzeigen und zwar für alle Parameter?
Die Option normed=True scheint dies ja nicht zu leisten. Ich sitze schon seit zwei Tagen an dem Problem und
-wie schon gesagt- ich habe bislang im Internet nichts gefunden, was mir helfen konnte!
Danke schon einmal Im Voraus!
LG, Kevin