Estimer une moyenne avec quelques valeurs
Un échantillon est une petite partie d’une population que l’on mesure pour estimer ce que l’on ne peut pas mesurer en entier. Vous saurez estimer une moyenne à partir d’un échantillon et dire de combien l’estimation peut se tromper.
Dans le labo, les 365 jours de l’année sont connus. On peut donc vérifier chaque estimation contre la vraie moyenne.
À la fin de cette leçon
Remarque
Je peux estimer une moyenne avec un échantillon et donner un intervalle de confiance.
Mots clés
| Mot | Ce que ça veut dire |
|---|---|
| Population | l’ensemble de tous les cas étudiés |
| Échantillon | une partie de la population qu’on mesure vraiment |
| Biais | une erreur qui tire toujours l’estimation du même côté |
| Erreur standard | la précision d’une moyenne d’échantillon |
| Intervalle de confiance | des bornes qui encadrent la vraie valeur, avec une méthode fiable |
Les cellules que les étudiants remplissent restent vides dans cet aperçu.
Un échantillon estime la population
La population est tout ce qu’on veut connaître : tous les jours, tous les clients. On n’en mesure qu’une partie, l’échantillon.
La moyenne de l’échantillon est une estimation de la moyenne de la population. Elle ne tombe presque jamais pile. Tout dépend de la façon dont l’échantillon est choisi.
Comparer la vraie moyenne et deux estimations
docker exec jupyter python3 -c "import csv, statistics; v = [int(r['hires']) for r in csv.DictReader(open('hires.csv'))]; print(round(statistics.mean(v), 1), round(statistics.mean(v[:30]), 1), round(statistics.mean(v[::12]), 1))"Affichée ici, non exécutée. Créez un compte gratuit pour appuyer sur Exécuter et la saisir dans le terminal de votre propre labo.
Un échantillon mal choisi donne un biais
La commande précédente affiche trois moyennes. Elle donne 270,3 pour les 365 jours, 190,7 pour les 30 premiers jours et 266,9 pour un jour sur douze.
Les 30 premiers jours sont ceux de janvier : il fait froid, on loue moins. Cette estimation est biaisée. Un jour sur douze couvre toute l’année, et l’estimation tombe tout près.
L’erreur standard dit la précision de la moyenne
Une moyenne d’échantillon change d’un échantillon à l’autre. L’erreur standard mesure de combien. On la calcule ainsi : l’écart type de l’échantillon divisé par la racine du nombre de valeurs.
Pour cet écart type, on divise par n − 1 au lieu de n. Les écarts mesurés autour de la moyenne de l’échantillon sont un peu trop petits, et ce n − 1 les corrige.
Exemple travaillé : dix jours de locations
| Jour | Locations | Écart à 270 | Écart au carré |
|---|---|---|---|
| 1 | 250 | -20 | 400 |
| 2 | 310 | 40 | 1600 |
| 3 | 280 | 10 | 100 |
| 4 | 190 | -80 | 6400 |
| 5 | 330 | 60 | 3600 |
| 6 | 270 | 0 | 0 |
| 7 | 300 | 30 | 900 |
| 8 | 240 | -30 | 900 |
| 9 | 260 | -10 | 100 |
| 10 | 270 | 0 | 0 |
| Total | 2700 | 0 | 14000 |
Les cellules que les étudiants remplissent restent vides dans cet aperçu.
Un intervalle à 95 % encadre la moyenne
La moyenne vaut 2700 divisé par 10, soit 270. La variance de l’échantillon vaut 14000 divisé par 9, soit 1555,6, et l’écart type 39,4.
L’erreur standard est 39,4 divisé par √10, soit 12,5. L’intervalle de confiance à 95 % est la moyenne plus ou moins deux erreurs standard : 270 ± 25, soit 245 à 295.
Le même calcul en Python
# Dix jours de locations, notés dans une autre ville.
locations = [250, 310, 280, 190, 330, 270, 300, 240, 260, 270]
n = len(locations)
moyenne = sum(locations) / n
total = 0
for valeur in locations:
total = total + (valeur - moyenne) ** 2
ecart_type = (total / (n - 1)) ** 0.5
erreur = ecart_type / n ** 0.5
print("moyenne :", moyenne)
print("erreur standard :", round(erreur, 1))
print("intervalle :", round(moyenne - 2 * erreur, 1), "à", round(moyenne + 2 * erreur, 1))
# Doublez la liste : locations = locations + locations
# L’intervalle devient-il plus étroit ?
Un bon échantillon encadre la vraie moyenne
La commande suivante calcule l’intervalle avec les 31 jours pris un jour sur douze. Elle affiche une moyenne de 266,9, un écart type de 69,4 et une erreur standard de 12,5.
L’intervalle va de 242,0 à 291,8, et la vraie moyenne, 270,3, y est. La méthode a bien fonctionné.
L’intervalle d’un jour sur douze
docker exec jupyter python3 -c "import csv, math, statistics; v = [int(r['hires']) for r in csv.DictReader(open('hires.csv'))]; e = v[::12]; m = statistics.mean(e); se = statistics.stdev(e) / math.sqrt(len(e)); print(len(e), round(m, 1), round(statistics.stdev(e), 1), round(se, 1), round(m - 2 * se, 1), round(m + 2 * se, 1))"Affichée ici, non exécutée. Créez un compte gratuit pour appuyer sur Exécuter et la saisir dans le terminal de votre propre labo.
Un échantillon biaisé donne un intervalle faux
Refaisons le calcul avec les 30 premiers jours. La commande suivante affiche une moyenne de 190,7 et une erreur standard de 11,3.
L’intervalle va de 168,0 à 213,4 : il est étroit et il ne contient pas 270,3. Le calcul ne peut pas corriger un biais de choix.
L’intervalle des 30 premiers jours
docker exec jupyter python3 -c "import csv, math, statistics; v = [int(r['hires']) for r in csv.DictReader(open('hires.csv'))]; e = v[:30]; m = statistics.mean(e); se = statistics.stdev(e) / math.sqrt(len(e)); print(len(e), round(m, 1), round(statistics.stdev(e), 1), round(se, 1), round(m - 2 * se, 1), round(m + 2 * se, 1))"Affichée ici, non exécutée. Créez un compte gratuit pour appuyer sur Exécuter et la saisir dans le terminal de votre propre labo.
Une erreur fréquente
Attention
Beaucoup pensent que 95 % des jours se trouvent dans l’intervalle de confiance. C’est faux : il encadre la moyenne, pas les jours. Dire que la méthode capture la vraie moyenne dans 95 % des cas est correct.
Plus l’échantillon est grand, plus l’erreur est petite
| Taille n | Écart type supposé | Erreur standard | Intervalle : moyenne ± |
|---|---|---|---|
| 10 | 80 | 25,3 | 50,6 |
| 40 | 80 | 12,6 | 25,3 |
| 160 | 80 | 6,3 | 12,6 |
Les cellules que les étudiants remplissent restent vides dans cet aperçu.
Pour aller plus loin
Dans un carnet du labo, prenez un jour sur sept avec hires["hires"][::7], puis un jour sur trente avec [::30]. Calculez l’intervalle de chacun.
Le pas de sept tombe toujours sur le même jour de la semaine. Que se passe-t-il pour l’estimation ? Dites pourquoi.