I. Simuler une variable aléatoire
Une simulation remplace l'expérience réelle par un programme qui produit des résultats obéissant à la même loi. Elle permet d'observer, sur des milliers de répétitions, ce qu'une poignée de lancers ne montrerait pas.
from random import randint
def lancer():
return randint(1, 6)
La variable aléatoire simulée prend les valeurs de à , chacune avec la probabilité . Son espérance vaut .
Pour une variable prenant les valeurs , et avec les probabilités , et :
from random import random
def gain():
r = random()
if r < 4 / 6:
return -2
elif r < 5 / 6:
return 1
else:
return 5
Le principe consiste à découper l'intervalle en morceaux dont les longueurs sont les probabilités voulues.
II. Moyenne d'un échantillon
Un échantillon de taille est la liste des résultats de répétitions indépendantes de la même expérience. Sa moyenne, notée , est la moyenne de ces valeurs.
Cette moyenne est elle-même aléatoire : deux échantillons donnent deux moyennes différentes.
def echantillon(n):
return [lancer() for i in range(n)]
def moyenne(L):
return sum(L) / len(L)
L'appel moyenne(echantillon(10)) donne une valeur qui change à chaque exécution, parfois assez éloignée de .
Lorsque la taille augmente, deux phénomènes apparaissent.
La moyenne observée se rapproche de l'espérance de la variable simulée.
Les moyennes de plusieurs échantillons de même taille se resserrent les unes contre les autres : leur dispersion diminue.
Ces observations prolongent la loi des grands nombres vue en Seconde sur les fréquences. Une fréquence est d'ailleurs un cas particulier de moyenne, celle d'une variable qui vaut en cas de succès et sinon.
III. Mesurer l'écart à l'espérance
L'objectif du programme est de percevoir avec quelle précision la moyenne d'un échantillon estime l'espérance. La quantité qui gouverne cette précision fait intervenir l'écart type de la variable et la taille de l'échantillon.
On considère une variable aléatoire d'espérance et d'écart type , et un échantillon de taille dont la moyenne vaut . La quantité observée est
Sur des simulations répétées, l'écart reste inférieur ou égal à cette valeur dans la grande majorité des cas.
from math import sqrt
def proportion_proche(N, n, mu, sigma):
compteur = 0
seuil = 2 * sigma / sqrt(n)
for i in range(N):
m = moyenne(echantillon(n))
if abs(m - mu) <= seuil:
compteur = compteur + 1
return compteur / N
Pour le dé équilibré, avec et , l'appel proportion_proche(1000, 50, 3.5, 1.71) renvoie une proportion voisine de .
Le seuil décroît comme , et non comme . Diviser l'incertitude par deux demande donc de multiplier la taille de l'échantillon par quatre, ce qui explique le coût des sondages précis.
Une simulation ne démontre rien, elle donne à voir. Les résultats obtenus varient d'une exécution à l'autre, et la conclusion attendue reste une observation, formulée comme telle.
Passer à la pratique
9 exercices corrigés sur ce chapitre.
