2013-11-15 3 views
21

Montag habe ich eine 1 Dimentional Array und kann die „mittleren“ und „Standardabweichung“ diese Probe und zeichnet die „Normalverteilung“ berechnen, aber ich habe ein Problem:eine Normalverteilung bis 1D Daten

I will wie unten die Daten und Normalverteilung in der gleichen Figur zeichnen:

ich weiß nicht, wie sowohl die „DATA“ zu zeichnen und die „Normalverteilung“

jede Idee über „Gaußschen Wahrscheinlichkeitsdichtefunktion in scipy .Statistiken"?

s = np.std(array) 
m = np.mean(array) 
plt.plot(norm.pdf(array,m,s)) 
+2

, was Sie bisher versucht haben? Bitte posten Sie den Code, den Sie bisher haben, damit wir spezifische Fragen dazu beantworten können. – Garth5689

Antwort

52

Sie können matplotlib verwenden, um das Histogramm und die PDF-Datei zu plotten (wie im Link in @ MrE's Antwort). Zur Anpassung und zur Berechnung der PDF können Sie wie folgt scipy.stats.norm 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, normed=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 Handlung durch das Skript generiert:

Plot

+0

Ist es möglich, dies ohne scipy Modul zu tun? – maro

+0

@maro Ja. Die Anpassung der Normalverteilung ist ziemlich einfach. Sie können 'mu, std = norm.fit (Daten)' durch 'mu = np.mean (data); std = np.std (Daten) '. Sie müssen Ihre eigene Version der PDF der Normalverteilung implementieren, wenn Sie diese Kurve in der Abbildung grafisch darstellen möchten. –