Wie wäre es scipy mit? Sie können die gewünschte Distribution unter continuous distributions in the scipy.stats library auswählen. Die verallgemeinerte Gammafunktion hat eine ungleiche Schieflage und Wölbung, aber Sie müssen noch ein wenig arbeiten, um herauszufinden, welche Parameter verwendet werden müssen, um die Verteilung zu spezifizieren, um einen bestimmten Mittelwert, Varianz, Skew und Kurtosis zu erhalten. Hier ist ein Code, mit dem Sie beginnen können.
import scipy.stats
import matplotlib.pyplot as plt
distribution = scipy.stats.norm(loc=100,scale=5)
sample = distribution.rvs(size=10000)
plt.hist(sample)
plt.show()
print distribution.stats('mvsk')
Dies zeigt ein Histogramm einer 10.000 Elementprobe aus einer Normalverteilung mit einem Mittelwert von 100 und eine Varianz 25 und druckt die Statistiken der Verteilung:
(array(100.0), array(25.0), array(0.0), array(0.0))
die Normalverteilung mit dem verallgemeinerten Gamma Ersetzen Verteilung,
distribution = scipy.stats.gengamma(100, 70, loc=50, scale=10)
Sie erhalten die Statistiken [Mittelwert, Varianz, Skew, Kurtosis] (array(60.67925117494595), array(0.00023388203873597746), array(-0.09588807605341435), array(-0.028177799805207737))
.
Jede Normalverteilung hat Skew 0 und Kurtosis 0. Verwenden Sie eine andere Familie von Verteilungen. –
Vorsicht, es gibt mehrere Möglichkeiten, die Berechnung für Skew und Kurtosis zu definieren. Momente sind nicht äquivalent zu Mittelwert, Varianz, Skew und Kurtosis, obwohl sie den gleichen Kern haben. –
Außerdem geben die Momente keine eindeutige Verteilung an. Siehe [diese ähnliche Frage, aber Fragen über R: http://StackOverflow.com/Questions/4807398/How-to-generate-distributions-given-mean-sd-skew-and-kurtosis-in-r –