Ich habe ein 1-dimensionales Array und ich kann den "Mittelwert" und die "Standardabweichung" dieses Beispiels berechnen und die "Normalverteilung" zeichnen, aber ich habe Probleme:
Ich möchte die Daten und die Normalverteilung in derselben Abbildung wie folgt darstellen:
Ich weiß nicht, wie man sowohl die "DATA" als auch die "Normalverteilung" plottet
eine Idee zu "Gaußsche Wahrscheinlichkeitsdichtefunktion in scipy.stats"?
s = np.std(array)
m = np.mean(array)
plt.plot(norm.pdf(array,m,s))
Sie können matplotlib
verwenden, um das Histogramm und das PDF (wie im Link in der Antwort von @ MrE) zu zeichnen. Zum Anpassen und Berechnen der PDF-Datei können Sie scipy.stats.norm
wie folgt verwenden.
import numpy as np
from scipy.stats import norm
import matplotlib.pyplot as plt
# Generate some data for this demonstration.
data = norm.rvs(10.0, 2.5, size=500)
# Fit a normal distribution to the data:
mu, std = norm.fit(data)
# Plot the histogram.
plt.hist(data, bins=25, density=True, alpha=0.6, color='g')
# Plot the PDF.
xmin, xmax = plt.xlim()
x = np.linspace(xmin, xmax, 100)
p = norm.pdf(x, mu, std)
plt.plot(x, p, 'k', linewidth=2)
title = "Fit results: mu = %.2f, std = %.2f" % (mu, std)
plt.title(title)
plt.show()
Hier ist die vom Skript erzeugte Darstellung:
Um sowohl die Normalverteilung als auch Ihre tatsächlichen Daten zu sehen, sollten Sie Ihre Daten als Histogramm darstellen und dann die Wahrscheinlichkeitsdichtefunktion darüber zeichnen. In dem Beispiel auf http://docs.scipy.org/doc/numpy/reference/generated/numpy.random.normal.html erfahren Sie, wie Sie dies genau tun.
Hier passen Sie keine Normalverteilung an. Das Ersetzen von sns.distplot(data)
durch sns.distplot(data, fit=norm, kde=False)
sollte den Trick tun.
Es gibt einen viel einfacheren Weg, dies mit seaborn zu tun:
import seaborn as sns
from scipy.stats import norm
data = norm.rvs(5,0.4,size=1000) # you can use a pandas series or a list if you want
sns.distplot(data)
für weitere Informationen: seaborn.distplot