DataManip Insights ÉPISODE 1Causalité & ExpérimentationGratuit
🔀 Épisode 1 · Corrélation n'est pas causalité

« Quand les glaces se vendent, la clim consomme. »
Les glaces font-elles tourner la clim ?

Deux grandeurs qui varient ensemble ne prouvent pas que l'une agit sur l'autre. Souvent, une troisième les pilote toutes les deux : un confondeur. L'ignorer fabrique des effets fantômes, et parfois en cache de vrais.

🎯 L'analogie clé

Dans une courbe de charge, le froid extérieur explique à la fois la consommation de chauffage et les ventes de bouillottes. Si vous reliez directement les deux, vous « découvrez » que les bouillottes font consommer du courant. Il faut comparer à température égale.

Trois structures

Qui cause quoi ?
Dessinez d'abord le graphe.

Avant de calculer, on dessine les flèches de causalité supposées. Trois motifs reviennent partout, et chacun appelle un traitement différent.

🌡️
Confondeur Z → X et Z → Y
Z pilote X et Y (la température pilote glaces et clim). X et Y sont liés sans que X agisse sur Y. Il faut contrôler Z.
🎯
Collider X → M ← Y
M est causé à la fois par X et par Y. Contrôler M ou sélectionner sur M crée une fausse association entre X et Y. Il ne faut pas contrôler M.
🔗
Médiateur X → M → Y
M transmet l'effet de X vers Y. Le contrôler retire une partie de l'effet qu'on cherche à mesurer. Contrôlez-le seulement si vous cherchez l'effet direct.
Le point clé : « contrôler pour plus de variables » n'est pas une précaution sans risque. Le bon ensemble de variables dépend de la structure causale, pas de la disponibilité des colonnes.
À vous de manipuler

Faites apparaître
un effet qui n'existe pas.

Z est la température, X les ventes de glaces, Y la consommation de climatisation (tout est centré-réduit). Vous réglez à quel point Z pilote chaque grandeur, et le vrai effet de X sur Y. Les couleurs séparent les jours selon la température : à température égale, la relation disparaît.

Ventes de glaces (X) et consommation de clim (Y), jours colorés par température
Chaque point est un jour

Les trois groupes de température sont des tiers des jours. La pente « à température égale » vient d'une régression de Y sur X et Z ; elle estime le vrai effet si Z est le seul confondeur.

Corrélation X–Y
-
sur l'échantillon
Pente naïve
-
Y selon X seul
Pente ajustée sur Z
-
Y selon X et Z
Vrai effet
-
celui du simulateur
À retenir : avec Z → X = 1 et Z → Y = 1,5, la pente naïve vaut environ 0,7 alors que le vrai effet est nul (corrélation 0,54 sur 200 jours). Avec un vrai effet de 0,5 mais un Z → Y négatif, la pente naïve peut même devenir négative.
Le piège inverse

Contrôler trop,
c'est aussi se tromper.

Ajoutons une variable M causée à la fois par X et par Y (un collider). Les quatre barres sont l'effet de X estimé selon ce que l'on contrôle. Seule la bonne spécification retrouve le vrai effet (trait orange).

Effet de X estimé selon les variables contrôlées
Effet de X estimé selon la variable contrôlée (trait orange = vrai effet)

Ici Z → X vaut 1 et Z → Y vaut 1,5. Les erreurs sont mesurées sur un seul échantillon : le bouton « Nouveaux jours » tire un autre échantillon pour voir leur variabilité.

Erreur avec le bon contrôle (Z)
-
écart au vrai effet
Erreur sans contrôle
-
confondeur oublié
Erreur en contrôlant M
-
collider mal traité
Le point clé : avec un vrai effet de 0,3, ne rien contrôler donne environ 1,05, contrôler Z retrouve 0,30, mais contrôler M donne environ −0,35 : un effet de signe opposé, fabriqué par le contrôle lui-même.
En pratique

Quatre réflexes
avant de conclure.

Voici comment aborder une question causale sans se faire piéger, puis le code qui reproduit ces régressions.

✏️
Dessinez le graphe
Notez qui cause quoi avant de toucher aux données. Une flèche discutable se discute avec un expert métier, pas avec une régression.
🧰
Contrôlez les causes communes
Tout ce qui pilote à la fois la cause supposée et l'effet est candidat : saison, taille du site, âge de l'équipement.
🚫
Ne contrôlez pas les conséquences
Ce qui est causé par X ou par Y (résultat intermédiaire, sélection, « client actif ») ne se contrôle pas.
🎲
Préférez l'expérience
Un tirage au sort casse le lien entre Z et X : le confondeur disparaît. Les prochains épisodes montrent comment faire sans.
Python · confondeur.py
import numpy as np
import statsmodels.api as sm

rng = np.random.default_rng(0)
n = 200
z = rng.normal(size=n)                    # température (confondeur)
x = 1.0 * z + rng.normal(size=n)          # ventes de glaces
y = 1.5 * z + 0.0 * x + rng.normal(size=n)  # clim : AUCUN effet de x

naif = sm.OLS(y, sm.add_constant(x)).fit()
ajuste = sm.OLS(y, sm.add_constant(np.column_stack([x, z]))).fit()
print(naif.params[1])       # ≈ 0,7 : effet fantôme
print(ajuste.params[1])     # ≈ 0 : à température égale, rien
Test rapide

Vérifiez votre compréhension.

Une analyse montre que les agences qui ont déployé un nouvel outil de pilotage ont de meilleurs résultats. Quelle question posez-vous en premier ?

Ce qu'il faut retenir

Épisode suivant · Série Causalité & Expérimentation

Tests A/B : puissance et regards répétés

Combien d'observations faut-il pour détecter un petit effet, et pourquoi regarder les résultats tous les jours fausse le test.

ACCÈS COMPLET

Cet épisode est gratuit. Les 282 autres t'attendent.

Statistiques, finance quantitative, machine learning, deep learning, LLM, agents IA, MLOps : 321 épisodes avec des simulateurs à manipuler, pas des vidéos.

99 € (+ TVA selon le pays) · accès à vie · remboursement possible sous 7 jours
Débloquer les 282 épisodes · 99 € J'ai déjà une clé de licence
FULL ACCESS

This episode is free. The other 282 are waiting for you.

Statistics, quantitative finance, machine learning, deep learning, LLMs, AI agents, MLOps: 321 interactive episodes with simulators to play with, not videos.

€99 (+ VAT depending on country) · lifetime access · 7-day refund
Unlock the 282 episodes · €99 I already have a license key