Étant donné une moyenne et une variance, y a-t-il un simple appel de fonction qui tracera une distribution normale?
python
matplotlib
user1220022
la source
la source
%matplotlib inline
pour que l'intrigue apparaissescipy.stats.norm.pdf(x, mu, sigma)
place demlab.normpdf(x, mu, sigma)
math
-vous alors que vous avez déjà importénumpy
et que vous pourriez utilisernp.sqrt
?math
pour des opérations scalaires car, par exemple, ellesmath.sqrt
sont d'une ampleur plus rapide quenp.sqrt
lorsque vous travaillez sur des scalaires.Je ne pense pas qu'il y ait une fonction qui fasse tout cela en un seul appel. Cependant, vous pouvez trouver la fonction de densité de probabilité gaussienne dans
scipy.stats
.Donc, le moyen le plus simple que je pourrais trouver est:
Sources:
la source
norm.pdf
pournorm(0, 1).pdf
. Cela permet de s'adapter plus facilement à d'autres cas / de comprendre que cela génère un objet représentant une variable aléatoire.Utilisez seaborn à la place, j'utilise distplot of seaborn avec mean = 5 std = 3 of 1000 values
Vous obtiendrez une courbe de distribution normale
la source
La réponse Unutbu est correcte. Mais comme notre moyenne peut être supérieure ou inférieure à zéro, j'aimerais quand même changer cela:
pour ça :
la source
Si vous préférez utiliser une approche étape par étape, vous pouvez envisager une solution comme suit
la source
Je viens de revenir sur cela et j'ai dû installer scipy car matplotlib.mlab m'a donné le message d'erreur
MatplotlibDeprecationWarning: scipy.stats.norm.pdf
en essayant l'exemple ci-dessus. Ainsi, l'échantillon est maintenant:la source
Je crois qu'il est important de définir la hauteur, donc créé cette fonction:
Où
sigma
est l'écart type,h
est la hauteur etmid
est la moyenne.Voici le résultat en utilisant différentes hauteurs et écarts:
la source
vous pouvez obtenir facilement du cdf. donc pdf via cdf
la source