Atelier : les statistiques du site de commande, chez Da Lambda
Ce que ce chapitre apporte7 points
- Employer le vocabulaire de base : population, individu, variable, effectif, fréquence.
- Calculer et choisir un indicateur de position : moyenne, médiane, mode.
- Mesurer une dispersion : étendue, quartiles, écart-type, coefficient de variation, et repérer les valeurs atypiques.
- Lire une fréquence cumulée et un centile, et confronter un centile à un engagement.
- Reconnaître deux populations mêlées, et relier fréquence, probabilité et loi normale.
- Mesurer le lien entre deux variables, ajuster une droite et dire la part qu'elle explique.
- Distinguer une corrélation d'une cause, et rédiger une analyse chiffrée.
Le site rame le samedi soir.
Da Lambda, la pizzeria qui a ouvert la commande en ligne dans l'atelier sur les fonctions, reçoit des plaintes : le samedi soir, le site est lent. Le patron a récupéré les temps de réponse du serveur et veut des réponses chiffrées. Les pages sont-elles vraiment lentes, et lesquelles ? L'engagement « 95 % des pages en moins d'une seconde » est-il tenu ? Que coûte au serveur chaque commande de plus ? Faut-il croire que les gros paniers font ramer le site ?
Chaque phase répond à l'une de ces questions avec un outil de la statistique descriptive, rappelé juste avant de servir. Le cours complet est dans statistique descriptive et dans corrélation et moindres carrés.
L'atelier se fait sans aide, dans l'ordre, et en plusieurs fois si besoin. Chaque phase suit le même chemin.
- Le rappel de cours : la notion, sa formule et un petit exemple résolu. Le lire avant de calculer.
- Les calculs à la main, dans les cadres de calcul : chaque réponse est jugée dès qu'elle est validée, un indice s'ouvre à la demande, et la valeur exacte se montre après trois essais.
- Les figures, à manipuler : elles montrent ce que les nombres résument.
- Les questions à déplier : y répondre par écrit, en une ou deux phrases, avant d'ouvrir la réponse.
- Ce qu'il faut retenir, en fin de phase.
Deux exercices de programmation, marqués facultatifs, montrent comment un calcul fait à la main se programme en Python. L'atelier se termine sans eux.
Déroulé
| Durée | Étape | Notions |
|---|---|---|
| 25 min | 1. Décrire une série | Population, variable, moyenne, médiane, mode |
| 40 min | 2. Mesurer la dispersion | Étendue, quartiles, valeurs atypiques, écart-type, coefficient de variation |
| 30 min | 3. Le journal du samedi | Effectif, fréquence, fréquence cumulée, centile |
| 30 min | 4. Deux populations sous une moyenne | Histogramme, moyenne pondérée, probabilité, loi normale |
| 30 min | 5. Deux variables ensemble | Nuage, covariance, corrélation |
| 30 min | 6. Ajuster une droite et prévoir | Moindres carrés, prévision, |
| 25 min | 7. Corrélation et causalité, le rapport | Facteur de confusion, rédaction |
Compter environ trois heures et demie, sans les exercices facultatifs ni les exercices en plus.
Phase 1 : Décrire une série, et trouver une valeur typique
Le mardi midi, le site est calme. Dix requêtes ont été chronométrées, en millisecondes (ms), dans l'ordre où elles sont arrivées :
Le samedi soir, à 20 h 30, dix autres :
Avant de calculer quoi que ce soit, il faut savoir de quoi l'on parle.
La population est l'ensemble étudié, ici les requêtes reçues par le site. Chacun de ses éléments est un individu : une requête. Ce qu'on observe sur chaque individu est une variable : le temps de réponse.
Une variable est quantitative quand elle se mesure par un nombre qui a un sens (on peut le comparer, en faire une moyenne), et qualitative sinon.
- Quantitative continue : elle peut prendre n'importe quelle valeur d'un intervalle. Le temps de réponse, le montant d'une commande.
- Quantitative discrète : elle prend des valeurs isolées, souvent entières. Le nombre de pizzas d'une commande.
- Qualitative : une catégorie, même codée par un nombre. L'appareil employé, mobile ou ordinateur ; la page servie depuis le cache ou non.
La liste des valeurs observées est une série statistique, et leur nombre est l'effectif total, noté . Ici, chaque soirée donne une série d'effectif .
1.Le nombre de boissons d'une commande est une variable…
2.La colonne qui dit si la page vient du cache, « oui » ou « non », est une variable…
3.Le montant d'une commande, en euros, est une variable…
La première question du patron est simple : combien de temps met une requête, typiquement ?
La moyenne est la somme des valeurs divisée par leur nombre :
La médiane coupe la série rangée en deux moitiés de même effectif. Si est impair, c'est la valeur du milieu ; si est pair, la demi-somme des deux valeurs du milieu.
Le mode est la valeur la plus fréquente. Il est le seul des trois à avoir un sens pour une variable qualitative.
Exemple résolu, sur cinq valeurs : 12, 7, 9, 30, 7.
- Moyenne : .
- Médiane : rangée, la série devient 7, 7, 9, 12, 30 ; la valeur du milieu est 9.
- Mode : 7, la seule valeur qui apparaît deux fois.
La moyenne, 13, est tirée vers le haut par la seule valeur 30 ; la médiane, 9, ne dépend que du rang des valeurs et ne bouge pas, même si 30 devient 300.
Le temps typique, mardi et samedi
- 1.
La moyenne du mardi, en ms.
- 2.
La médiane du mardi, en ms.
- 3.
La moyenne du samedi, en ms.
- 4.
La médiane du samedi, en ms.
Le samedi, la moyenne vaut 563 ms et la médiane 295 ms. Laquelle décrit une requête typique ?
La médiane. Une seule requête, à 2 950 ms, tire la moyenne vers le haut : sans elle, la moyenne des neuf autres tombe à 297,8 ms, la médiane à 280 ms. La moyenne répond à une autre question, « combien de temps le serveur a-t-il passé en tout, divisé par le nombre de requêtes », utile pour dimensionner, pas pour décrire.
Pour aller plus loin (facultatif) : programmer la moyenne et la médiane
Sur des centaines de valeurs, ces calculs se confient à un programme, à condition qu'il soit juste. Le cadre ci-dessous demande d'écrire les deux fonctions, et « Vérifier » les essaie sur des cas qu'on sait faire de tête.
La moyenne et la médiane
Écrire moyenne(serie), qui renvoie la moyenne d'une liste de nombres, et mediane(serie), qui renvoie sa médiane.
Écrire la fonction, puis « Vérifier » : 6 vérifications sur des cas qu'on sait faire de tête.
Phase 2 : Mesurer la dispersion
Deux séries peuvent avoir la même médiane et être très différentes : l'une serrée autour de son centre, l'autre étalée. La seconde question du patron est donc : les temps varient-ils beaucoup ?
L'étendue est l'écart entre la plus grande et la plus petite valeur. Simple, mais une seule valeur extrême suffit à la changer.
Les quartiles coupent la série rangée en quatre parts de même effectif. Ce site les calcule par la règle des deux moitiés : on coupe la série rangée en deux moitiés, la médiane n'entrant dans aucune quand est impair ; est la médiane de la moitié basse, celle de la moitié haute. Environ un quart des valeurs est sous , et un quart au-dessus de .
L'écart interquartile est la largeur de la moitié centrale des valeurs. Une valeur est atypique quand elle s'écarte de cette zone de plus d'une fois et demie l'écart interquartile : au-delà de la barrière haute , ou en deçà de la barrière basse .
Exemple résolu, sur huit valeurs : 3, 1, 2, 8, 5, 4, 7, 6.
- Rangée : 1, 2, 3, 4 | 5, 6, 7, 8. La moitié basse est 1, 2, 3, 4, la haute 5, 6, 7, 8.
- et ; l'écart interquartile vaut 4.
- Barrières : et . Aucune valeur n'est atypique.
Sur sept valeurs, 2, 4, 4, 5, 6, 7, 30, la médiane 5 n'entre dans aucune moitié : est la médiane de 2, 4, 4, soit 4, et celle de 6, 7, 30, soit 7. La barrière haute vaut : 30 est atypique.
La dispersion du mardi et du samedi
- 1.
L'étendue du mardi, en ms.
- 2.
Le premier quartile du mardi, en ms.
- 3.
Le troisième quartile du mardi, en ms.
- 4.
La barrière haute du mardi, en ms.
- 5.
Le premier quartile du samedi, en ms.
- 6.
Le troisième quartile du samedi, en ms.
- 7.
La barrière haute du samedi, en ms.
La boîte à moustaches dessine cinq nombres. La boîte va de à : elle contient la moitié centrale des valeurs. Le trait intérieur est la médiane. Les moustaches s'arrêtent aux dernières valeurs qui ne sont pas atypiques, et les valeurs atypiques sont des points isolés. Une boîte large dit une série dispersée ; une médiane décentrée dans sa boîte, une série dissymétrique.
| série | min | Q₁ | médiane | Q₃ | max | moyenne | écart-type |
|---|---|---|---|---|---|---|---|
| Mardi midi | 110 | 118 | 121,5 | 125 | 145 | 122,9 | 8,99 |
| Samedi soir | 190 | 240 | 295 | 390 | 2 950 | 563 | 799,45 |
Comparer la largeur des deux boîtes, puis la place de la requête à 2 950 ms : seule, elle étire l'axe au point d'écraser la boîte du mardi.
La requête du mardi à 145 ms est atypique. Faut-il s'en inquiéter ?
Non. Atypique veut dire « loin de la boîte de cette série », et celle du mardi est très étroite : 7 ms. 145 ms reste un excellent temps de réponse. Une valeur atypique est un signal à regarder, pas une erreur.
Les quartiles ne regardent que des rangs. Une autre mesure de dispersion tient compte de chaque valeur.
L'écart à la moyenne d'une valeur est . La variance est la moyenne des carrés de ces écarts, et l'écart-type (sigma) sa racine carrée, qui s'exprime dans la même unité que les valeurs :
Les carrés empêchent les écarts positifs et négatifs de se compenser ; la racine ramène à l'unité de départ. L'écart-type se lit comme un écart typique à la moyenne.
Une convention à connaître. On divise ici par , pour décrire une série. Pour estimer la dispersion d'une population entière à partir d'un échantillon, on divise par , et la plupart des logiciels le font par défaut. L'important est de dire laquelle on emploie.
Un écart-type pas à pas, sur 2, 4, 4, 4, 5, 5, 7, 9
- 1.
La moyenne de la série.
- 2.
La somme des carrés des écarts à cette moyenne.
- 3.
La variance.
- 4.
L'écart-type.
L'écart-type vaut 9,0 ms pour le mardi et 799 ms pour le samedi. Sans la requête à 2 950 ms, celui du samedi tombe à 82 ms : une seule valeur le multiplie par dix. Construit sur des carrés d'écarts, l'écart-type est encore plus sensible que la moyenne aux valeurs extrêmes, et l'écart interquartile beaucoup moins.
Comparer les écarts-types de deux séries d'ordres de grandeur différents trompe : 9 ms de dispersion n'ont pas le même poids autour de 123 ms qu'autour de 3 secondes.
Le coefficient de variation rapporte l'écart-type à la moyenne :
Il n'a pas d'unité, et s'exprime souvent en pour-cent. Il compare la dispersion relative de séries d'échelles différentes : un CV de 10 % dit que l'écart typique vaut un dixième de la moyenne, quelle qu'elle soit. Il n'a de sens que pour des valeurs positives.
Des dispersions relatives
- 1.
Le coefficient de variation du mardi, en pour-cent (σ = 8,99 ms, moyenne 122,9 ms).
- 2.
Celui du samedi, en pour-cent (σ = 799,45 ms, moyenne 563 ms).
- 3.
Celui du samedi sans la requête à 2 950 ms, en pour-cent (σ = 81,89 ms, moyenne 297,78 ms).
Quelle mesure de dispersion donner au patron pour le samedi ?
L'écart interquartile, 150 ms : la moitié centrale des requêtes tient dans 150 ms, et ce nombre ne dépend pas de la requête à 2 950 ms. L'écart-type, 799 ms, et le coefficient de variation, 142 %, disent surtout qu'une valeur extrême est présente ; on les donne avec elle, et on dit à part ce que vaut la série sans elle.
Pour aller plus loin (facultatif) : programmer l'écart-type
L'écart-type
Écrire ecart_type(serie), la racine de la moyenne des carrés des écarts à la moyenne, en divisant par le nombre de valeurs.
Écrire la fonction, puis « Vérifier » : 3 vérifications sur des cas qu'on sait faire de tête.
Phase 3 : Le journal du samedi, effectifs, fréquences et centiles
Dix requêtes ne font pas une soirée. Le serveur a exporté le journal de tout le samedi, de 18 h à 23 h : une ligne par commande, 160 commandes. Voici ses premières lignes :
heure;appareil;pizzas;boissons;montant;charge;cache;temps_ms
20:03;mobile;2;1;23,6;28;non;timeout
19:58;ordinateur;2;0;20,0;32;non;1215
18:33;mobile;1;1;13,7;3;oui;99
20:13;mobile;2;1;21,9;33;non;1144
19:20;ordinateur;2;2;30,6;14;non;851
charge compte les commandes en cours sur le site au même instant, cache dit si la page a été servie depuis la mémoire du serveur sans interroger la base, et temps_ms est le temps de réponse. Quand une page dépasse trois secondes, le site abandonne et écrit timeout. Un timeout n'est pas une valeur inconnue : la page a mis au moins trois secondes, et on la compte à 3 000 ms plutôt que de la supprimer.
Sur 160 valeurs, on ne liste plus la série : on la résume en tableau.
L'effectif d'une valeur, ou d'une classe de valeurs, est le nombre d'individus qui l'ont. Sa fréquence est son effectif divisé par l'effectif total : , une proportion entre 0 et 1, souvent donnée en pour-cent. Les fréquences de toutes les valeurs ont pour somme 1.
La fréquence cumulée d'une valeur est la part des individus qui ont au plus cette valeur : on additionne les fréquences de toutes les valeurs qui la précèdent, elle comprise.
Quand la série est donnée par un tableau d'effectifs, la moyenne se calcule en pondérant chaque valeur par son effectif : .
Le nombre de pizzas des 160 commandes :
| Pizzas par commande | 1 | 2 | 3 | 4 | 5 | 6 |
|---|---|---|---|---|---|---|
| Effectif | 48 | 57 | 21 | 18 | 9 | 7 |
Les pizzas du samedi
- 1.
La fréquence des commandes de deux pizzas, en pour-cent.
- 2.
La fréquence cumulée « au plus deux pizzas », en pour-cent.
- 3.
Le mode du nombre de pizzas.
- 4.
Le nombre moyen de pizzas par commande.
Pour une variable continue comme le temps, on regroupe les valeurs en classes, des intervalles, et l'on compte les individus de chacune :
| Temps de réponse (ms) | de 0 à 250 | de 250 à 500 | de 500 à 750 | de 750 à 1 000 | de 1 000 à 1 500 | 1 500 et plus |
|---|---|---|---|---|---|---|
| Effectif | 62 | 24 | 24 | 27 | 19 | 4 |
Chaque classe contient sa borne basse et pas sa borne haute.
Le centile d'ordre (ou quantile) est la valeur sous laquelle se trouve une proportion des individus. La médiane est le 50e centile, le 25e, le 75e. Le 95e centile laisse 95 % des valeurs sous lui, et 5 % au-dessus.
Centiles et fréquences cumulées se lisent dans les deux sens : dire que le 95e centile vaut une seconde, c'est dire que la fréquence cumulée à une seconde vaut 95 %. Un engagement comme « 95 % des pages en moins d'une seconde » se vérifie donc de deux façons : le 95e centile doit être sous 1 000 ms, ou, ce qui revient au même, la fréquence cumulée à 1 000 ms doit atteindre 95 %.
L'engagement est-il tenu ?
- 1.
Le nombre de pages servies en moins de 1 000 ms.
- 2.
La fréquence cumulée à 1 000 ms, en pour-cent.
- 3.
Le nombre de pages qu'il aurait fallu servir en moins d'une seconde pour tenir l'engagement.
Un logiciel de calcul, ici la bibliothèque pandas de Python, donne d'un coup les indicateurs de la soirée :
| Indicateur | Toutes les pages | Servies par le cache | Servies par la base |
|---|---|---|---|
| Effectif | 160 | 62 | 98 |
| Moyenne | 537 ms | 84,5 ms | 823,7 ms |
| Médiane | 434 ms | 83 ms | 762 ms |
| 95e centile | 1 179 ms | ||
| 99e centile | 2 957 ms | ||
| Écart-type | 528 ms | ||
| Minimum et maximum | 63 et 3 000 ms |
Le code qui a produit ce tableau (facultatif, rien à exécuter)
import base64
import io
import zlib
import pandas as pd
# Le fichier du serveur, compressé pour tenir sur une ligne.
JOURNAL = "eNptWMtyJDkIvPtb+iAQ6GF9zEbPbMeOI8aPsD2X+foVoEdJVeFjywKSJEnVr8efz0e5f3zcPx8vv8vHy9+/96/y4/3l6+v97au8vr9939++y89f98//HuXn/eevR/l+vH58/fP69YTu2fl65sfL70fBAgX9LRRM5e39rXy/vD7e/3w/QX7mVN4//315u3/XaPWgK+hurnjUg4DAT5Ce/bgK5M/fYvHl/c9LyVkiwRoJbrnU/9ALgEjCoFvDYPGu5gOkpxKDXIPQr/FygG5e8pAwEbUgOl2CUlTUS2JCieTj8ZCmy7UgbJGw3oTPjmfC9Y9vUOwSn/US2FDRolKBYNm4J4RnzssdqWab9OcQ5Gc/iqFaDucKWa82RsXULZiGGxe7PrGC4bYUQ0XE/t8nCYD+mGOFqlCohYIBz04ho7AEESRqXIkCTsMQr7dgIbrh6D/JNbVWLtaTVH/jhhToL9gDcA3AWH/P+jtlr0jnvWdaSjSktBBB9ZQCVR5atS5o73kpBGs3Wo5BOAjPLiwcFPK0nrNzgjfhciALVtCg0DyIlgNSKuARK7+QONTGRpI8DJDsvQJKJ/4FycVQSSELv4hOU6cJ8yCQ25ATEpGQqJJASQKC7pwYQT/w7E5SjoLb2l9htZICCSZVD46/U+UgGOxIYJmuox3kBssg6sy6Zdw0C1WHxh8XlT90mDcns4Qd++TXPDQKy7AE624Ka/ME9sRj2AyHKXUk9JE6odOctCtumUYvCoVdoXITwsO8eRBhyR2q8ySR/a6NJ228O6iX9srLqFkIAAnhcF4h5BMU7IT3UbXrNIw+30R7LA/WsYeVFlDISblptDUftKPlWgMZtVKSVKd0KYlFidFkI7B1HY79gjyLjRTbKBxL8aIr1Iq1OfC4rYyxE1LSQgC3cQMpQmM4rwqaT0PiRYStsVkhZdjomXui4Az0GUbxjELxPvam4+4iDAx+otBviktTQSpWLbHTYvMCh5Ni3bpq02Ej6CGsQYzj3kaJwkIgJ523AykrIACrtGikWk6e5ehAjltAUoWp+LndsjYmdfJE+522NFUzLI2oSkunOpokVD0X8uRiU4Z1jDEM7jqxEXsBIGIxZVi0wO26x1Gh0nZkOcJ7CUGUWmUro/KTdl6kocDIqpxLR0mqbA3X/2daUAyzkuSbt9oqUW12nXrc1PfsInJneajOSKQx7OUGMPnS3ZXgPG550gsAsZH4WG+UG44Cu8m4AJrGahPlyYtAk8zRlPl9R7eBDZ0YwbLkcJok8WeDn6RSve9paiuLgK70TeWcxzrw3AiwbB2qKZjBmmSjixaF7gkiOVVkv4i+zG2Tl6T2CXihAZl90guiGkl/UNK6ksT+WKKMavKm0uoFYjQP9qgGyMvi8rXStuBt5Olgr6pSw2Q61ZUhcNLmi0JTJh9wDdAaH6dQZ9xTRKuxhWC2WVi5JTW2dwRgVK87h4nrmcCzFZnXeR3sq+zUEFG9DvJ5nRjOIcQL1uSaQxysOj9QxB+EBhOcF1plXZx6oBn4s2C0DBKorgJtKMT+OAmGkt9UkQdKDu2VFLalCqJ81gqX1ykcO7PzFbXM6rZ3gyAOtFHKoEK3JRI6FM1JX4mw76+oKsJ83jVNu+LQrqyqQZshrk3h6btTvtonTqDvyMa2ofeEhADttcRob0M6DlpMJoHdnuFBIWWQWBrc5gB1y1Pe1qIYSEWlCSRuWYos9a154dgbBdqCDqy+i+PCMp4sq0ZYr8F8qhXnAobaIYkVL54QYovbyOhgb5ZZLIm3N3nS507NzJYnTFNPDtpy3GvxNtTjNYQHmzBmtrmVHJrz2i8Joq+hyWNqr78jIPJlofkBr/Ibjq486BKmg+fGeGqKbzSFqE7WHdoO8m7kLm/ZxMvHbWxp1pnXA03ixygkW0gOLrqBYzAZz49xpaCgMfqK57cS1ZIYzJhMGZn2TYQ8O4nUJ5PS1ZbVFzWNpFEX21HO5Aa5JgyOyVSeOYay/eJw+Ut/xnJpBwJqAxm3h8aQtGSWAPLZKxommVaf1hQPhuwmRd/zcbWwzG3zE0nVbp1LX5x9E4KxA6UMt2n7+EYhwnz5jULcXByqKfqQlxUn0mx3eDIDRhd6GfprnLdHaPt2hd365rjTXZcYzl1ti9avH4WCGaPmeUw5jgMlbrN9U4jGZXehYlkemEb47UuKGisv5PJ9agVyvpSnBjny/rlG+46dGNl4PuWrPcijfEfRTO0pvD8ycv9ykU068vVbqNlmb1MZN/cV+xed6J7+B2l1xWs="
texte = zlib.decompress(base64.b64decode(JOURNAL)).decode("utf-8")
# Un tableur français : des points-virgules entre les champs, une virgule avant les décimales.
journal = pd.read_csv(io.StringIO(texte), sep=";", decimal=",")
# Un timeout n'est pas une valeur inconnue : la page a mis au moins trois secondes.
journal["temps"] = pd.to_numeric(journal["temps_ms"], errors="coerce").fillna(3000)
print(journal["temps"].describe(percentiles=[0.5, 0.95, 0.99]).round(0))
print(journal.groupby("cache")["temps"].agg(["count", "mean", "median"]).round(1))
pandas calcule ses quartiles en interpolant entre deux valeurs voisines, et son écart-type en divisant par : ses nombres peuvent différer d'un cheveu de ceux qu'on obtiendrait à la main avec les conventions de cet atelier. L'écart-type du tableau, 528 ms, divise par .
L'engagement « 95 % des pages en moins d'une seconde » est-il tenu ? Et que disait la moyenne ?
Non. 137 pages sur 160 ont répondu en moins d'une seconde, soit 85,6 %, quand l'engagement en demande 152. Le 95e centile le confirme : 1 179 ms, au-dessus d'une seconde. La moyenne, 537 ms, semblait rassurante, mais elle ne dit rien de la queue de la distribution, qui est précisément ce que l'engagement vise. C'est pourquoi les équipes qui surveillent un service parlent en centiles et presque jamais en moyennes.
Que se passerait-il si l'on supprimait les deux timeouts au lieu de les compter à 3 000 ms ?
Les indicateurs de la queue s'amélioreraient artificiellement : le 99e centile passerait de 2 957 ms à 1 839 ms, la moyenne de 537 à 506 ms. On aurait retiré les deux pires expériences de la soirée et conclu que le site va mieux. Une valeur manquante se traite selon ce qu'elle signifie : ici, « plus de trois secondes ».
Phase 4 : Deux populations sous une seule moyenne
Le tableau de la phase 3 contient une surprise : les pages servies par le cache répondent en 83 ms de médiane, celles qui interrogent la base en 762 ms. La moyenne générale, 537 ms, ne ressemble à aucune des deux.
Un histogramme dessine le tableau des classes : chaque classe est un rectangle dont la hauteur est proportionnelle à l'effectif, quand les classes ont la même largeur. On y lit la forme de la distribution : où les valeurs se concentrent, si elle est symétrique ou étirée d'un côté, et combien elle a de bosses. Deux bosses séparées par un creux trahissent presque toujours deux populations mêlées.
Lire la médiane et le 95e centile sur la courbe cumulée, et les comparer à ceux du tableau. Repérer ensuite les deux paquets de barres et le creux qui les sépare : aucune page n'a mis entre 110 et 320 ms. Les 62 pages de moins de 250 ms sont exactement celles du cache.
Quand une population se partage en groupes, sa moyenne est la moyenne des moyennes des groupes, pondérée par leurs fréquences :
Elle tombe entre les moyennes des groupes, plus près de celle du groupe le plus nombreux, et peut ne décrire aucun individu réel.
La moyenne de la soirée, retrouvée par les groupes
- 1.
La fréquence des pages servies par le cache, en pour-cent.
- 2.
La moyenne de la soirée, en ms, à partir des deux groupes.
- 3.
La moyenne de la soirée si la part du cache montait à 60 %, les deux moyennes restant les mêmes.
La même série, séparée selon que la page vient du cache ou de la base, en boîtes puis en violons.
| série | min | Q₁ | médiane | Q₃ | max | moyenne | écart-type |
|---|---|---|---|---|---|---|---|
| Toutes les commandes | 63 | 93 | 434 | 821 | 3 000 | 537,25 | 528,42 |
| Servies par le cache | 63 | 68 | 83 | 100 | 109 | 84,47 | 16,04 |
| Servies par la base | 320 | 500 | 762 | 957 | 3 000 | 823,7 | 493,93 |
On entend souvent qu'une série « normale » a 68 % de ses valeurs à moins d'un écart-type de la moyenne. Pour savoir si c'est vrai ici, il faut deux notions de probabilité.
La probabilité d'un événement est un nombre entre 0 et 1 qui mesure sa chance de se produire. Sur des données observées, on ne la connaît pas : on l'estime par la fréquence de l'événement. La part des pages servies par le cache ce samedi, 38,75 %, estime la probabilité qu'une page du samedi soir vienne du cache.
L'estimation est d'autant meilleure que les observations sont nombreuses : c'est la loi des grands nombres. Sur dix pages, la part du cache aurait pu valoir 20 % ou 60 % par simple hasard ; sur 160, elle bouge beaucoup moins d'une soirée à l'autre.
Beaucoup de grandeurs qui résultent de nombreux petits effets indépendants, un bruit de mesure, une taille, ont une distribution en cloche : symétrique autour de sa moyenne , d'autant plus étalée que son écart-type est grand. C'est la loi normale. Pour elle, et pour elle seulement :
- environ 68 % des valeurs sont entre et ;
- environ 95 % entre et ;
- environ 99,7 % entre et .
entre 400 et 600, l'aire vaut 0,6827. Déplacer l'écart-type : elle ne bouge pas.
Écarter les bornes jusqu'à ce que l'aire teintée vaille 0,95.aire = 0,683
Lire la cloche
- 1.
Sur une loi normale, la part des valeurs au-delà de , en pour-cent.
- 2.
La part des valeurs au-delà de , en pour-cent.
Sur le journal, 88,1 % des temps sont à moins d'un écart-type de leur moyenne, et 97,5 % à moins de deux.
La règle des 68-95 tient-elle sur les temps du samedi ? Qu'en conclure ?
Non : 88,1 % au lieu de 68 %. La série n'est pas une cloche : elle mêle deux familles de requêtes, et quelques valeurs très lentes gonflent son écart-type. La règle des 68-95-99,7 ne vaut que pour une loi normale ; sur une série pareille, on lit les centiles, et l'on résume chaque famille à part.
Que faudrait-il surveiller, plutôt qu'un temps moyen ?
Trois nombres : la part des pages servies par le cache (38,75 % ce samedi), le temps médian des pages qui n'en viennent pas, et le 95e centile de l'ensemble, celui que l'engagement vise. Les deux premiers disent où agir, le troisième si le client le sent.
Phase 5 : Deux variables ensemble, nuage, covariance et corrélation
Jusqu'ici, chaque série ne portait qu'une variable. La question du patron en relie deux : le temps de réponse augmente-t-il avec l'affluence ? L'équipe a mené un test de charge : on envoie au site un nombre fixé de commandes simultanées, et l'on relève le temps médian de réponse.
| Commandes simultanées | 2 | 5 | 8 | 11 | 14 | 17 | 20 | 23 | 26 | 29 |
|---|---|---|---|---|---|---|---|---|---|---|
| Temps médian (ms) | 390 | 430 | 530 | 561 | 639 | 679 | 772 | 848 | 866 | 958 |
Une série à deux variables associe deux valeurs à chaque individu, ici une charge et un temps. On la dessine en nuage de points. Le point moyen a pour coordonnées les deux moyennes, .
La covariance est la moyenne des produits des écarts aux moyennes :
Un point en haut à droite du point moyen a ses deux écarts positifs, un point en bas à gauche les deux négatifs : leur produit est positif. Une covariance positive dit que les deux variables montent ensemble, négative que l'une descend quand l'autre monte. Sa valeur dépend des unités, et ne se lit pas seule.
Le coefficient de corrélation de Pearson la normalise par les deux écarts-types :
proche de 1 : les points sont presque alignés sur une droite croissante ; proche de , sur une droite décroissante ; proche de 0, pas de lien linéaire, ce qui n'exclut pas un autre lien, en courbe par exemple.
D'abord pas à pas, sur quatre points seulement : = 1, 2, 3, 4 et = 1, 3, 2, 4.
Une corrélation pas à pas, sur quatre points
- 1.
La moyenne des , qui est aussi celle des .
- 2.
La somme des produits des écarts.
- 3.
La covariance.
- 4.
La variance des .
- 5.
Le coefficient de corrélation.
Le test de charge, maintenant.
Compter les points de chaque quadrant : tous sont en haut à droite ou en bas à gauche, donc tous les produits d'écarts sont positifs.
La corrélation du test de charge
- 1.
La charge moyenne .
- 2.
Le temps médian moyen , en ms.
- 3.
Le coefficient de corrélation, sachant que , et .
Un stagiaire calcule la même corrélation avec un logiciel, et trouve 1,107. Où est l'erreur ?
Une corrélation ne dépasse jamais 1 : le calcul a un défaut. Le stagiaire a pris une covariance qui divise par et des écarts-types qui divisent par . Le numérateur est alors trop grand d'un facteur , et . Chaque nombre est juste, leur assemblage est faux : une formule n'a de sens que si toutes ses parties suivent la même convention.
Phase 6 : Ajuster une droite et prévoir
Le patron veut savoir ce que coûte chaque commande simultanée et à quelle affluence la page atteindra une seconde. Il faut pour cela une droite qui résume le nuage.
Parmi toutes les droites , la droite des moindres carrés est celle qui rend la plus petite possible la somme des carrés des écarts verticaux entre les points et la droite. Sa pente et son ordonnée à l'origine se calculent directement :
La seconde formule dit que la droite passe par le point moyen. La pente s'exprime en unités de par unité de : ici, des millisecondes par commande.
Une prévision se fait en remplaçant dans l'équation. Dans le domaine des mesures, c'est une interpolation, fiable si les points sont bien alignés ; au-delà, une extrapolation, qui suppose que la relation reste la même hors de ce qu'on a observé, ce que rien ne garantit.
La part de la dispersion des que la droite explique est le coefficient de détermination, . Pour une droite, il vaut le carré du coefficient de corrélation : , entre 0 et 1.
Avant toute formule, chercher la droite à tâtons.
Le minimum vaut 2 436,5, soit 29 499,5 de moins qu'ici.
La droite, d'abord sur quatre points, puis sur le test de charge
- 1.
La pente de la droite des quatre points de la phase 5.
- 2.
Son ordonnée à l'origine.
- 3.
La pente de la droite du test de charge, en ms par commande.
- 4.
Son ordonnée à l'origine, en ms.
- 5.
Le temps médian prévu pour 10 commandes simultanées, en ms.
- 6.
La charge à laquelle le temps médian atteindrait 1 000 ms.
- 7.
Le coefficient de détermination , sachant que .
Que veulent dire, pour le patron, la pente et l'ordonnée à l'origine ?
La pente : chaque commande simultanée de plus ajoute environ 21 ms au temps médian. L'ordonnée à l'origine : un site presque vide répondrait en 341 ms, le temps de base d'une page qui interroge la base. On peut l'interpréter parce que les mesures commencent à 2 commandes, tout près de 0 ; une ordonnée à l'origine loin des mesures n'aurait aucun sens physique.
À quelle charge la médiane atteindra-t-elle une seconde ? Peut-on faire confiance à ce nombre ?
Vers 31 commandes simultanées, juste au-delà de la plus grande charge mesurée, 29 : une extrapolation modeste, qu'on présente comme telle. À 40 commandes, la droite annonce 1 183 ms, mais rien ne dit qu'un serveur saturé reste linéaire : il faudrait refaire un test de charge.
vaut 0,993. Que signifie ce nombre ?
99,3 % de la dispersion des temps médians du test s'explique par la charge, et 0,7 % reste dans les écarts à la droite. La droite résume presque parfaitement ces dix points. Ce n'est pas une garantie au-delà des mesures : un dit la qualité de l'ajustement, pas celle de l'extrapolation.
Phase 7 : Corrélation et causalité, puis le rapport
Le patron a une dernière idée. Sur les vingt derniers samedis, il a relevé le panier moyen et le temps médian de réponse : leur corrélation vaut 0,79. Il en conclut que les gros paniers font ramer le site, et veut plafonner les commandes à 60 €.
Une corrélation mesure une association : deux variables varient ensemble. Elle ne dit pas que l'une agit sur l'autre. Trois situations produisent la même corrélation :
- agit sur ;
- agit sur : la corrélation est symétrique, elle ne dit pas le sens ;
- une troisième variable, un facteur de confusion, agit sur les deux, sans lien direct entre elles.
Pour établir une cause, on cherche le mécanisme, on compare des situations où le facteur de confusion est le même, et, quand c'est possible, on expérimente : on fait varier une seule grandeur, et l'on mesure.
Chaque soirée a aussi son affluence, le nombre total de commandes, et elle est fortement corrélée aux deux autres :
| Couple de variables, sur les vingt samedis | Corrélation |
|---|---|
| affluence et temps médian | 0,94 |
| affluence et panier moyen | 0,83 |
| panier moyen et temps médian | 0,79 |
Les soirs de grande affluence, le serveur est plus chargé, donc plus lent ; ce sont aussi, sur ces vingt samedis, les soirs où le panier moyen est le plus élevé. Le panier et le temps montent ensemble parce qu'ils suivent tous deux l'affluence : quand on compare des samedis de même affluence, leur corrélation disparaît, à 0,003 près. L'affluence est le facteur de confusion.
Un collègue affirme : « Une corrélation supérieure à 0,9 prouve que l'une des variables cause l'autre. » Que lui répondre ?
La critique. Une corrélation mesure une association linéaire, symétrique : elle ne dit ni le sens d'une éventuelle cause, ni si une troisième variable pilote les deux. Elle peut aussi naître d'une tendance commune dans le temps, ou du hasard sur peu de points.
Le contre-exemple, sur ces données. Le panier et le temps sont corrélés à 0,79 sans aucun lien direct : plafonner les paniers ne changerait rien au temps de réponse. Il faudrait agir sur ce qui charge le serveur.
Ce qu'il faudrait faire. Vérifier le mécanisme (une grosse commande demande-t-elle plus au serveur ? non, une page ne dépend pas du panier), et expérimenter : faire varier une seule grandeur et mesurer, ce qu'est précisément le test de charge de la phase 5.
Le rapport
Rédiger, en cinq à sept phrases, l'analyse destinée au responsable technique du site : quelqu'un qui n'a pas fait les calculs, qui lira le texte une fois et devra décider. La rédiger avant d'ouvrir l'exemple.
La grille, puis un exemple de rapport
Un bon rapport contient un constat chiffré avec l'indicateur qui convient (un centile plutôt qu'une moyenne), la cause établie et sa mesure, une prévision avec sa limite, une recommandation, et ce qu'il ne faut pas conclure. Il ne contient ni code ni formule.
Le samedi soir, le site ne tient pas son engagement : 95 % des pages devraient répondre en moins d'une seconde, or seules 85,6 % le font, et deux pages ont abandonné au bout de trois secondes. Le temps moyen, 537 ms, masque ce problème, car il mélange les pages servies par le cache (83 ms de médiane) et celles qui interrogent la base (762 ms). Le test de charge montre que chaque commande simultanée ajoute environ 21 ms ; à ce rythme, la page médiane atteindra une seconde vers 31 commandes simultanées, juste au-delà de ce qui a été mesuré. Augmenter la part des pages servies par le cache, 39 % aujourd'hui, est le levier le plus direct. Plafonner les paniers ne servirait à rien : leur lien avec la lenteur vient seulement de l'affluence, qui fait monter les deux.
La méthode
- Lire le rappel de cours avant de calculer, et refaire son exemple résolu de tête : il sert de point de comparaison.
- Regarder avant de résumer. Une boîte, un histogramme ou un nuage disent si un indicateur a un sens : deux populations mêlées, une valeur extrême, une courbe au lieu d'une droite.
- Choisir l'indicateur qui répond à la question. La médiane pour une valeur typique, un centile pour un engagement, la moyenne pour un total.
- Dire la convention. Quartiles, écart-type et covariance ont plusieurs définitions ; deux grandeurs ne se comparent que si elles suivent la même.
- Traiter une donnée manquante selon ce qu'elle signifie. Un timeout est une durée minimale, pas un trou.
- Prévoir dans le domaine des mesures, et dire la part que la droite explique.
- Ne pas lire une cause dans une corrélation : chercher ce qui agit sur les deux grandeurs, puis expérimenter.
Synthèse
Le mémo des notions de l'atelier, à garder sous la main.
| Notion | Définition ou formule | Ce qu'elle dit, et sa limite |
|---|---|---|
| Variable | Ce qu'on observe sur chaque individu : qualitative, quantitative discrète ou continue | Le type décide des indicateurs qui ont un sens |
| Effectif, fréquence | , puis ; la fréquence cumulée additionne jusqu'à une valeur | La part des individus ; une fréquence estime une probabilité |
| Moyenne | ; d'un mélange, moyenne pondérée des groupes | Un total ramené à l'individu ; sensible aux valeurs extrêmes |
| Médiane | Le milieu de la série rangée | La valeur typique ; insensible aux valeurs extrêmes |
| Mode | La valeur la plus fréquente | Seul indicateur d'une variable qualitative |
| Quartiles, écart interquartile | Médianes des deux moitiés ; | La moitié centrale ; peu sensibles aux valeurs extrêmes |
| Valeur atypique | Au-delà de ou en deçà de | Un signal à examiner, pas une erreur |
| Écart-type | L'écart typique à la moyenne ; très sensible aux valeurs extrêmes | |
| Coefficient de variation | La dispersion relative, sans unité | |
| Centile | La valeur sous laquelle se trouve une proportion des individus | Le bon outil pour un engagement « 95 % en moins de… » |
| Loi normale | La cloche ; 68 %, 95 %, 99,7 % à 1, 2, 3 écarts-types | Ne vaut que si la série est en cloche : regarder d'abord |
| Covariance, corrélation | ; | Le sens et la force d'un lien linéaire ; pas une cause |
| Droite des moindres carrés | , ; | Une prévision fiable dans le domaine des mesures |
Exercices en plus
Aucun n'est nécessaire à la suite ; ils se font dans n'importe quel ordre.
Sans fin : des exercices engendrés
Chaque bloc tire un exercice ; « Un autre exercice » en tire un nouveau, avec d'autres nombres. Réussir trois fois de suite est le bon signe.
Quartiles et valeurs atypiques, sur onze temps de réponse
Onze temps de réponse d'un site, en millisecondes, dans l'ordre où ils ont été relevés : 114, 118, 138, 126, 120, 141, 125, 136, 140, 381, 132.
- La médianems
- Le premier quartile ms
- Le troisième quartile ms
- L'écart interquartilems
- La barrière haute ms
- Le nombre de valeurs atypiques au-dessus de la barrière
Moyenne et médiane, avant et après une valeur extrême
Une série de neuf relevés : -5, 7, 9, 13, 14, 15, 18, 24, 220.
- La médiane
- La moyenne
- La médiane si la plus grande valeur est multipliée par 10
- La moyenne dans ce même cas
La droite des moindres carrés, sur cinq points
Cinq relevés : , , , , .
- La moyenne
- La moyenne
- La variance
- La covariance
- Le coefficient directeur de la droite des moindres carrés
- L'ordonnée à l'origine
Lire une boîte sans les données
On ne connaît d'une série que ses cinq nombres : minimum 12, , médiane 25, , maximum 72.
Cinq nombres, et ce qu'ils disent
- 1.
L'écart interquartile.
- 2.
La barrière haute .
- 3.
La barrière basse .
- 4.
L'écart entre et la médiane, à comparer à celui entre la médiane et .
La distribution est-elle symétrique ? Y a-t-il des valeurs atypiques ?
Elle est étirée vers le haut : la moitié haute de la boîte (13) est presque deux fois plus large que la moitié basse (7). Le maximum, 72, dépasse la barrière haute de 68 : il est atypique, et peut-être pas seul. Aucune valeur n'est atypique par le bas, puisque le minimum, 12, est au-dessus de .
Les vingt temps d'exécution
Une application a été chronométrée vingt fois, en secondes : 2,1 ; 2,3 ; 2,4 ; 2,4 ; 2,5 ; 2,7 ; 2,9 ; 3,0 ; 3,1 ; 3,2 ; 3,3 ; 3,4 ; 3,5 ; 3,5 ; 3,6 ; 3,8 ; 4,0 ; 4,1 ; 4,2 ; 8,7. La série est déjà rangée.
Les vingt temps d'exécution
- 1.
La médiane, en secondes.
- 2.
Le premier quartile, en secondes.
- 3.
Le troisième quartile, en secondes.
- 4.
La barrière haute, en secondes.
- 5.
La moyenne, en secondes.
Que dire au responsable, en trois phrases ?
Un temps typique de 3,25 s, la médiane, avec des exécutions entre 2,1 et 4,2 s. Une exécution à 8,7 s dépasse la barrière haute de 5,35 s : elle est atypique, peut-être un démarrage à froid, et elle est à expliquer avant de conclure. Elle tire la moyenne à 3,435 s et l'écart-type à 1,35 s ; sans elle, ils tombent à 3,16 s et 0,62 s.
Pour aller plus loin : d'où vient la formule de la droite
Établir les formules de et en annulant les dérivées partielles de la somme des carrés.
est une fonction de deux variables, et son minimum annule ses deux dérivées partielles. donne , soit : la droite passe par le point moyen. Ensuite, . En y remplaçant , il vient , d'où . C'est bien un minimum : est une somme de carrés, convexe en .