wake-up-neo.net

Anpassung einer Normalverteilung an 1D-Daten

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))
32
Jax

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:

Plot

72

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.

3
YXD

Hier passen Sie keine Normalverteilung an. Das Ersetzen von sns.distplot(data) durch sns.distplot(data, fit=norm, kde=False) sollte den Trick tun.

2

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)

Ausgabe

für weitere Informationen: seaborn.distplot

0
LonelyDaoist