Pour la moyenne, tu additionnes les valeurs et tu divises par leur nombre. Pour l'écart-type, tu calcules l'écart de chaque valeur à la moyenne, tu élèves ces écarts au carré, tu fais la moyenne des carrés (c'est la variance), puis tu prends la racine carrée. Avec les notes $8$, $10$ et $12$ : moyenne $10$, écarts $-2$, $0$ et $2$, carrés $4$, $0$ et $4$, variance $\frac{8}{3} \approx 2{,}67$, écart-type $\sqrt{8/3} \approx 1{,}63$ point.
Objectifs du cours :
- Calculer à la main la moyenne et l'écart-type d'une série brute ou d'un tableau d'effectifs.
- Choisir entre une division par $n$ et par $n-1$, et retrouver la bonne fonction dans Excel, NumPy ou pandas.
- Interpréter un écart-type : comparer deux séries, prévoir l'effet d'une valeur extrême ou d'un changement d'unité.
Prérequis : savoir lire le symbole $\sum$, qui note une somme de termes numérotés, et calculer une racine carrée.
I. La moyenne : additionner, puis diviser
Une série statistique est une liste de valeurs relevées sur des individus : notes, durées, montants. On note $n$ l'effectif total (le nombre de valeurs) et $x_1, x_2, \dots, x_n$ les valeurs.
Formule : pour une série brute, $\bar{x} = \dfrac{1}{n}\sum_{i=1}^{n} x_i$.
Si la valeur $x_k$ apparaît $n_k$ fois (pour $k$ de $1$ à $p$), $\bar{x} = \dfrac{1}{n}\sum_{k=1}^{p} n_k\,x_k$ avec $n = n_1 + \dots + n_p$.
La seconde formule n'est pas une nouvelle règle : multiplier $x_k$ par $n_k$, c'est l'additionner $n_k$ fois. On parle de moyenne pondérée, chaque valeur pesant selon son effectif.
La moyenne est le point d'équilibre de la série : les écarts au-dessus et au-dessous se compensent exactement, car $\sum_{i=1}^{n}(x_i - \bar{x}) = \sum_{i=1}^{n} x_i - n\bar{x} = 0$. Garde ce résultat en tête, il explique la partie II.
Un site marchand relève le nombre d'articles de 20 commandes (données fictives). La dernière colonne servira dans la partie II.
| Articles $x_k$ | Commandes $n_k$ | $n_k\,x_k$ | $n_k\,x_k^2$ |
|---|---|---|---|
| 1 | 4 | 4 | 4 |
| 2 | 7 | 14 | 28 |
| 3 | 5 | 15 | 45 |
| 4 | 3 | 12 | 48 |
| 6 | 1 | 6 | 36 |
| Total | 20 | 51 | 161 |
Exemple : $\bar{x} = \dfrac{51}{20} = 2{,}55$ articles par commande. Aucune commande ne compte $2{,}55$ articles, et c'est normal : la moyenne résume la série sans en faire partie.
L'erreur classique consiste à oublier les effectifs et à calculer $\dfrac{1+2+3+4+6}{5} = 3{,}2$, comme si chaque valeur n'apparaissait qu'une fois. C'est la même faute que de moyenner deux moyennes de groupes de tailles différentes : $10$ étudiants à $12$ de moyenne et $30$ étudiants à $8$ n'ont pas $10$ de moyenne ensemble, mais $\dfrac{10 \times 12 + 30 \times 8}{40} = 9$.
II. L'écart-type : la méthode en cinq étapes
La moyenne ne dit rien de l'étalement. Les notes $9$, $10$, $11$ d'un côté, $0$, $10$, $20$ de l'autre ont la même moyenne, mais la seconde série est bien plus dispersée. Il faut un indicateur de dispersion, un nombre qui mesure à quel point les valeurs s'éloignent du centre.
Faire la moyenne des écarts $x_i - \bar{x}$ ne marche pas : elle vaut toujours $0$, tu viens de le voir. On élève donc chaque écart au carré pour le rendre positif, on fait la moyenne de ces carrés, puis on prend la racine pour revenir à l'unité des données.
Formule : la variance vaut $V = \dfrac{1}{n}\sum_{i=1}^{n}(x_i - \bar{x})^2$ et l'écart-type $\sigma = \sqrt{V}$.
Avec un tableau d'effectifs : $V = \dfrac{1}{n}\sum_{k=1}^{p} n_k\,(x_k - \bar{x})^2$.
Forme développée (formule de König-Huygens) : $V = \overline{x^2} - \bar{x}^2$, où $\overline{x^2} = \dfrac{1}{n}\sum_{i=1}^{n} x_i^2$ est la moyenne des carrés.
La variance s'exprime dans le carré de l'unité (des $\text{ms}^2$, des euros au carré), ce qui ne parle à personne. L'écart-type revient à l'unité des données : c'est lui qu'on commente.
Exemple : cinq temps de réponse d'un serveur, en millisecondes (données fictives) : $110$, $95$, $130$, $105$, $110$.
Étape 1, la moyenne : $\bar{x} = \dfrac{550}{5} = 110$ ms.
Étape 2, les écarts : $0$, $-15$, $20$, $-5$, $0$ (leur somme fait bien $0$).
Étape 3, leurs carrés : $0$, $225$, $400$, $25$, $0$.
Étape 4, la variance : $V = \dfrac{650}{5} = 130\ \text{ms}^2$.
Étape 5, l'écart-type : $\sigma = \sqrt{130} \approx 11{,}4$ ms.
Sur un tableau d'effectifs, la forme développée va plus vite. Elle vient du développement $(x_i - \bar{x})^2 = x_i^2 - 2\bar{x}\,x_i + \bar{x}^2$ : en faisant la moyenne de chaque terme, on obtient $\overline{x^2} - 2\bar{x}^2 + \bar{x}^2 = \overline{x^2} - \bar{x}^2$.
Pour les commandes, $\overline{x^2} = \dfrac{161}{20} = 8{,}05$, donc $V = 8{,}05 - 2{,}55^2 = 1{,}5475$ et $\sigma = \sqrt{1{,}5475} \approx 1{,}24$ article.
Deux erreurs reviennent avec cette forme. La première : confondre $\overline{x^2}$, la moyenne des carrés, et $\bar{x}^2$, le carré de la moyenne. La seconde : arrondir trop tôt. Avec $\bar{x}$ arrondie à $2{,}6$, on trouverait $8{,}05 - 6{,}76 = 1{,}29$ au lieu de $1{,}5475$, une variance fausse de plus de $15\,\%$. Et une variance négative signale toujours une erreur de calcul, puisqu'une moyenne de carrés est positive.
III. Diviser par $n$ ou par $n-1$
Jusqu'ici, on a divisé par $n$ pour décrire la série telle qu'elle est. Mais tes données sont souvent un échantillon, c'est-à-dire une partie de la population qui t'intéresse, et tu veux estimer la dispersion de toute la population. Dans ce cas, on divise par $n-1$.
Règle : pour décrire la série, $V = \dfrac{1}{n}\sum_{i=1}^{n}(x_i-\bar{x})^2$. Pour estimer la variance d'une population à partir d'un échantillon, on prend la variance corrigée $s^2 = \dfrac{1}{n-1}\sum_{i=1}^{n}(x_i-\bar{x})^2 = \dfrac{n}{n-1}\,V$, et $s = \sqrt{s^2}$.
Pourquoi $n-1$ ? Les écarts sont mesurés à $\bar{x}$, calculée sur les mêmes données, donc plus proche d'elles que la vraie moyenne de la population. La somme des carrés sort en moyenne un peu trop petite, et diviser par $n-1$ compense ce défaut. La preuve relève du cours d'estimation.
Sur les cinq temps de réponse, $s^2 = \dfrac{650}{4} = 162{,}5$ et $s \approx 12{,}7$ ms, contre $\sigma \approx 11{,}4$ ms. Avec $5$ valeurs, la différence se voit ; avec $1\,000$ valeurs, le facteur $\sqrt{1000/999}$ ne modifie l'écart-type que d'environ $0{,}05\,\%$.
Les notations varient selon les cours : la version corrigée se note $s$, $s^*$ ou $\hat{\sigma}$, et certains réservent $s$ à la division par $n$. Vérifie la définition de ton enseignant avant d'appliquer une formule.
Les logiciels proposent les deux versions, mais pas avec le même réglage par défaut (x est un tableau NumPy, s une série pandas) :
| Outil | Division par $n$ | Division par $n-1$ |
|---|---|---|
| Excel (version française) | ECARTYPE.PEARSON | ECARTYPE.STANDARD |
| NumPy | np.std(x), par défaut | np.std(x, ddof=1) |
| pandas | s.std(ddof=0) | s.std(), par défaut |
Le paramètre ddof fixe le diviseur $n - \text{ddof}$, d'après les documentations de NumPy et de pandas. D'où le piège : sur les mêmes données, np.std et la méthode std de pandas ne rendent pas le même nombre. Sur les cinq temps de réponse, NumPy affiche environ $11{,}4$ et pandas $12{,}7$. Dans Excel, l'aide de Microsoft indique que ECARTYPE.STANDARD traite les données comme un échantillon et divise par $n-1$.
IV. Lire un écart-type
Un écart-type se lit à côté de sa moyenne, dans son unité. Deux groupes de travaux dirigés ont $12$ de moyenne, avec un écart-type de $1$ point pour l'un et de $4$ points pour l'autre : dans le premier, les notes sont resserrées autour de $12$ ; dans le second, elles sont bien plus étalées. La moyenne seule ne le montrait pas.
L'écart-type réagit fort aux valeurs extrêmes, parce que les écarts sont élevés au carré. Ajoute aux cinq temps de réponse une requête lente à $350$ ms : la moyenne passe de $110$ à $150$ ms, et l'écart-type (division par $n$) de $11{,}4$ à environ $90$ ms, presque huit fois plus. La médiane, elle, reste à $110$ ms. Pour une série qui contient des valeurs aberrantes (très éloignées des autres), la médiane et l'écart interquartile la décrivent mieux.
Propriété : si chaque valeur devient $y_i = a\,x_i + b$, alors $\bar{y} = a\,\bar{x} + b$ et $\sigma_y = |a|\,\sigma_x$.
Ajouter $b$ décale toutes les valeurs et la moyenne d'autant : les écarts ne bougent pas. Multiplier par $a$ multiplie chaque écart par $a$, donc la variance par $a^2$ et l'écart-type par $|a|$. Si un enseignant ajoute $2$ points à toutes les copies, la moyenne monte de $2$ et l'écart-type ne change pas. Passer des millisecondes aux secondes divise moyenne et écart-type par $1\,000$.
La même propriété justifie un geste courant en science des données : centrer-réduire, c'est remplacer chaque valeur par $z_i = \dfrac{x_i - \bar{x}}{\sigma}$. La nouvelle série a pour moyenne $0$ et pour écart-type $1$, et $z_i$ dit à combien d'écarts-types de la moyenne se trouve la valeur. Dans la série des cinq temps de réponse, la requête à $130$ ms donne $z = \dfrac{20}{\sqrt{130}} \approx 1{,}75$.
Piège classique : lire l'écart-type comme « l'écart moyen à la moyenne ». Sur $8$, $10$, $12$, la moyenne des écarts en valeur absolue vaut $\dfrac{2+0+2}{3} \approx 1{,}33$, alors que $\sigma \approx 1{,}63$. Le carré donne plus de poids aux grands écarts, si bien que l'écart-type est toujours au moins égal à cet écart moyen. Dis plutôt que les valeurs s'écartent de la moyenne de l'ordre de $\sigma$.
V. Exercices corrigés
Exercice 1 : une entreprise relève le nombre de jours d'absence de 25 salariés sur un mois (données fictives) : $0$ jour pour $10$ salariés, $1$ jour pour $8$, $2$ jours pour $4$, $3$ jours pour $2$ et $5$ jours pour $1$. Calcule la moyenne, puis l'écart-type (division par $n$) avec la forme développée.
Correction :
Effectif total : $10 + 8 + 4 + 2 + 1 = 25$. Somme pondérée : $0 \times 10 + 1 \times 8 + 2 \times 4 + 3 \times 2 + 5 \times 1 = 27$, donc $\bar{x} = \dfrac{27}{25} = 1{,}08$ jour.
Somme pondérée des carrés : $0 + 1 \times 8 + 4 \times 4 + 9 \times 2 + 25 \times 1 = 67$, donc $\overline{x^2} = \dfrac{67}{25} = 2{,}68$.
$V = 2{,}68 - 1{,}08^2 = 2{,}68 - 1{,}1664 = 1{,}5136$ et $\sigma = \sqrt{1{,}5136} \approx 1{,}23$ jour.
Exercice 2 : on interroge quatre étudiants d'une promotion sur leur temps de trajet jusqu'au campus, en minutes (données fictives) : $22$, $25$, $19$, $30$. a) Calcule l'écart-type en divisant par $n$, puis par $n-1$. b) Lequel des deux affiche np.std(x) ? Et pd.Series(x).std() ? c) Pour estimer la dispersion des temps de trajet de toute la promotion, lequel retiens-tu ?
Correction :
a) $\bar{x} = \dfrac{96}{4} = 24$. Écarts : $-2$, $1$, $-5$, $6$ ; carrés : $4$, $1$, $25$, $36$, de somme $66$. Division par $n$ : $V = \dfrac{66}{4} = 16{,}5$ et $\sigma \approx 4{,}06$ min. Division par $n-1$ : $s^2 = \dfrac{66}{3} = 22$ et $s \approx 4{,}69$ min.
b) np.std(x) divise par $n$ par défaut et affiche environ $4{,}06$ ; pd.Series(x).std() divise par $n-1$ et affiche environ $4{,}69$.
c) $s \approx 4{,}69$ min, car les quatre étudiants ne sont qu'un échantillon de la promotion.
Exercice 3 : sur une semaine, des températures relevées ont pour moyenne $20$ °C et pour écart-type $3$ °C (données fictives). On les convertit en degrés Fahrenheit avec $F = 1{,}8\,C + 32$. a) Donne la moyenne et l'écart-type en °F. b) Un jour à $26$ °C est à combien d'écarts-types de la moyenne ? Vérifie que la réponse est la même en °F.
Correction :
a) Moyenne : $1{,}8 \times 20 + 32 = 68$ °F. Écart-type : $1{,}8 \times 3 = 5{,}4$ °F, car le $+32$ décale tout sans changer la dispersion.
b) En °C : $z = \dfrac{26 - 20}{3} = 2$. En °F, $26$ °C donne $1{,}8 \times 26 + 32 = 78{,}8$ °F, et $z = \dfrac{78{,}8 - 68}{5{,}4} = \dfrac{10{,}8}{5{,}4} = 2$. La valeur centrée réduite ne dépend pas de l'unité.
À retenir
À retenir :
- $\bar{x} = \frac{1}{n}\sum x_i$ ; dans un tableau, chaque valeur compte autant de fois que son effectif.
- Écart-type : écarts à la moyenne, carrés, moyenne des carrés, racine. Plus rapide : $V = \overline{x^2} - \bar{x}^2$, sans arrondir $\bar{x}$ en route.
- On divise par $n$ pour décrire la série, par $n-1$ pour estimer la population ; NumPy divise par $n$ par défaut, pandas par $n-1$.
- L'écart-type est dans l'unité des données, sensible aux valeurs extrêmes, et $y = ax + b$ donne $\sigma_y = |a|\,\sigma_x$.
Sources
- Microsoft, aide d'Excel, « ECARTYPE.STANDARD » : support.microsoft.com
- NumPy, documentation de
numpy.std: numpy.org - pandas, documentation de
Series.std: pandas.pydata.org