ÉchantillonnageCours

I

Les expériences à deux issues

Les expériences à deux issues permettent de modéliser des situations où il n'existe qu'une possibilité d'échec ou de succès.

Expérience aléatoire à deux issues

Une expérience aléatoire à deux issues est une expérience :

  • où deux résultats ou issues sont possibles ;
  • où le résultat n'est pas prévisible ;
  • où l'on peut reproduire plusieurs fois l'expérience.

 

Les deux issues possibles sont appelées succès et échec.

Le lancer d'une pièce a deux résultats possibles : pile ou face. C'est une expérience aléatoire à deux issues. Si l'on cherche à tomber sur pile, on dit que pile est le succès et que face est l'échec.

Échantillon aléatoire

Certaines expériences aléatoires à deux issues peuvent être répétées indépendamment. Le résultat de la répétition n d'une expérience aléatoire est appelé un échantillon aléatoire de taille n.

On lance un dé à 6 faces et on considère l'événement « Avoir un 6 » comme le succès de l'expérience aléatoire. Si on lance le dé 10 fois et qu'on note chaque fois le succès ou l'échec, on dit que cette répétition est un échantillon aléatoire de taille 10.

II

La loi des grands nombres

Le théorème de la loi des grands nombres est très souvent utilisé en statistiques et dans d'autres domaines scientifiques pour estimer la fréquence d'apparition d'un phénomène. On peut illustrer le théorème de la loi des grands nombres avec un programme Python.

A

Le théorème de la loi des grands nombres

On donne une version simplifiée du théorème de la loi des grands nombres qui estime une proportion en répétant une expérience de nombreuses fois.

Loi des grands nombres

Soit p la proportion des individus ayant un caractère donné au sein d'une population. Lorsque la taille n d'un échantillon est grande, sauf exception, la fréquence f du caractère observée dans l'échantillon est proche de la probabilité théorique p.

On reprend l'exemple précédent du lancer de dé. On considère « Avoir un 6 » comme le succès. La loi des grands nombres assure que plus on lance le dé, plus le nombre de fois où un 6 apparaît est proche de la fréquence théorique, dans ce cas \dfrac{1}{6} .

Plus on répète une expérience un grand nombre de fois, moins l'écart avec la probabilité théorique a de chances d'être important.

B

Une illustration du théorème de la loi des grands nombres avec un programme Python

La loi des grands nombres peut être illustrée par un programme Python par la répétition de n lancers de dé ou la répétition de N échantillons de taille n .

1

La répétition de n lancers de dé

On peut demander à Python de répéter n fois une expérience aléatoire d'une manière que l'on va supposer indépendante.

On veut simuler un lancer de dé. L'expérience aléatoire consiste à regarder si le dé tombe sur un 6 ou non. Le succès est défini ici comme l'événement « Obtenir un 6 ».

Le théorème de la loi des grands nombres garantit que plus le nombre d'expériences aléatoires est grand, plus il y a de chances pour que la fréquence observée soit proche de la fréquence théorique. En supposant le dé équilibré, la fréquence théorique est \dfrac{1}{6}.

On peut utiliser le programme suivant pour illustrer le théorème des grands nombres.

\verb+ import random # On a besoin d'intégrer une fonction qui simule une expérience aléatoire +
\verb+ n = 100 # Nombre de fois où l'on répète une expérience+
\verb+ nombreSucces = 0 # Cette variable permet de garder en mémoire le nombre de succès+

\verb+ # On rentre dans une boucle pour simuler les n expériences+
\verb+ for i in range(n) :+
\verb+     lancerDede = random.randint(1{,}6) # On simule un lancer de dé avec la commande randint+

\verb+     if lancerDede == 6 : # Si on est tombé sur un 6+
\verb|         nombreSucces += 1 # On incrémente la variable nombreSucces| 
\verb+     # Sinon, on recommence l'expérience+

\verb+ # À la fin de la boucle, la variable nombreSucces contient le nombre de fois où l'on est tombé sur+
\verb+ # un 6.+

