169 votes

Comment tracer une distribution normale

Compte tenu d'une moyenne et d'une variance, existe-t-il une fonction simple permettant de tracer une distribution normale ?

312voto

unutbu Points 222216
import matplotlib.pyplot as plt
import numpy as np
import scipy.stats as stats
import math

mu = 0
variance = 1
sigma = math.sqrt(variance)
x = np.linspace(mu - 3*sigma, mu + 3*sigma, 100)
plt.plot(x, stats.norm.pdf(x, mu, sigma))
plt.show()

gass distro, mean is 0 variance 1

64voto

lum Points 566

Je ne pense pas qu'il existe 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 j'ai trouvé est :

import numpy as np
import matplotlib.pyplot as plt
from scipy.stats import norm

# Plot between -10 and 10 with .001 steps.
x_axis = np.arange(-10, 10, 0.001)
# Mean = 0, SD = 2.
plt.plot(x_axis, norm.pdf(x_axis,0,2))
plt.show()

Fuentes:

23voto

Kaustuv Dash Points 199

Utilisez plutôt du sabre de mer J'utilise distplot de seaborn avec mean=5 std=3 sur 1000 valeurs.

value = np.random.normal(loc=5,scale=3,size=1000)
sns.distplot(value)

Vous obtiendrez une courbe de distribution normale

16voto

João Quintas Points 11

Si vous préférez utiliser une approche pas à pas, vous pouvez envisager une solution comme la suivante

import numpy as np
import matplotlib.pyplot as plt

mean = 0; std = 1; variance = np.square(std)
x = np.arange(-5,5,.01)
f = np.exp(-np.square(x-mean)/2*variance)/(np.sqrt(2*np.pi*variance))

plt.plot(x,f)
plt.ylabel('gaussian distribution')
plt.show()

12voto

Luke359 Points 348

La réponse d'Unutbu est correcte. Mais comme notre moyenne peut être supérieure ou inférieure à zéro, je voudrais quand même changer cela :

x = np.linspace(-3 * sigma, 3 * sigma, 100)

à ce :

x = np.linspace(-3 * sigma + mean, 3 * sigma + mean, 100)

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X