Forum de mathématiques - Bibm@th.net
Vous n'êtes pas identifié(e).
- Contributions : Récentes | Sans réponse
Pages : 1
#1 09-03-2021 10:09:29
- Cédrix
- Membre
- Inscription : 15-08-2019
- Messages : 77
simulation
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.
Hors ligne
#2 09-03-2021 11:05:04
- Chlore au quinoa
- Membre
- Inscription : 06-01-2021
- Messages : 305
Re : simulation
Salut !
Déjà super intéressant comme exo... Ensuite j'ai parcouru ton code, et je n'ai pas trouvé à première vue ce qui clochait... et malheureusement je n'ai pas accès à mon ordi avant jeudi soir :/ Donc si personne ne te répond d'ici là, je ne pourrai rechercher de manière effective qu'à partir d'après demain.
Pour ne pas être totalement inutile, dans ce genre de questionnement ça peut être utile de voir de combien on s'écarte de l'espérance. Pour ça tu pourrais créer une liste composée de 500 fois 3, et ensuite mesurer la "distance" entre cette liste et celle que tu obtiens avec simulMn itéré 500 fois. Pour cela, la "norme 2" pourrait t'être utile... ;)
Adam
Dernière modification par Chlore au quinoa (09-03-2021 11:05:13)
Hors ligne
#4 11-03-2021 19:41:17
- Chlore au quinoa
- Membre
- Inscription : 06-01-2021
- Messages : 305
Re : simulation
Re,
Comme promis un petit programme utilisant les distances entre la liste de 3 et la liste de la simulation :
from numpy import sqrt
def difference(A,B):
"""Soustrait deux listes terme à terme """
C=[]
for i in range(0,len(A)):
C.append(0)
for i in range (0,len(A)):
C[i]=A[i]-B[i]
return C
def norme2(L):
"""Retourne la norme 2 d'une liste"""
c=0
for i in L:
c=c+i**2
return sqrt(c)
def simulation(n):
"""Effectue la moyenne de n tirages"""
L=[randint(1,5) for i in range (0,n)]
moyenne=sum(L)/n
return moyenne
def simulation_multiple(n):
"""Mesure la distance entre l'écart-type et la simulation"""
ListeSimulation=[simulation(n) for i in range (0,500)]
ListeMoyenne=[3 for i in range (0,500)]
return norme2(difference(ListeSimulation,ListeMoyenne))
Comme prévu plus n augmente plus la distance est petite.
Valeur de n Distance trouvée
100 3
500 1.4
1000 1
5000 0.4
10000 0.3
Logiquement plus n grandit plus la liste se "rapproche" de la moyenne. Le défaut c'est qu'on a du mal à représenter la signification de 'distant de 0.5' par exemple, dur de quantifier quoi...
Pour ta méthode avec l'écart-type je me penche dessus !
Adam
Dernière modification par Chlore au quinoa (13-03-2021 20:30:32)
Hors ligne
#6 13-03-2021 14:42:46
- Chlore au quinoa
- Membre
- Inscription : 06-01-2021
- Messages : 305
Re : simulation
Tu as trouvé la faille pour les écarts-types ? Parce que je n'ai pas trouvé ce qui clochait, tout me semble tout à fait correct dans ton programme...
Ah et si tu as d'autres simulations du genre sous forme d'exercice comme ça ou d'énigmes, hésite pas à les partager sur ce forum ou dans le Café mathématiques, je suis sûr que cela intéressera beaucoup de monde !
Adam :)
Hors ligne
#7 13-03-2021 20:23:24
- Cédrix
- Membre
- Inscription : 15-08-2019
- Messages : 77
Re : simulation
Je pense que ce qui cloche dans mon script c'est que d est défini en fonction de n, ce qui fait qu'on obtient comme majorant de la probabilité 1 ce qui n'a aucun intérêt (en utilisant l'inégalité de Bienaymé-Tchebychev) mais ça marche en prenant d=0,1 par exemple.
Je viens de taper votre script et il ne fonctionne pas en testant avec simulation_multiple(100) par exemple... je pense que c'est parce que
ListeEcartType n'est pas définie dans la dernière partie, n'est-ce pas ?
Merci !
Hors ligne
#8 13-03-2021 20:30:11
- Chlore au quinoa
- Membre
- Inscription : 06-01-2021
- Messages : 305
Re : simulation
AH ! Flûte de zut oui j'ai corrigé ! ListeMoyenne* pardon
Hors ligne
Pages : 1







