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
Modélisez un résultat numérique à partir de plusieurs prédicteurs avec lm(), interprétez chaque coefficient en maintenant les autres constants, et décidez quels prédicteurs comptent vraiment — la méthode pratique
Apprenez la régression linéaire multiple en R — modélisez un résultat numérique à partir de plusieurs prédicteurs avec lm(). Interprétez chaque coefficient (l’effet d’un prédicteur en maintenant les autres constants), lisez le R² et le F-test, écartez les prédicteurs qui ne contribuent pas, et prédisez de nouvelles valeurs.
23 juin 2026
7 juillet 2026
outcome = b0 + b1·x1 + b2·x2 + ….lm(outcome ~ x1 + x2 + x3, data = ...) et lisez le résumé.predict().La régression linéaire multiple étend la régression linéaire simple à plusieurs prédicteurs, ce qui vous permet de modéliser un résultat qui dépend de plus d’une chose — et, surtout, d’isoler l’effet de chaque prédicteur tout en maintenant les autres constants.
Le scénario : une entreprise répartit son budget publicitaire entre youtube, facebook et newspaper, et veut savoir quels canaux génèrent réellement des sales — et dans quelle mesure, en contrôlant les autres. Une régression multiple répond exactement à cette question.
Nous utilisons le jeu de données marketing de datarium — le budget (en milliers de dollars) dépensé sur youtube, facebook et newspaper, et les sales qui en résultent, pour 200 campagnes :
Ajoutez des prédicteurs avec +. lm() ajuste le modèle ; summary() en présente le résultat complet :
Call:
lm(formula = sales ~ youtube + facebook + newspaper, data = marketing)
Residuals:
Min 1Q Median 3Q Max
-10.5932 -1.0690 0.2902 1.4272 3.3951
Coefficients:
Estimate Std. Error t value Pr(>|t|)
(Intercept) 3.526667 0.374290 9.422 <2e-16 ***
youtube 0.045765 0.001395 32.809 <2e-16 ***
facebook 0.188530 0.008611 21.893 <2e-16 ***
newspaper -0.001037 0.005871 -0.177 0.86
---
Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
Residual standard error: 2.023 on 196 degrees of freedom
Multiple R-squared: 0.8972, Adjusted R-squared: 0.8956
F-statistic: 570.3 on 3 and 196 DF, p-value: < 2.2e-16
Lisez le résumé morceau par morceau — chaque coefficient est un effet ajusté pour les autres prédicteurs :
Chaque coefficient est un effet partiel. « Maintenir les autres constants » est ce qui distingue la régression multiple de trois régressions simples séparées — c’est pourquoi l’effet apparent de newspaper s’évanouit ici.
Un graphique des coefficients (estimation ± IC à 95 %) rend l’histoire évidente — youtube et facebook se situent nettement au-dessus de zéro, newspaper le chevauche :
library(ggpubr)
library(broom)
data("marketing", package = "datarium")
model <- lm(sales ~ youtube + facebook + newspaper, data = marketing)
est <- tidy(model, conf.int = TRUE)
est <- est[est$term != "(Intercept)", ]
ggdotchart(est, x = "term", y = "estimate",
add = "segments", rotate = TRUE, sorting = "descending",
color = "#3a86d4", dot.size = 6,
ggtheme = theme_pubr()) +
geom_hline(yintercept = 0, linetype = "dashed", color = "grey50") +
geom_errorbar(aes(ymin = conf.low, ymax = conf.high), width = 0.2,
color = "#3a86d4")
confint() donne la plage plausible de chaque coefficient. L’intervalle de newspaper inclut 0 — le signe qu’il ne contribue pas :
Newspaper est non significatif : réajustez donc sans lui et comparez. Le R² ajusté change à peine — un modèle plus simple qui s’ajuste tout aussi bien :
[1] 0.8961505
Analysis of Variance Table
Model 1: sales ~ youtube + facebook
Model 2: sales ~ youtube + facebook + newspaper
Res.Df RSS Df Sum of Sq F Pr(>F)
1 197 801.96
2 196 801.83 1 0.12775 0.0312 0.8599
Le F-test de anova() comparant les deux modèles est non significatif (p = 0.86) — conserver newspaper n’améliore pas l’ajustement, donc le modèle à deux prédicteurs est préférable (plus simple, même pouvoir explicatif).
Utilisez predict() sur le modèle retenu pour estimer les sales pour une nouvelle répartition de budget :
fit lwr upr
1 20.17605 19.83156 20.52055
Une campagne dépensant 200 k$ sur youtube et 40 k$ sur facebook devrait, selon la prédiction, vendre ~20 unités.
Une régression linéaire multiple a prédit les sales à partir des budgets publicitaires youtube, facebook et newspaper. Le modèle était significatif, F(3, 196) = 570, p < 0.001, expliquant 90 % de la variance (R² ajusté = 0.90). youtube (b = 0.046, IC à 95 % 0.043–0.049, p < 0.001) et facebook (b = 0.189, IC à 95 % 0.172–0.206, p < 0.001) étaient des prédicteurs positifs significatifs ; newspaper ne l’était pas (p = 0.86).
Le modèle est \(y = \beta_0 + \beta_1 x_1 + \dots + \beta_p x_p + \varepsilon\). Les moindres carrés choisissent les coefficients pour minimiser \(\sum_i (y_i - \hat{y}_i)^2\) ; sous forme matricielle \(\hat{\boldsymbol\beta} = (X^\top X)^{-1} X^\top y\). Chaque \(\hat{\beta}_j\) est l’effet de \(x_j\) ajusté pour tous les autres prédicteurs. Le R² ajusté pénalise le R² selon le nombre de prédicteurs \(p\), \(R^2_{adj} = 1 - (1 - R^2)\dfrac{n - 1}{n - p - 1}\), de sorte qu’il n’augmente que lorsqu’un nouveau prédicteur mérite sa place.
Les mêmes hypothèses que la régression simple — linéarité, variance résiduelle constante, résidus normaux, absence de valeurs aberrantes influentes — auxquelles s’ajoute l’absence de multicolinéarité sévère entre prédicteurs. La fonction plot(model) de base R donne les graphiques de diagnostic :

