Résumer des données en deux chiffres
Décrire une série de données, c’est la résumer par un centre, comme la moyenne ou la médiane, et par une dispersion, comme l’écart type. Vous saurez calculer ces mesures à la main et dire ce que chacune cache.
Un loueur de vélos garde le nombre de locations de chaque jour de l’année. Il ne lira pas 365 lignes. Il lui faut un résumé honnête.
À la fin de cette leçon
Remarque
Je peux résumer une série de nombres par un centre et une dispersion.
Mots clés
| Mot | Ce que ça veut dire |
|---|---|
| Moyenne | la somme des valeurs divisée par leur nombre |
| Médiane | la valeur du milieu quand on range la série |
| Mode | la valeur qui revient le plus souvent |
| Étendue | la plus grande valeur moins la plus petite |
| Variance | la moyenne des écarts à la moyenne, élevés au carré |
| Écart type | la racine carrée de la variance |
Les cellules que les étudiants remplissent restent vides dans cet aperçu.
Trois façons de trouver le centre
La moyenne s’obtient en additionnant les valeurs, puis en divisant par leur nombre. La médiane est la valeur du milieu une fois la série rangée. Le mode est la valeur la plus fréquente.
Une valeur extrême tire la moyenne vers elle. Elle ne bouge presque pas la médiane.
La commande qui suit calcule ces mesures pour les 365 jours de locations du labo. Elle affiche une moyenne de 270,3, une médiane de 273 et un mode de 277.
Exemple travaillé : cinq salaires
| Mesure | Comment la trouver | Résultat en euros |
|---|---|---|
| Série | 1800, 1900, 2000, 2100, 9000 | |
| Moyenne | Additionner (16800) puis diviser par 5 | 3360 |
| Médiane | Prendre la valeur du milieu | 2000 |
| Mode | Aucune valeur ne se répète | aucun |
Les cellules que les étudiants remplissent restent vides dans cet aperçu.
Moyenne et médiane des locations de l’année
docker exec jupyter python3 -c "import csv, statistics; v = [int(r['hires']) for r in csv.DictReader(open('hires.csv'))]; print(len(v), round(statistics.mean(v), 1), statistics.median(v), statistics.mode(v))"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.
La dispersion dit si la moyenne est fiable
Deux séries peuvent avoir la même moyenne et des valeurs très différentes. La dispersion mesure à quel point les valeurs s’éloignent du centre.
La plus simple est l’étendue. Elle ne regarde que deux valeurs. La variance regarde toutes les valeurs : on prend l’écart de chacune à la moyenne, on le met au carré, puis on fait la moyenne.
Exemple travaillé : les retards d’un bus
| Retard en minutes | Écart à la moyenne (5) | Écart au carré |
|---|---|---|
| 3 | -2 | 4 |
| 7 | 2 | 4 |
| 5 | 0 | 0 |
| 9 | 4 | 16 |
| 1 | -4 | 16 |
| Total 25 | Total 0 | Total 40 |
Les cellules que les étudiants remplissent restent vides dans cet aperçu.
L’écart type revient à l’unité des données
Dans le tableau, la variance vaut 40 divisé par 5, soit 8. Mais elle est en minutes au carré, ce qui ne parle à personne.
L’écart type est sa racine carrée : √8, soit environ 2,83 minutes. On peut dire que le bus s’écarte de sa moyenne d’environ trois minutes.
Le même calcul en Python
# Retards d’un bus, en minutes, sur cinq jours.
retards = [3, 7, 5, 9, 1]
moyenne = sum(retards) / len(retards)
total = 0
for retard in retards:
ecart = retard - moyenne
total = total + ecart ** 2
variance = total / len(retards)
ecart_type = variance ** 0.5
print("moyenne :", moyenne)
print("variance :", variance)
print("écart type :", round(ecart_type, 2))
# Remplacez 9 par 19, puis relancez.
# L’écart type monte-t-il ou descend-il ?
Les locations de l’année ont une grande dispersion
La commande suivante donne l’étendue, la variance et l’écart type des 365 jours. Le jour le plus calme compte 41 locations et le plus chargé 487.
L’étendue est donc 446. L’écart type vaut environ 79,6 locations : un jour ordinaire s’écarte de la moyenne d’environ quatre-vingts locations.
Étendue, variance et écart type des locations
docker exec jupyter python3 -c "import csv, statistics; v = [int(r['hires']) for r in csv.DictReader(open('hires.csv'))]; print(min(v), max(v), max(v) - min(v), round(statistics.pvariance(v), 1), round(statistics.pstdev(v), 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.
Deux tiers des jours restent près du centre
Pour beaucoup de séries, la plupart des valeurs tombent à moins de deux écarts types de la moyenne. La commande suivante le compte sur les locations.
Elle affiche 241 jours à moins d’un écart type, 355 à moins de deux et les 365 à moins de trois. Cela fait 66 %, 97 % puis 100 % des jours.
Combien de jours restent près de la moyenne ?
docker exec jupyter python3 -c "import csv, statistics; v = [int(r['hires']) for r in csv.DictReader(open('hires.csv'))]; m = statistics.mean(v); s = statistics.pstdev(v); print(sum(1 for x in v if abs(x - m) <= s), sum(1 for x in v if abs(x - m) <= 2 * s), sum(1 for x in v if abs(x - m) <= 3 * s))"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.
Deux séries, même moyenne, écart type différent
Deux lignes de bus ont la même moyenne de retard, 5 minutes. Pourtant l’une est régulière et l’autre capricieuse.
Seul l’écart type les distingue. Plus il est petit, plus les valeurs sont serrées autour de la moyenne.
Même moyenne, dispersions différentes
| Ligne | Retards en minutes | Moyenne | Écart type |
|---|---|---|---|
| A | 3, 7, 5, 9, 1 | 5 | 2,83 |
| B | 5, 5, 4, 6, 5 | 5 | 0,63 |
Les cellules que les étudiants remplissent restent vides dans cet aperçu.
Une erreur fréquente
Attention
Beaucoup pensent que la moyenne suffit à décrire une série. Deux séries très différentes peuvent avoir la même moyenne. Donnez toujours un centre avec une dispersion, et préférez la médiane quand une valeur extrême tire la moyenne.
Pour aller plus loin
Dans un carnet du labo, chargez hires.csv avec pandas et appelez describe() sur la colonne des locations. Retrouvez la moyenne, le minimum et le maximum de cette leçon.
L’écart type de pandas diffère un peu du nôtre, car il divise par n moins 1. La leçon sur l’échantillonnage explique pourquoi.