Mesurer et interpréter une corrélation
Deux mesures augmentent souvent ensemble. Comment résumer ce lien sans écrire qu'une mesure provoque l'autre ?
Cette fiche travaille l'analyse de deux mesures numériques, une compétence du bloc BC02. Elle part de quatre couples visibles, puis passe aux articles vendus sur Olist.
| Ce qui te bloque | Ce que tu travailles ici |
|---|---|
| Lire le signe et la valeur d'une corrélationUne mesure de la force du lien linéaire entre deux variables, sur une échelle de -1 à 1. Zéro veut dire aucun lien linéaire, et un signe négatif veut dire que l'une baisse quand l'autre monte. | Sections 1 et 2 |
| Calculer sur Olist et écrire une conclusion limitée | Sections 3 et 4 |
| Refaire l'analyse sur deux autres variables | Section 5 |
Exécute les calculs au fil de la fiche. Si tu lis depuis plus de vingt minutes sans avoir modifié une requête ou écrit une interprétation, ferme la fiche et reprends l'essai en cours.
1. Prévoir le sens du lien
Voici quatre colis fictifs. Une ligne représente un colis observé, avec son poids et ses frais de livraison.
| poids en kg | frais en euros |
|---|---|
| 1 | 5 |
| 2 | 7 |
| 3 | 8 |
| 4 | 10 |
Avant de calculer, réponds : quand le poids augmente, les frais ont-ils plutôt tendance à augmenter, à diminuer ou à partir dans les deux sens ? Tu prédis ainsi le signe de la corrélation.
Exécute ensuite le calcul :
WITH colis(poids_kg, frais_eur) AS (
VALUES (1.0, 5.0),
(2.0, 7.0),
(3.0, 8.0),
(4.0, 10.0)
)
SELECT ROUND(CORR(poids_kg, frais_eur)::numeric, 3) AS correlation
FROM colis;Le résultat vaut 0,992. Il est positif, comme la prédiction, et proche de 1 : les quatre points sont proches d'une droite qui monte. Ils ne sont pas exactement alignés, donc le résultat n'est pas 1.
CORR calcule ici le coefficient de corrélation linéaire de Pearson : une
mesure de l'alignement des couples autour d'une droite. Chaque ligne doit porter
le couple qui a un sens dans la question : ici, un poids et des frais pour le
même colis.
2. Lire le nombre avant de lui donner un sens métier
Une corrélation est comprise entre -1 et 1 :
| Valeur | Disposition résumée |
|---|---|
| proche de 1 | quand une variable augmente, l'autre augmente aussi, près d'une droite |
| proche de -1 | quand une variable augmente, l'autre diminue, près d'une droite |
| proche de 0 | pas de lien linéaire net dans les couples observés |
Le signe donne le sens. La distance à zéro renseigne sur l'alignement autour d'une droite. Elle ne dit ni combien une variable augmente, ni si le lien est utile dans le métier. Il n'existe pas de seuil universel qui transforme automatiquement une valeur en lien « faible » ou « fort ».
Ouvre le bac à sable SQL, colle la première requête et modifie le dernier colis : garde son poids à 4 kg et remplace ses frais par 5 euros. Prédis si la corrélation se rapprochera de 1 ou de 0, puis exécute la requête modifiée.
Vérifier la modification
Avec les couples (1 ; 5), (2 ; 7), (3 ; 8) et (4 ; 5), la corrélation
vaut 0,086. Le dernier point casse presque entièrement l'alignement qui
montait. Quatre observations restent trop peu nombreuses pour établir une
règle générale : cet essai sert à voir comment le calcul réagit.
Une corrélation vaut -0,78 entre deux mesures. Quelle lecture respecte ce calcul ?
3. Calculer sur les articles Olist
On examine une hypothèseUne attente formulée avant le calcul, avec les données et la comparaison qui permettront de l’examiner. Un écart observé décrit ces données ; il ne démontre pas à lui seul une cause ni une règle valable ailleurs. : dans les articles vendus sur Olist, un produit plus
lourd est associé à des frais de port plus élevés. order_items contient une
ligne par article d'une commande. products fournit le poids du produit et la
jointureRapprocher deux tables sur une colonne commune, pour lire ensemble des informations qui sont stockées séparément. réunit les deux mesures sur la même ligne.
Avant d'exécuter, prédis le signe. Note aussi l'unité d'observation : le calcul porte sur des articles vendus, pas sur des produits distincts ni sur des commandes entières.
SELECT COUNT(*) AS articles,
ROUND(CORR(p.product_weight_g, i.freight_value)::numeric, 3) AS correlation_poids_fret
FROM order_items i
JOIN products p ON p.product_id = i.product_id
WHERE p.product_weight_g IS NOT NULL
AND i.freight_value IS NOT NULL;La requête retient 112 632 articles pour lesquels les deux mesures sont connues. Elle donne une corrélation de 0,610.
Une conclusion fidèle au calcul est : « parmi les 112 632 articles Olist retenus, le poids du produit et les frais de port présentent une corrélation linéaire positive de 0,610 ».
Cette phrase ne prédit pas les frais d'un article précis. Elle ne dit pas non plus que le poids explique seul les frais. La distance, le vendeur ou les modalités de livraison sont des explications possibles à examiner avec d'autres données ; cette requête ne les teste pas.
4. Distinguer corrélation et causalité
Une corrélation décrit les couples observés. Une causalité affirme qu'une modification produit un effet. Pour passer de l'une à l'autre, il faut écarter les autres explications et apporter un protocole ou des données adaptés.
Ici, la requête permet de dire que poids et frais varient ensemble dans cette population. Elle ne permet pas d'annoncer combien les frais baisseraient si on allégeait un produit. Ce serait une nouvelle question, avec d'autres variables à contrôler.
Regarde aussi les points avant de résumer. Le nombre ne montre pas la forme du nuage, et quelques points isolés peuvent déplacer le résultat. La fiche Regarder les points avant de conclure te fait comparer des formes et repérer des points isolés sur les séries d'Anscombe.
Poids et frais de port ont une corrélation positive de 0,610 sur les articles retenus. Quelle action est justifiée par ce seul résultat ?
5. Transférer sur deux autres variables
Dans products, une ligne représente un produit. Prédis le signe de la
corrélation entre sa longueur et sa largeur, puis exécute ce calcul sans
reprendre la jointure précédente :
SELECT COUNT(*) AS produits,
ROUND(CORR(product_length_cm, product_width_cm)::numeric, 3) AS correlation_longueur_largeur
FROM products
WHERE product_length_cm IS NOT NULL
AND product_width_cm IS NOT NULL;Écris ensuite une phrase qui contient la population, les deux variables, le signe et la valeur. Ajoute une seconde phrase qui nomme une conclusion causale que ce calcul ne permet pas.
Contrôler le calcul et les deux phrases
Le résultat porte sur 32 949 produits et vaut 0,542. Une formulation possible est : « parmi les 32 949 produits dont les deux dimensions sont connues, longueur et largeur présentent une corrélation linéaire positive de 0,542 ». Ce calcul ne montre pas qu'allonger un produit provoquerait un élargissement : il décrit les dimensions des produits présents dans la base.
Pour un dernier essai dans le bac à sable SQL, écris une nouvelle
requête pour la longueur et la hauteur. Avant d'exécuter, note le signe attendu.
Le calcul et le filtre doivent porter sur ces deux mêmes colonnes : remplace
product_width_cm par product_height_cm dans CORR et dans le WHERE.
Rends la requête, son effectif et deux phrases : le constat permis par le
résultat, puis une cause qu'il faudrait encore vérifier.
Si tu bloques sur la construction
Pars de l'unité d'observation : une ligne de products représente un produit.
Sélectionne d'abord COUNT(*), puis CORR avec longueur et hauteur. Termine par
deux conditions IS NOT NULL, une pour chacune de ces colonnes. Relis les noms
des colonnes dans le calcul et dans le filtre avant d'exécuter.