\verb+ # On peut donc calculer la fréquence observée, qui est égal au nombre de succès obtenus divisé par+
\verb+ # le nombre d'expérience réalisée, qui vaut n ici.+

\verb+ frequenceObservee = nombreSucces/float(n) # le float(n) permet de faire une division décimale+

\verb+ # On peut maintenant afficher la fréquence observée.+

\verb+ print(frequenceObservee)+

\verb+ # On s'attend à ce qu'elle soit proche d'1/6 +

On peut donner un tableau qui récapitule la fréquence observée de 6 en fonction du nombre d'expériences réalisées :

Nombre de lancers de dé Fréquence de 6 observée
5 0,6
10 0,3
20 0,15
50 0,16
100 0,21
200 0,17
500 0,186
1 000 0,176
5 000 0,1624
100 000 0,16817

La fréquence observée est aléatoire, et va donc varier si on exécute à nouveau le programme Python. Mais on peut observer une tendance globale : la fréquence des 6 observée s'approche effectivement de \dfrac{1}{6} \approx 0{,}166. On peut remarquer en outre que l'on approche lentement la valeur \dfrac{1}{6}.

2

La répétition de N échantillons de taille n

Pour quantifier à quel point la fréquence observée est proche de la probabilité théorique, on peut compter le nombre de fois où pour N échantillon de taille n, la fréquence observée et la probabilité théorique sont proches.

Pour savoir si la fréquence observée f et la probabilité théorique p sont proches, on vérifie que :

|f − p| < \dfrac{1}{\sqrt{n}}

On utilise la valeur absolue pour signifier que la distance entre f et p doit être plus petite que \dfrac{1}{\sqrt{n}}.

On peut écrire un programme qui calcule le nombre de fois où la fréquence observée des échantillons est proche de la probabilité théorique.

On reprend l'expérience aléatoire du lancer du dé qui consiste à regarder si le dé tombe sur un 6 ou non. Le succès est défini ici comme l'événement « Obtenir un 6 ». La probabilité théorique p vaut \dfrac{1}{6}. On propose d'utiliser les fonctions en Python qui permettent d'avoir un code plus clair.

\verb+ import random # On a besoin d'intégrer une fonction qui simule une expérience aléatoire+
\verb+ import math # On a besoin de la fonction math.sqrt pour calculer la racine carrée+

\verb+ def frequenceDeSuccesDUnÉchantillon(nombredeLancers) :+
\verb+     nombreSucces = 0+

\verb+     for i in range(nombredeLancers) :+
\verb+         lancerDedé = random.randint(1, 6) # On simule un lancer de dé avec la +

\verb+ # commande randint+

\verb+         if lancerDedé == 6 :+
\verb|             nombreSuccès += 1 |

\verb+     return nombreSucces/float(nombredeLancers)+

\verb+ n = 100 # Nombre de fois où l'on répète une expérience+
\verb+ N = 50 # Nombre d'échantillons de taille n que l'on teste.+

\verb+ nombreÉchantillonsBonneApproximation = 0+

\verb+ # On rentre dans une boucle pour simuler les n expériences+
\verb+ for j in range(N) :+

\verb+     frequenceObservée=fréquenceDeSuccesDUnÉchantillon(n)+
   
\verb+     if abs(frequenceObservee − 1/float(6)) < 1/math.sqrt(n) :+
\verb+         # Si la fréquence observée n'est pas loin de la fréquence théorique+
\verb|         nombreÉchantillonsBonneApproximation += 1 # On le compte comme un |

\verb| # bon échantillon. | 

\verb+ #On affiche la fréquence de bon échantillon que l'on a obtenu :+

\verb+ frequenceÉchantillonsBonneApproximation = nombreÉchantillonsBonneApproximation/float(N)+

\verb+ print(frequenceÉchantillonsBonneApproximation) +

La valeur de la variable \verb+ frequenceÉchantillonsBonneApproximation + vaut 1{,}0 , c'est-à-dire que la fréquence observée est effectivement proche de l'estimation théorique.