Wahrscheinlichkeits-Dichte-Funktion aus dem Histogramm in python fit anderen histrogram
Ich habe eine Frage bezüglich Einbau und erste Zufallszahlen.
Situation ist wie folgt:
Erstens habe ich ein Histogramm aus den Daten Punkte.
import numpy as np
"""create random data points """
mu = 10
sigma = 5
n = 1000
datapoints = np.random.normal(mu,sigma,n)
""" create normalized histrogram of the data """
bins = np.linspace(0,20,21)
H, bins = np.histogram(data,bins,density=True)
Ich würde gerne interpretieren Sie das Histogramm als Wahrscheinlichkeits-Dichte-Funktion (mit z.B. 2 freie Parameter), so dass ich es verwenden können, zu produzieren zufällige zahlen UND ich würde auch gerne die Funktion zu nutzen, um sich einem anderen Histogramm.
Vielen Dank für Ihre Hilfe
- vielleicht questoin wieder aufgenommen werden sollten und verbessert
- Wenn Sie nicht verstehen, die Frage ist, ist es nicht sicher, dass dies nicht eine Frage, nur weil Sie das nicht. Versuchen Sie, zuerst zu verstehen. Ich schließe mich Saullo.
Du musst angemeldet sein, um einen Kommentar abzugeben.
Können Sie eine kumulierte Dichte-Funktion zum generieren von Zufallszahlen aus einer beliebigen Verteilung, wie hier beschrieben.
Verwenden ein Histogramm erzeugen einen sanften kumulierte Dichte-Funktion ist nicht ganz trivial; man kann die interpolation zum Beispiel scipy.interpolieren.interp1d() für Werte zwischen den Zentren von Ihren Kästen und das wird funktionieren, um ein Histogramm mit einer relativ großen Anzahl von Ablagen und Elemente. Jedoch müssen Sie entscheiden, auf die form der Schwänze von der Wahrscheinlichkeit-Funktion, dh für Werte kleiner als der kleinste bin oder größer als die größte bin. Sie könnte Ihrer Verteilung Gaußschen Schwänze basierend auf zum Beispiel den Einbau einer Gaußschen zu Ihrem Histogramm), oder jede andere form der Rute angebracht, dein problem ist, oder einfach abschneiden, die Verteilung.
Beispiel:
Diese nicht handhaben Schwänze, und es behandeln konnte, bin Rändern besser, aber es würde den Einstieg auf mit ein Histogramm zu generieren, die mehrere Werte mit der gleichen Verteilung.
P. S. Man könnte auch versuchen, passen einer bestimmten, bekannten Verteilung beschrieben durch ein paar Werte (was ich denke ist, was Sie genannt hatte, in die Frage) aber die oben genannten nicht-parametrischen Ansatz ist mehr für Allgemeine Zwecke.
bins=np.linspace(0,.5,num=800) counts18, bins = np.histogram(Z_DATA[InData18], bins=bins) x=np.cumsum(counts18)*1./np.sum(counts18)*1. y=bins[range(len(x)+1)] y=y[1:] fit=scipy.interpolate.interp1d(x,y) plt.hist(fit(np.random.uniform(x[0],x[-1],len(data))),bins=y) plt.hist(data,alpha=0.3,bins=y) plt.show()