Retour au blog

Statistiques Descriptives: Moyenne & Écart-type

Calculer une moyenne et un écart-type à la main, retrouver le même résultat dans Excel ou en Python, et comprendre ce que ce chiffre dit de tes données.

Cet article a été rédigé à des fins pédagogiques. Les informations présentées peuvent évoluer. Nous t’invitons à vérifier auprès de sources officielles.

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$
1444
271428
351545
431248
61636
Total2051161

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) :

OutilDivision par $n$Division par $n-1$
Excel (version française)ECARTYPE.PEARSONECARTYPE.STANDARD
NumPynp.std(x), par défautnp.std(x, ddof=1)
pandass.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

Tu peux partager cette page librement, en citant ORBITECH AI Academy avec son lien.