Bibm@th

Forum de mathématiques - Bibm@th.net

Bienvenue dans les forums du site BibM@th, des forums où on dit Bonjour (Bonsoir), Merci, S'il vous plaît...

Vous n'êtes pas identifié(e).

#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

#3 09-03-2021 19:09:54

Cédrix
Membre
Inscription : 15-08-2019
Messages : 77

Re : simulation

Merci Adam !
J'attendrai le temps que vous récupériez l'accès à votre ordinateur.
Bien cordialement,
C.

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 random import *
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

#5 13-03-2021 14:24:03

Cédrix
Membre
Inscription : 15-08-2019
Messages : 77

Re : simulation

Merci beaucoup pour ce script que j'ai toutefois mis du temps à comprendre.
Merci !
C.

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

Réponse rapide

Veuillez composer votre message et l'envoyer
Nom (obligatoire)

E-mail (obligatoire)

Message (obligatoire)

Programme anti-spam : Afin de lutter contre le spam, nous vous demandons de bien vouloir répondre à la question suivante. Après inscription sur le site, vous n'aurez plus à répondre à ces questions.

Quel est le résultat de l'opération suivante (donner le résultat en chiffres)?
quatre-vingt trois moins onze
Système anti-bot

Faites glisser le curseur de gauche à droite pour activer le bouton de confirmation.

Attention : Vous devez activer Javascript dans votre navigateur pour utiliser le système anti-bot.

Pied de page des forums