Parcela Distribución normal con Matplotlib.

Por favor, ayúdeme a trazar la distribución normal de los siguientes datos:

DATOS:

import numpy as np import matplotlib.pyplot as plt from scipy.stats import norm h = [186, 176, 158, 180, 186, 168, 168, 164, 178, 170, 189, 195, 172, 187, 180, 186, 185, 168, 179, 178, 183, 179, 170, 175, 186, 159, 161, 178, 175, 185, 175, 162, 173, 172, 177, 175, 172, 177, 180] std = np.std(h) mean = np.mean(h) plt.plot(norm.pdf(h,mean,std)) 

salida:

 Standard Deriviation = 8.54065575872 mean = 176.076923077 

la ttwig es incorrecta, ¿qué hay de malo con mi código?

Puede intentar usar hist para poner su información de datos junto con la curva ajustada como se muestra a continuación:

 import numpy as np import scipy.stats as stats import pylab as pl h = sorted([186, 176, 158, 180, 186, 168, 168, 164, 178, 170, 189, 195, 172, 187, 180, 186, 185, 168, 179, 178, 183, 179, 170, 175, 186, 159, 161, 178, 175, 185, 175, 162, 173, 172, 177, 175, 172, 177, 180]) #sorted fit = stats.norm.pdf(h, np.mean(h), np.std(h)) #this is a fitting indeed pl.plot(h,fit,'-o') pl.hist(h,normed=True) #use this to draw histogram of your data pl.show() #use may also need add this 

introduzca la descripción de la imagen aquí

Suponiendo que está recibiendo la norm de scipy.stats , probablemente solo necesite ordenar su lista:

 import numpy as np import scipy.stats as stats import matplotlib.pyplot as plt h = [186, 176, 158, 180, 186, 168, 168, 164, 178, 170, 189, 195, 172, 187, 180, 186, 185, 168, 179, 178, 183, 179, 170, 175, 186, 159, 161, 178, 175, 185, 175, 162, 173, 172, 177, 175, 172, 177, 180] h.sort() hmean = np.mean(h) hstd = np.std(h) pdf = stats.norm.pdf(h, hmean, hstd) plt.plot(h, pdf) # including h here is crucial 

Y así obtengo: introduzca la descripción de la imagen aquí