Régression prédictive ou causale : qu’essaye-t-on d’estimer ?
Une même famille de régression peut servir deux objectifs incompatibles : prévoir une dépense future ou estimer l’effet d’une intervention. L’estimand, les variables admissibles, le design et la validation changent.
Réponse directe
Séparer correctement une prévision à J+7 d’un effet causal total défini à J0.
Une même famille de régression peut servir deux objectifs incompatibles : prévoir une dépense future ou estimer l’effet d’une intervention. L’estimand, les variables admissibles, le design et la validation changent.
01
La réponse en 30 secondes
1
Une régression prédictive estime une valeur future pour une unité nouvelle et se juge sur des données non utilisées pour l’ajustement.
2
Une régression causale vise l’effet d’une intervention définie dans une population et dépend d’un design d’identification, pas du seul ajustement du modèle.
3
Une variable mesurée après le traitement peut améliorer la prévision à J+7 tout en étant inadmissible pour estimer l’effet causal total décidé à J0.
02
Trois niveaux de lecture
- 1
Décideur : précisez si la décision demande qui dépensera le plus ou ce que provoquerait l’envoi du rappel.
- 2
Praticien : fixez l’origine de prévision, l’intervention, le comparateur, l’outcome, la population et les variables disponibles à chaque instant.
- 3
Analyste : séparez perte prédictive, estimand causal, identification, estimation et portée de l’incertitude.
03
Situation marketing concrète
Une enseigne randomise à J0 un rappel par e-mail auprès de 2 400 clients éligibles. À J+7, elle veut prévoir la dépense à 30 jours avec les informations alors disponibles. Séparément, elle veut connaître l’effet total moyen de l’envoi du rappel. L’indice d’engagement à J+7 est utile pour la première question, mais il se situe après l’assignation pour la seconde.
04
Deux questions, deux estimands
Prédiction : pour un client observé à J+7, estimer E[Y|X] et l’erreur sur 600 clients holdout. Causalité : dans les 2 400 clients randomisés, estimer ATE = E[Y(1)−Y(0)], où T=1 impose un rappel unique à J0 puis aucun autre rappel jusqu’à J30, T=0 aucun rappel jusqu’à J30, et Y est la dépense en euros à 30 jours.
Prédiction
μ(x) = E[Y | X=x]Causalité
ATE = E[Y(1) − Y(0)]05
Pourquoi la même régression peut tromper
- Un RMSE faible ne définit ni intervention ni contrefactuel et ne prouve donc aucun effet causal.
- Ajouter l’engagement post-traitement aide à prévoir Y, mais bloque une partie du chemin T → M → Y lorsque l’on lit le coefficient de T.
- Sélectionner des variables parce qu’elles prédisent bien ne remplace pas le raisonnement causal sur confondeurs, médiateurs et colliders.
Arnold et al. (2020) Ramspek et al. (2021) Cinelli, Forney & Pearl (2022)
06
Intuition et chronologie causale
L et S précèdent T mais ne le causent pas, car T est randomisé. Le DAG déclaré est L,S → M; L,S → Y; T → M → Y; et T → Y. L est l’intention de base, S la dépense antérieure et M l’engagement à J+7. À J+7, M est une information prédictive disponible. Pour l’effet total de T décidé à J0, M est un médiateur à ne pas ajuster. La même colonne change donc de statut selon la question et l’instant de décision.
07
Données nécessaires et disponibilité
- customer_id; split train/holdout; baseline_intent_z et prior_spend_eur mesurés avant J0.
- reminder_assigned est l’assignation randomisée à J0; engagement_index_7d est mesuré après l’assignation.
- spend_30d_eur est l’outcome continu. Les 1 800 lignes train ajustent les prédictions; 600 lignes holdout évaluent leur transport interne.
08
Modèles formels et symboles
Prévision à J+7
Y = β₀ + β₁L + β₂S + β₃T + β₄M + εL: baseline_intent_z; S: prior_spend_eur; T: reminder_assigned; M: engagement_index_7d; Y: spend_30d_eur.
Effet total
Y = α₀ + τT + α₁L + α₂S + uτ: différence moyenne ajustée pour précision; M est exclu.
μ(x) est la moyenne conditionnelle de Y pour le vecteur de prédicteurs x. β₀ et α₀ sont les constantes; β₁ à β₄ et α₁ à α₂ sont les pentes; τ est l’ATE; ε et u sont les résidus des deux modèles.
09
Calcul déclaré, étape par étape
- 01
Générer ou charger les 2 400 lignes avec graine 20260819 et conserver le split fixé.
- 02
Ajuster deux prédictions sur train : sans M, puis avec M; évaluer uniquement sur holdout.
- 03
Rééchantillonner par paires les 600 erreurs holdout 2 000 fois pour l’IC de l’amélioration du RMSE.
- 04
Estimer τ sur les 2 400 unités en excluant M et calculer l’IC robuste HC1.
- 05
Ajuster séparément le modèle avec M pour montrer pourquoi son coefficient de T ne répond pas à l’ATE total.
10
Exemple numérique de bout en bout
Dataset synthétique MSC. Il ne décrit aucune campagne réelle.
| Objet | Spécification | Résultat |
|---|---|---|
| RMSE | Prévision sans M | 6,1006 € |
| RMSE | Prévision avec M | 5,1734 € |
| ATE | Modèle causal sans M | 8,3667 € |
| βT | M | Modèle ajusté sur M | 2,0657 € |
Gain prédictif
15,20%
95% CI [11,05%; 19,62%]
ATE
8,37 €
95% CI [7,87 €; 8,86 €]
Vérité du générateur
8,80 €
11
Hypothèses de validité
- Prédiction : mêmes définitions, disponibilité à J+7, population et mécanisme de mesure entre train, holdout et usage futur.
- Causalité : randomisation correctement mise en œuvre, cohérence des deux politiques, absence d’interférence, outcome observé et suivi non différentiel.
- Le modèle linéaire sert à estimer une différence moyenne et à gagner en précision; la randomisation, non la forme de la régression, identifie l’ATE.
Hernán & Robins, Causal Inference: What If Arnold et al. (2020) Cinelli, Forney & Pearl (2022)
12
Diagnostics et incertitude
01
Prédiction : comparer RMSE, MAE et R² sur le holdout; vérifier dérive, valeurs hors support et disponibilité réelle de M à l’origine de prévision.
02
Causalité : contrôler ratio d’assignation, équilibre des variables prétraitement, attrition, contamination et erreurs standards robustes HC1.
03
L’IC bootstrap de l’amélioration du RMSE décrit ce holdout synthétique. L’IC HC1 de l’ATE décrit le bruit d’échantillonnage sous le design déclaré, pas la validité externe.
13
Interpréter sans mélanger les objectifs
Le modèle à J+7 incluant M réduit le RMSE de 15,20 %, IC bootstrap à 95 % [11,05 %; 19,62 %]. C’est un gain prédictif sur ce holdout. Le modèle causal sans M estime l’ATE à 8,37 €, IC HC1 [7,87 €; 8,86 €], proche de la vérité synthétique 8,80 €. Avec M, le coefficient de T tombe à 2,07 € : il ne représente plus l’effet total.
14
Conclusions permises et interdites
Recevable
- Choisir le modèle incluant M pour une prévision faite à J+7 dans un contexte comparable.
- Rapporter 8,37 € comme estimation de l’effet total moyen sous le protocole randomisé déclaré.
Interdit
- Présenter la baisse du RMSE comme preuve que le rappel augmente la dépense.
- Lire 2,07 € comme effet causal total ou généraliser 8,37 € à une autre population sans nouvelle preuve.
15
Décision marketing possible
Conserver deux objets séparés : un score de dépense à J+7 qui peut utiliser M, et une estimation expérimentale de l’effet total qui l’exclut. Le premier priorise une action opérationnelle au jour 7; le second arbitre si la politique de rappel mérite d’être maintenue.
16
Quand utiliser chaque approche
01
Utiliser la régression prédictive quand la cible est un résultat futur individuel et que l’origine de prévision est explicite.
02
Utiliser l’estimation causale quand une décision modifie T et qu’un design crédible identifie le contrefactuel.
03
Ne pas utiliser ce modèle linéaire si l’outcome, le support ou le mécanisme d’assignation diffèrent matériellement sans nouvel audit.
04
Alternatives : validation temporelle et modèles non linéaires pour prévoir; différence de moyennes randomisée pour l’ATE; analyse de médiation dédiée si l’effet direct devient la cible.
17
Implémentations reproductibles
Python 3.13 et R 4.5 sont les références. SPSS 31 et SAS 9.4 sont des syntaxes secondaires pour le modèle causal; elles ne certifient ni l’équivalence des erreurs standards ni les hypothèses.
Python 3.13
python msc-p018-reference.py --csv msc-p018-predictive-causal.csvR 4.5
d <- read.csv("msc-p018-predictive-causal.csv")
train <- subset(d, split == "train"); hold <- subset(d, split == "holdout")
pre <- lm(spend_30d_eur ~ baseline_intent_z + prior_spend_eur + reminder_assigned, train)
post <- lm(spend_30d_eur ~ baseline_intent_z + prior_spend_eur + reminder_assigned + engagement_index_7d, train)
e0 <- hold$spend_30d_eur - predict(pre, hold)
e1 <- hold$spend_30d_eur - predict(post, hold)
rmse <- function(e) sqrt(mean(e^2))
c(pre_rmse=rmse(e0), post_rmse=rmse(e1), improvement=100*(rmse(e0)-rmse(e1))/rmse(e0))
set.seed(20260819)
b <- replicate(2000, { i <- sample(seq_along(e0), replace=TRUE); 100*(rmse(e0[i])-rmse(e1[i]))/rmse(e0[i]) })
quantile(b, c(.025, .975))
hc1 <- function(fit) {
X <- model.matrix(fit); e <- residuals(fit); n <- nrow(X); p <- ncol(X)
bread <- solve(crossprod(X)); meat <- crossprod(X, X * e^2)
se <- sqrt(diag((n/(n-p)) * bread %*% meat %*% bread))
cbind(estimate=coef(fit), se=se, lower=coef(fit)-1.959964*se, upper=coef(fit)+1.959964*se)
}
total <- lm(spend_30d_eur ~ reminder_assigned + baseline_intent_z + prior_spend_eur, d)
adjusted <- lm(spend_30d_eur ~ reminder_assigned + baseline_intent_z + prior_spend_eur + engagement_index_7d, d)
hc1(total)["reminder_assigned", ]
hc1(adjusted)["reminder_assigned", ]IBM SPSS Statistics 31
GET DATA /TYPE=TXT /FILE='msc-p018-predictive-causal.csv'
/DELCASE=LINE /DELIMITERS="," /ARRANGEMENT=DELIMITED /FIRSTCASE=2
/VARIABLES=customer_id A5 split A7 baseline_intent_z F12.6 prior_spend_eur F12.6
reminder_assigned F1.0 engagement_index_7d F12.6 spend_30d_eur F12.6.
REGRESSION /DEPENDENT spend_30d_eur
/METHOD=ENTER reminder_assigned baseline_intent_z prior_spend_eur.SAS 9.4
proc import datafile="msc-p018-predictive-causal.csv" out=p018 dbms=csv replace; guessingrows=max; run;
proc reg data=p018;
model spend_30d_eur = reminder_assigned baseline_intent_z prior_spend_eur / hcc hccmethod=1;
run; quit;18
Livrable final attendu
Un dossier contient deux fiches séparées : prédiction avec origine J+7, variables admissibles, métriques holdout et dérive; causalité avec protocole J0, DAG, estimand ATE, intervalle, menaces et population de validité. Les sorties ne sont jamais fusionnées dans une conclusion unique.
19
Sources scientifiques et niveau de preuve
- Shmueli (2010)
Fondement conceptuel : objectifs, données, validation et critères diffèrent entre explication et prédiction.
- Hernán & Robins, Causal Inference: What If
Manuel méthodologique complet : contrefactuels, ATE, randomisation, cohérence et interférence.
- Arnold et al. (2020)
Article méthodologique en accès ouvert : sélection des variables, évaluation et interprétation diffèrent selon la question.
- Cinelli, Forney & Pearl (2022)
Fondement causal : ajuster un médiateur peut bloquer l’effet total recherché.
- Ramspek et al. (2021)
Revue empirique : elle documente et borne la fréquence de confusion dans un échantillon de 180 études observationnelles.
Ces textes étayent la méthode. Le dataset, le mécanisme générateur et les résultats sont des créations synthétiques MSC, non une validation empirique externe.
Dataset · Outil
Connexions méthodologiques