Voir hypothèses et diagnostics pour savoir comment lire et corriger chacune, et multicolinéarité et VIF pour vérifier que les prédicteurs ne sont pas trop corrélés entre eux.
Écartez ou ajoutez un prédicteur et observez le R² ajusté et les coefficients changer. Le bac à sable démarre au premier Run.
Demandez à Prova « ajuste une régression multiple sur mes données, interprète chaque coefficient en maintenant les autres constants, et dis-moi quels prédicteurs garder » — elle répond avec du code que vous pouvez exécuter et vous guide à travers le résultat. The runtime is the judge. Ask Prova →
Vous avez interprété un coefficient sans « maintenir les autres constants ». En régression multiple, chaque pente est un effet partiel — la variation du résultat par unité de ce prédicteur les autres prédicteurs étant fixes. Il peut différer en taille, voire en signe, de la pente de la régression simple.
Vous avez comparé des modèles avec le R² au lieu du R² ajusté. Le R² brut ne diminue jamais quand vous ajoutez un prédicteur, donc il favorise toujours le modèle le plus grand. Utilisez le R² ajusté (ou anova() / AIC) pour comparer — il ne récompense que les prédicteurs qui aident vraiment.
Un prédicteur a changé de signe ou perdu sa significativité quand vous en avez ajouté un autre. C’est de la multicolinéarité ou un facteur de confusion — les prédicteurs partagent de l’information. C’est attendu (newspaper ici) ; vérifiez le VIF quand c’est sévère.
Chaque coefficient est la variation attendue du résultat pour une augmentation d’une unité de ce prédicteur, en maintenant tous les autres prédicteurs constants. Pour sales ~ youtube + facebook, le coefficient de youtube est l’effet du budget youtube à budget facebook fixé — un effet partiel et ajusté, et non la relation brute.
Le R² est la part de variance expliquée ; il augmente toujours quand vous ajoutez un prédicteur, même inutile. Le R² ajusté pénalise le nombre de prédicteurs, de sorte qu’il ne monte que lorsqu’un nouveau prédicteur améliore le modèle plus que le hasard ne le ferait. Utilisez le R² ajusté pour comparer des modèles de tailles différentes.
Partez du modèle complet, regardez la p-value du t-test de chaque prédicteur, et écartez les non significatifs, en revérifiant le R² ajusté et une comparaison de modèles par anova() à chaque étape. Gardez les prédicteurs significatifs ou que vous avez une raison de fond de contrôler. (La sélection automatisée — pas à pas, pénalisée — relève de la modélisation prédictive dans le pilier Machine Learning.)
Parce que les prédicteurs sont corrélés : une fois que vous en contrôlez un, la contribution propre de l’autre peut se réduire à rien (newspaper ici). C’est tout l’intérêt de la régression multiple — elle montre l’effet ajusté pour les autres. Quand les prédicteurs sont fortement corrélés, vérifiez la multicolinéarité / VIF.
sales ~ youtube + facebook + newspaper, puis sales ~ youtube + facebook. Écarter newspaper change-t-il le R² ajusté ?Remplissez le blanc avec newspaper, puis réajustez sans lui. Comparez les lignes Adjusted R-squared. Pour la question 2, rappelez-vous que le coefficient du modèle multiple est l’effet en maintenant les autres canaux constants.
Écarter newspaper laisse le R² ajusté pratiquement inchangé — il ne contribue à rien. Pour la question 2 : le résultat de la régression multiple décrit la contribution réelle de newspaper. Sa pente en régression simple est positive seulement parce que les budgets newspaper sont corrélés aux dépenses youtube/facebook ; une fois ces canaux contrôlés, l’effet propre de newspaper est nul.
Vous savez maintenant mener une régression linéaire multiple en R : ajuster plusieurs prédicteurs avec lm(outcome ~ x1 + x2 + x3), interpréter chaque coefficient comme un effet partiel en maintenant les autres constants, comparer les modèles avec le R² ajusté et anova(), écarter les prédicteurs qui ne méritent pas leur place, et prédire de nouvelles valeurs avec predict(). C’est le cheval de bataille de la modélisation appliquée — et la base pour les prédicteurs catégoriels, les interactions et les diagnostics.
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 = {Régression linéaire multiple en R : plusieurs prédicteurs},
date = {2026-06-23},
url = {https://www.datanovia.com/learn/biostatistics/regression/multiple-linear-regression-in-r},
langid = {fr}
}