loi des grands nombres
Posté : mar. 9 mars 2021 10:08
Bonjour,
on considère une variable aléatoire X qui prend les valeurs entières de façon équiprobable de 1 à 5.
Et on nomme Mn la variable aléatoire moyenne d'un échantillon de taille n de la variable aléatoire X.
Le but est de simuler 500 valeurs de la variable aléatoire Mn par une fonction en Python dans le but d'estimer la probabilité que la distance entre Mn et E(X) soit supérieure ou égale à l'écart-type de Mn.
Je calcule E(X) qui vaut 3 et je sais que Mn aura aussi la même espérance.
Je calcule la variance de X qui vaut 2 d'où son écart-type qui vaut racine carrée de 2. Et en supposant les variables X indépendantes, je trouve que l'écart-type de Mn est l'écart-type de X divisé par la racine carrée de n.
Voici le programme avec Edupython :
from lycee import *
def simulMn(n):
S=[randint(1,5) for i in range(n)]
Mn=sum(S)/n
return Mn
def echantMn(n) :
echant=[simulMn(n) for i in range(500)]
c=0
d=sqrt(2/n)
for e in echant :
if abs(e-3)>=d :
c=c+1
return c/500
Mais il semble y avoir un problème car si j'essaie avec echantMn(1000) puis echantMn(10000) je trouve des résultats qui ne se rapprochent pas de 0 contrairement à ce que prévoit la loi des grands nombres.
Merci de m'aider à trouver l'erreur du script.
Cordialement,
C.
on considère une variable aléatoire X qui prend les valeurs entières de façon équiprobable de 1 à 5.
Et on nomme Mn la variable aléatoire moyenne d'un échantillon de taille n de la variable aléatoire X.
Le but est de simuler 500 valeurs de la variable aléatoire Mn par une fonction en Python dans le but d'estimer la probabilité que la distance entre Mn et E(X) soit supérieure ou égale à l'écart-type de Mn.
Je calcule E(X) qui vaut 3 et je sais que Mn aura aussi la même espérance.
Je calcule la variance de X qui vaut 2 d'où son écart-type qui vaut racine carrée de 2. Et en supposant les variables X indépendantes, je trouve que l'écart-type de Mn est l'écart-type de X divisé par la racine carrée de n.
Voici le programme avec Edupython :
from lycee import *
def simulMn(n):
S=[randint(1,5) for i in range(n)]
Mn=sum(S)/n
return Mn
def echantMn(n) :
echant=[simulMn(n) for i in range(500)]
c=0
d=sqrt(2/n)
for e in echant :
if abs(e-3)>=d :
c=c+1
return c/500
Mais il semble y avoir un problème car si j'essaie avec echantMn(1000) puis echantMn(10000) je trouve des résultats qui ne se rapprochent pas de 0 contrairement à ce que prévoit la loi des grands nombres.
Merci de m'aider à trouver l'erreur du script.
Cordialement,
C.