data("marketing", package = "datarium")
head(marketing, 4) youtube facebook newspaper sales
1 276.12 45.36 83.04 26.52
2 53.40 47.16 54.12 12.48
3 20.64 55.08 83.16 11.16
4 181.80 49.56 70.20 22.20
Quand l’effet d’un prédicteur dépend d’un autre — ajoutez un terme d’interaction avec *, interprétez-le, et testez si la synergie est réelle face au modèle additif
Modélisez les effets d’interaction en régression linéaire avec R. Ajoutez un terme d’interaction avec l’opérateur *, interprétez le coefficient d’interaction (comment l’effet d’un prédicteur change avec un autre), et testez si le modèle avec interaction surpasse le modèle additif avec anova() et le R² ajusté. Le principe hiérarchique, illustré sur les données marketing.
23 juin 2026
7 juillet 2026
* : lm(y ~ x1 * x2) ajuste les effets principaux et le terme d’interaction x1:x2.anova() et le R² ajusté.Une régression multiple standard est additive : elle suppose que l’effet de chaque prédicteur est le même quels que soient les autres. Souvent, c’est faux. Dépenser en publicité facebook peut rendre la publicité youtube plus efficace — un effet d’interaction (ou de synergie).
Le scénario : le rendement de la publicité youtube sur les ventes dépend-il de ce qui est aussi dépensé en facebook ? Un terme d’interaction répond à cette question — et vous dit si modéliser la synergie améliore réellement l’ajustement.
Nous utilisons le jeu de données marketing du package datarium — des budgets publicitaires et les sales résultantes pour 200 campagnes :
D’abord le modèle additif standard — youtube et facebook, chacun avec un effet fixe :
Call:
lm(formula = sales ~ youtube + facebook, data = marketing)
Residuals:
Min 1Q Median 3Q Max
-10.5572 -1.0502 0.2906 1.4049 3.3994
Coefficients:
Estimate Std. Error t value Pr(>|t|)
(Intercept) 3.50532 0.35339 9.919 <2e-16 ***
youtube 0.04575 0.00139 32.909 <2e-16 ***
facebook 0.18799 0.00804 23.382 <2e-16 ***
---
Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
Residual standard error: 2.018 on 197 degrees of freedom
Multiple R-squared: 0.8972, Adjusted R-squared: 0.8962
F-statistic: 859.6 on 2 and 197 DF, p-value: < 2.2e-16
Cela suppose que l’effet de youtube est le même à chaque budget facebook. R² ajusté ≈ 0.896.
Utilisez l’opérateur * — youtube * facebook se développe en youtube + facebook + youtube:facebook (les deux effets principaux plus l’interaction). (Écrivez youtube:facebook si vous voulez uniquement le terme d’interaction.)
Call:
lm(formula = sales ~ youtube * facebook, data = marketing)
Residuals:
Min 1Q Median 3Q Max
-7.6039 -0.4833 0.2197 0.7137 1.8295
Coefficients:
Estimate Std. Error t value Pr(>|t|)
(Intercept) 8.100e+00 2.974e-01 27.233 <2e-16 ***
youtube 1.910e-02 1.504e-03 12.699 <2e-16 ***
facebook 2.886e-02 8.905e-03 3.241 0.0014 **
youtube:facebook 9.054e-04 4.368e-05 20.727 <2e-16 ***
---
Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
Residual standard error: 1.132 on 196 degrees of freedom
Multiple R-squared: 0.9678, Adjusted R-squared: 0.9673
F-statistic: 1963 on 3 and 196 DF, p-value: < 2.2e-16
Chaque coefficient — y compris youtube:facebook — est significatif, il y a donc une véritable interaction. L’équation ajustée est :
sales = 8.10 + 0.0191·youtube + 0.0289·facebook + 0.00091·(youtube × facebook)
Lisez-la en factorisant un prédicteur :
(0.0191 + 0.00091 × facebook) par unité. Le rendement de youtube augmente donc avec le budget facebook — à facebook = 0, une hausse youtube de 1 k$ ajoute ~19 unités de ventes par 1000$ ; à facebook = 30 elle ajoute ~19 + 0.9 × 30 ≈ 46.(0.0289 + 0.00091 × youtube) par unité.C’est la synergie : les deux canaux s’amplifient mutuellement.
Le principe hiérarchique. Si vous conservez un terme d’interaction, conservez aussi ses effets principaux dans le modèle — même si la p-value propre d’un effet principal n’est pas significative. Une interaction sans ses effets principaux est presque toujours mal spécifiée et difficile à interpréter.
Comparez le modèle avec interaction au modèle additif. Le modèle avec interaction devrait avoir un R² ajusté plus élevé, et un F-test anova() vous dit si l’amélioration est significative :
additive interaction
0.8961505 0.9672975
Analysis of Variance Table
Model 1: sales ~ youtube + facebook
Model 2: sales ~ youtube * facebook
Res.Df RSS Df Sum of Sq F Pr(>F)
1 197 801.96
2 196 251.26 1 550.7 429.59 < 2.2e-16 ***
---
Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
Le R² ajusté passe de 0.90 à 0.97, et le F-test anova() est hautement significatif (p < 2e-16) — ajouter l’interaction améliore significativement le modèle. Pour ces données, le modèle avec interaction l’emporte.
Tracez youtube contre sales, coloré selon une scission de facebook — les droites ont des pentes différentes, ce qui est l’ interaction :
library(ggpubr)
data("marketing", package = "datarium")
marketing$fb_level <- ifelse(marketing$facebook > median(marketing$facebook),
"High facebook", "Low facebook")
ggscatter(marketing, x = "youtube", y = "sales",
color = "fb_level", palette = "jco",
add = "reg.line", legend = "right",
xlab = "YouTube budget (k$)", ylab = "Sales") +
ggpubr::stat_cor(aes(color = fb_level))
La droite High facebook est plus pentue — youtube rapporte davantage quand les dépenses facebook sont élevées. Des droites non parallèles sont la signature visuelle d’une interaction.
Une régression linéaire multiple a testé l’interaction entre la publicité youtube et facebook sur les ventes. L’ interaction était significative (b = 0.0009, p < 0.001), et le modèle avec interaction expliquait nettement plus de variance que le modèle additif (R² ajusté = 0.97 vs 0.90 ; F(1, 196) = 430, p < 0.001). L’ effet de youtube sur les ventes augmentait avec le budget facebook — une synergie entre les deux canaux.
Avec une interaction, \(y = \beta_0 + \beta_1 x_1 + \beta_2 x_2 + \beta_3 (x_1 x_2)\). Factorisez \(x_1\) : \(y = \beta_0 + (\beta_1 + \beta_3 x_2)\,x_1 + \beta_2 x_2\) — ainsi la pente de \(x_1\) n’est plus constante mais vaut \((\beta_1 + \beta_3 x_2)\), une droite en \(x_2\). \(\beta_3\) est le taux auquel la pente de \(x_1\) change par unité de \(x_2\) (et, symétriquement, la pente de \(x_2\) par unité de \(x_1\)). \(\beta_3 = 0\) ramène au modèle additif.
Newspaper interagit-il avec youtube comme le fait facebook ? Ajustez sales ~ youtube * newspaper et examinez le terme d’interaction. Le bac à sable démarre au premier Run.
Demandez à Prova « ajoute un terme d’interaction à ma régression et dis-moi s’il améliore significativement le modèle » — elle répond avec du code que vous pouvez exécuter sur vos propres données et interprète l’interaction. The runtime is the judge. Ask Prova →
Vous avez supprimé un effet principal non significatif mais conservé l’interaction. Cela viole le principe hiérarchique — conservez les deux effets principaux dès que l’interaction est dans le modèle, sinon les coefficients deviennent ininterprétables.
Vous avez interprété le coefficient d’effet principal comme l’effet global du prédicteur. Avec une interaction, le coefficient de youtube est son effet uniquement quand facebook = 0 — pas son effet en moyenne. L’effet réel est (b_youtube + b_interaction × facebook), qui varie.
Vous avez ajouté toutes les interactions possibles. Les interactions se multiplient vite et surajustent. Ajoutez-les là où vous avez une raison d’en attendre une (ou un signal graphique clair), puis confirmez avec anova() — ne pêchez pas au hasard.
Utilisez l’opérateur * dans la formule : lm(y ~ x1 * x2) ajuste à la fois les deux effets principaux et l’ interaction x1:x2. Utilisez les deux-points (x1:x2) pour le terme d’interaction seul, mais vous voudrez presque toujours * pour que les effets principaux suivent (le principe hiérarchique).
C’est de combien la pente d’un prédicteur change pour une hausse d’une unité de l’autre. Pour youtube:facebook = 0.0009, chaque unité supplémentaire de facebook relève l’effet par unité de youtube de 0.0009 (et vice versa). L’effet complet de youtube est b_youtube + b_interaction × facebook.
Si un modèle inclut un terme d’interaction, il devrait aussi inclure les effets principaux des variables de cette interaction — même quand ces effets principaux ne sont pas individuellement significatifs. Les retirer rend l’ interaction mal spécifiée et le modèle difficile à interpréter.
Comparez le modèle avec interaction au modèle additif avec anova(model_add, model_int) (un F-test significatif signifie que l’interaction améliore l’ajustement) et vérifiez que le R² ajusté augmente. Si le terme d’interaction est non significatif et que le R² ajusté ne s’améliore pas, préférez le modèle additif plus simple.
sales ~ youtube * newspaper. L’interaction youtube–newspaper est-elle significative comme l’est celle youtube–facebook ?youtube est 0.019, plus petit que son 0.046 dans le modèle additif. Cela signifie-t-il que youtube est devenu moins important ? Pourquoi ou pourquoi pas ?Remplissez le blanc avec newspaper, puis comparez sa p-value d’interaction avec celle de facebook. Pour la question 2, rappelez-vous ce que signifie le coefficient d’effet principal quand une interaction est présente (facebook = 0).
L’interaction youtube–newspaper est bien plus faible/non significative comparée à youtube–facebook — newspaper n’amplifie pas youtube comme le fait facebook. Pour la question 2 : non, youtube n’est pas devenu moins important. Avec l’interaction dans le modèle, le coefficient de youtube (0.019) est son effet uniquement quand facebook = 0 ; l’ effet réel est 0.019 + 0.0009 × facebook, qui à un budget facebook typique dépasse le 0.046 additif. Le nombre a changé de signification, pas d’importance.
* facteur (même syntaxe *) ; voir aussi l’ANOVA à deux facteurs.Vous savez maintenant modéliser les effets d’interaction en régression avec R : ajoutez un terme avec *, interprétez le coefficient d’interaction comme une pente-qui-change, respectez le principe hiérarchique, et testez si la synergie est réelle en comparant le modèle avec interaction au modèle additif avec anova() et le R² ajusté. Quand les prédicteurs s’amplifient mutuellement, une interaction capture ce qu’un modèle additif manque.
Prouvez que vous savez le faire. Maîtrisez toute la série Régression en R — suivez votre parcours, construisez des projets et obtenez un certificat.
Passez à Pro — Prova illimité sur vos propres données et un certificat vérifiable qui atteste la compétence.
dès 15 $/mois facturé annuellement
✓ Vous êtes Pro — continuez. The runtime is the judge.
Prêt à passer à la vitesse supérieure ?
Recevez les nouvelles leçons R & Python par e-mail
Pratique, reproductible, sans spam. Désinscription à tout moment.
Double opt-in. Nous ne partageons jamais votre e-mail.
Chaque résultat de cette page a été produit par le code montré, exécuté au moment du build contre un environnement R figé — modifiez n’importe quel bloc et faites Run pour le reproduire vous-même.
@online{2026,
author = {},
title = {Effets d’interaction en régression avec R},
date = {2026-06-23},
url = {https://www.datanovia.com/learn/biostatistics/regression/interaction-effects-in-regression-in-r},
langid = {fr}
}