Dada una media y una varianza, ¿existe una llamada de función simple que trazará una distribución normal?
python
matplotlib
usuario1220022
fuente
fuente
%matplotlib inline
para que aparezca la tramascipy.stats.norm.pdf(x, mu, sigma)
lugar demlab.normpdf(x, mu, sigma)
math
cuando ya lo ha importadonumpy
y podría utilizarlonp.sqrt
?math
para operaciones escalares ya que, por ejemplo,math.sqrt
es más rápido quenp.sqrt
cuando se opera en escalares.No creo que haya una función que haga todo eso en una sola llamada. Sin embargo, puede encontrar la función de densidad de probabilidad gaussiana en
scipy.stats
.Entonces, la forma más sencilla que se me ocurrió es:
Fuentes:
fuente
norm.pdf
anorm(0, 1).pdf
. Esto facilita la adaptación a otros casos / entender que esto genera un objeto que representa una variable aleatoria.Use seaborn en su lugar, estoy usando distplot de seaborn con media = 5 std = 3 de 1000 valores
Obtendrá una curva de distribución normal
fuente
La respuesta de Unutbu es correcta. Pero debido a que nuestra media puede ser más o menos que cero, todavía me gustaría cambiar esto:
a esto :
fuente
Si prefiere utilizar un enfoque paso a paso, podría considerar una solución como la siguiente
fuente
Acabo de volver a esto y tuve que instalar scipy ya que matplotlib.mlab me dio el mensaje de error
MatplotlibDeprecationWarning: scipy.stats.norm.pdf
al probar el ejemplo anterior. Entonces la muestra es ahora:fuente
Creo que es importante establecer la altura, así que creé esta función:
Donde
sigma
es la desviación estándar,h
es la altura ymid
es la media.Aquí está el resultado usando diferentes alturas y desviaciones:
fuente
puede obtener CDF fácilmente. entonces pdf a través de cdf
fuente