Échantillonnage Méthode

Simuler des échantillons en Python

Durée estimée
10 minutes
Votre progression

Créez un compte gratuit pour suivre votre avancement et reprendre où vous avez laissé.

Créer un compte

Échantillon simulé

Simuler un échantillon de taille $n$ d'une expérience à deux issues (succès / échec), c'est répéter $n$ fois la même expérience aléatoire à l'aide de l'ordinateur, puis observer le nombre de succès obtenus. La fréquence de succès est alors $f = \dfrac{\text{nombre de succès}}{n}$.

Méthode

Pour simuler un échantillon puis répéter la simulation sur $N$ échantillons :

  1. Étape 1 : importer la fonction de tirage aléatoire avec from random import randint.
  2. Étape 2 : pour un échantillon de taille $n$, répéter $n$ tirages avec une boucle for ; à chaque tirage, comparer le résultat à la condition de succès et incrémenter un compteur si le succès est réalisé.
  3. Étape 3 : calculer la fréquence de succès $f = \dfrac{\text{succès}}{n}$ (penser à diviser par n, pas par un entier au hasard).
  4. Étape 4 : pour étudier la fluctuation, recommencer l'étape 2 sur $N$ échantillons à l'aide d'une seconde boucle, et compter combien de fréquences vérifient $|f - p| \leqslant \dfrac{1}{\sqrt{n}}$, où $p$ est la probabilité de succès.
  5. Étape 5 : la proportion de ces cas, sur les $N$ échantillons, estime la part des fréquences proches de $p$.

Un échantillon : fréquence de pile

On lance $n = 1000$ fois une pièce équilibrée. Le succès est l'issue « pile », ici codée par $1$. On code « pile » et « face » par randint(0, 1), qui renvoie $0$ ou $1$ au hasard, et on compte les piles :

from random import randint

n = 1000
succes = 0
for i in range(n) :
    tirage = randint(0, 1)   # 0 = face, 1 = pile
    if tirage == 1 :
        succes = succes + 1

frequence = succes / n
print("Nombre de piles :", succes)
print("Fréquence :", frequence)

Étape 1 : from random import randint permet d'utiliser randint(0, 1), qui renvoie $0$ ou $1$ avec la même probabilité.

Étape 2 : La boucle for répète $1000$ tirages ; le compteur succes augmente de $1$ à chaque pile (quand tirage == 1).

Étape 3 : On divise par n pour obtenir la fréquence. Un résultat possible :

Nombre de piles : 511
Fréquence : 0.511

La fréquence observée $0{,}511$ est proche de la probabilité $p = 0{,}5$ : c'est ce qu'illustre la loi des grands nombres pour un grand échantillon.

N échantillons : proportion des fréquences proches de p

On simule maintenant $N = 1000$ échantillons de taille $n = 100$ d'un lancer de dé, où le succès est « obtenir un six » (probabilité $p = \dfrac{1}{6}$). Pour chaque échantillon, on calcule la fréquence $f$, puis on compte combien vérifient $|f - p| \leqslant \dfrac{1}{\sqrt{n}}$. Ici $\dfrac{1}{\sqrt{100}} = \dfrac{1}{10} = 0{,}1$ :

from random import randint

N = 1000
n = 100
p = 1 / 6
seuil = 1 / n ** 0.5     # 1 / racine de n
proches = 0

for k in range(N) :
    succes = 0
    for i in range(n) :
        if randint(1, 6) == 6 :   # un six = succès
            succes = succes + 1
    f = succes / n
    if abs(f - p) <= seuil :
        proches = proches + 1

proportion = proches / N
print("Proportion des écarts <= 1/racine(n) :", proportion)

Étape 1 : La boucle extérieure (for k in range(N)) parcourt les $1000$ échantillons.

Étape 2 : La boucle intérieure (for i in range(n)) simule un échantillon de $100$ lancers ; on compte les six avec randint(1, 6) == 6.

Étape 3 : Pour chaque échantillon, abs(f - p) mesure l'écart entre la fréquence et la probabilité ; on incrémente proches quand cet écart ne dépasse pas le seuil $0{,}1$.

Étape 4 : On divise par N pour obtenir la proportion. Un résultat possible :

Proportion des écarts <= 1/racine(n) : 0.997

Une très grande majorité des échantillons ont une fréquence proche de $p$ : l'écart dépasse rarement $\dfrac{1}{\sqrt{n}}$.

Remarque

Comme les tirages sont aléatoires, les nombres affichés changent à chaque exécution : il est normal de ne pas retrouver exactement $0{,}511$ ou $0{,}997$. Seul l'ordre de grandeur est stable.

On obtient le nombre de succès en s'arrêtant à la variable succes, et la fréquence en divisant par n : c'est selon ce que l'énoncé demande de renvoyer.

Attention

randint(a, b) inclut les deux bornes : randint(1, 6) peut donner $6$, et randint(0, 1) donne bien $0$ ou $1$. Écrire randint(1, 5) pour un dé oublierait la face $6$.

Penser à réinitialiser le compteur succes = 0 au début de chaque échantillon (à l'intérieur de la boucle extérieure). S'il est remis à zéro une seule fois avant les deux boucles, les succès s'accumulent et les fréquences calculées sont fausses.

Pour s'entraîner