Comment puis-je faire des graphiques d'une fonction de distribution gaussienne à une dimension en utilisant les valeurs des paramètres de moyenne et d'écart type (μ, σ) = (−1, 1), (0, 2) et (2, 3)?
Je suis nouveau dans la programmation, en utilisant Python.
Merci d'avance!
Avec les excellents packages matplotlib
et numpy
from matplotlib import pyplot as mp
import numpy as np
def gaussian(x, mu, sig):
return np.exp(-np.power(x - mu, 2.) / (2 * np.power(sig, 2.)))
x_values = np.linspace(-3, 3, 120)
for mu, sig in [(-1, 1), (0, 2), (2, 3)]:
mp.plot(x_values, gaussian(x_values, mu, sig))
mp.show()
vous pouvez lire ce tutoriel pour savoir comment utiliser les fonctions de distributions statistiques en python. http://docs.scipy.org/doc/scipy/reference/tutorial/stats.html
from scipy.stats import norm
import matplotlib.pyplot as plt
import numpy as np
#initialize a normal distribution with frozen in mean=-1, std. dev.= 1
rv = norm(loc = -1., scale = 1.0)
rv1 = norm(loc = 0., scale = 2.0)
rv2 = norm(loc = 2., scale = 3.0)
x = np.arange(-10, 10, .1)
#plot the pdfs of these normal distributions
plt.plot(x, rv.pdf(x), x, rv1.pdf(x), x, rv2.pdf(x))
La forme correcte, basée sur la syntaxe d'origine et correctement normalisée est:
def gaussian(x, mu, sig):
return 1./(sqrt(2.*pi)*sig)*np.exp(-np.power((x - mu)/sig, 2.)/2)
En plus des réponses précédentes, je recommande de calculer d'abord le rapport dans l'exposant, puis de prendre le carré:
def gaussian(x,x0,sigma):
return np.exp(-np.power((x - x0)/sigma, 2.)/2.)
De cette façon, vous pouvez également calculer la gaussienne de très petits ou très grands nombres:
In: gaussian(1e-12,5e-12,3e-12)
Out: 0.64118038842995462
Il vous manque une parenthèse dans le dénominateur de votre fonction gaussienne (). Comme c'est le cas maintenant, vous divisez par 2 et multipliez avec la variance (sig ^ 2). Mais ce n'est pas vrai et comme vous pouvez le voir sur vos graphiques, plus la variance est grande, plus la gaussienne est étroite - ce qui est faux, elle devrait être opposée.
Il suffit donc de changer la fonction gaussian () en:
def gaussian(x, mu, sig):
return np.exp(-np.power(x - mu, 2.) / (2 * np.power(sig, 2.)))