Hypothèses et diagnostics de la régression linéaire avec R

Une fois le modèle ajusté, vérifiez-le. Lisez les quatre graphiques de diagnostic, testez la linéarité, la normalité et l’homoscédasticité, et repérez les valeurs aberrantes et les points influents — avec la solution lorsqu’une hypothèse n’est pas respectée

Vérifiez les hypothèses d’une régression linéaire avec R : linéarité, normalité des résidus, homogénéité de la variance (homoscédasticité) et observations influentes. Lisez les quatre graphiques de diagnostic de base R (résidus vs valeurs ajustées, Q-Q normal, échelle-localisation, résidus vs effet de levier), détectez les valeurs aberrantes, les points à fort effet de levier et les points influents avec la distance de Cook — et la solution pour chaque violation. Exécutez le tout en direct.

Date de publication

23 juin 2026

Modifié

8 juillet 2026

AstucePoints clés
  • Une fois la régression ajustée, vérifiez-la toujours. La régression linéaire suppose la linéarité, des résidus normaux, une variance résiduelle constante (homoscédasticité) et aucune valeur aberrante influente.
  • Les quatre graphiques de diagnostic de base R — plot(model) — vérifient tout cela : Residuals vs Fitted (linéarité), Normal Q-Q (normalité), Scale-Location (homoscédasticité), Residuals vs Leverage (influence).
  • Les résidus sont l’écart entre les valeurs observées et ajustées ; presque chaque diagnostic lit les résidus.
  • Valeurs aberrantes = valeurs de réponse extrêmes (résidu standardisé > 3) ; fort effet de levier = valeurs de prédicteur extrêmes (valeur du chapeau > 2(p+1)/n) ; influent = modifie l’ajustement lorsqu’on le retire (distance de Cook > 4/(n−p−1)).
  • Chaque violation a sa solution : transformer un prédicteur (non-linéarité), transformer la réponse (hétéroscédasticité), ou examiner/exclure un point influent.

Introduction

Ajuster une régression linéaire n’est que la moitié du travail — un modèle peut renvoyer une pente, un R² et une p-value tout en violant discrètement les hypothèses sur lesquelles reposent ces nombres. Les diagnostics de régression vérifient si le modèle s’ajuste réellement aux données, pour que vous puissiez faire confiance au résultat (ou le corriger).

La régression linéaire suppose quatre choses. Cette leçon montre comment vérifier chacune avec les graphiques de diagnostic intégrés de R, comment les lire, et — la partie pratique — quoi faire lorsqu’une hypothèse n’est pas respectée.

Les données et un modèle à vérifier

Nous utilisons le jeu de données marketing de datarium et ajustons un modèle simple prédisant sales à partir du budget publicitaire youtube :

data("marketing", package = "datarium")

model <- lm(sales ~ youtube, data = marketing)
model

Call:
lm(formula = sales ~ youtube, data = marketing)

Coefficients:
(Intercept)      youtube  
    8.43911      0.04754  

La droite ajustée est sales = 8.44 + 0.0475 × youtube. Vérifions maintenant si ce modèle est solide.

Valeurs ajustées et résidus

Deux concepts sous-tendent chaque diagnostic. La valeur ajustée (prédite) est ce que le modèle attend pour un prédicteur donné ; le résidu est l’écart entre la valeur observée et cette valeur ajustée :

data("marketing", package = "datarium")
model <- lm(sales ~ youtube, data = marketing)

marketing$fitted <- fitted(model)

plot(marketing$youtube, marketing$sales, pch = 19, col = "grey40",
     xlab = "YouTube budget (k$)", ylab = "Sales")
abline(model, col = "#3a86d4", lwd = 2)
segments(marketing$youtube, marketing$sales,
         marketing$youtube, marketing$fitted, col = "red")

A scatter plot of sales versus youtube budget with the fitted regression line in blue and red vertical segments from each point to the line representing the residual errors.

Chaque segment rouge est une erreur résiduelle. Les diagnostics qui suivent examinent tous la distribution de ces résidus — si le modèle est correct, les résidus devraient être sans motif, uniformément répartis et à peu près normaux. Vous pouvez les extraire directement en base R :

data("marketing", package = "datarium")
model <- lm(sales ~ youtube, data = marketing)

diag <- data.frame(
  fitted     = fitted(model),         # predicted sales
  resid      = residuals(model),      # observed - fitted
  std_resid  = rstandard(model),      # standardized residual (outlier check)
  hat        = hatvalues(model),      # leverage (extreme predictor check)
  cooksd     = cooks.distance(model)  # influence (Cook's distance)
)
head(diag, 4)
     fitted    resid std_resid         hat      cooksd
1 21.564929 4.955071 1.2733486 0.009703067 0.007943433
2 10.977569 1.502431 0.3865746 0.012168549 0.000920434
3  9.420269 1.739731 0.4486150 0.016493630 0.001687550
4 17.081273 5.118727 1.3123012 0.005013546 0.004338753

Les quatre graphiques de diagnostic

plot(model) produit les quatre graphiques de diagnostic standard en une fois — le moyen le plus rapide d’examiner un modèle :

data("marketing", package = "datarium")
model <- lm(sales ~ youtube, data = marketing)

par(mfrow = c(2, 2))
plot(model)

The four base-R regression diagnostic plots in a 2x2 grid: residuals vs fitted (a slight curve), normal Q-Q (points near the line), scale-location (an upward trend signalling heteroscedasticity), and residuals vs leverage.

par(mfrow = c(1, 1))

Lisez-les comme quatre vérifications :

  1. Residuals vs Fittedlinéarité. Une ligne rouge à peu près horizontale, sans motif, est bon signe.
  2. Normal Q-Qnormalité des résidus. Les points devraient suivre de près la ligne pointillée.
  3. Scale-Locationhomoscédasticité (variance constante). Une ligne plate avec des points uniformément répartis est bon signe.
  4. Residuals vs Leveragepoints influents. Surveillez les points situés hors des contours de la distance de Cook.

Chaque graphique étiquette les 3 observations les plus extrêmes par numéro de ligne (ici #26, #36, #179) — à examiner, mais pas automatiquement un problème. Les sections suivantes traitent chaque hypothèse à tour de rôle.

Linéarité des données

Examinez le graphique Residuals vs Fitted (graphique 1). Idéalement, la ligne rouge est approximativement horizontale à zéro — un motif signale que le modèle en ligne droite est inadapté :

data("marketing", package = "datarium")
model <- lm(sales ~ youtube, data = marketing)

plot(model, 1)

Residuals versus fitted values for the sales-youtube model, with the smoothed red line close to horizontal, indicating the linearity assumption is reasonable.

Astuce

Verdict ici : aucun motif marqué — l’hypothèse de linéarité est raisonnable. Si elle échouait (une courbe nette), la solution est une transformation non linéaire du prédicteur — log(x), sqrt(x), ou un terme polynomial poly(x, 2) — puis réexaminez ce graphique.

Homogénéité de la variance (homoscédasticité)

Examinez le graphique Scale-Location (graphique 3). Une ligne horizontale avec des points uniformément répartis signifie une variance constante ; une tendance ascendante signifie que la dispersion croît avec la valeur ajustée — l’hétéroscédasticité :

data("marketing", package = "datarium")
model <- lm(sales ~ youtube, data = marketing)

plot(model, 3)

Scale-location plot for the sales-youtube model showing the red line trending upward, indicating the residual variance increases with the fitted value (heteroscedasticity).

Avertissement

Verdict ici : la ligne tend vers le haut — la variance résiduelle augmente avec les ventes prédites, donc ce modèle a un problème d’hétéroscédasticité. La solution est une transformation logarithmique ou racine carrée de la réponse :

data("marketing", package = "datarium")

model_log <- lm(log(sales) ~ youtube, data = marketing)
plot(model_log, 3)

Scale-location plot after log-transforming sales: the red line is much flatter, showing the heteroscedasticity is largely corrected.

Après avoir modélisé log(sales), la ligne échelle-localisation est bien plus plate — la variance est stabilisée.

Normalité des résidus

Examinez le graphique Normal Q-Q (graphique 2). Si les résidus sont normaux, les points s’alignent sur la ligne de référence pointillée :

data("marketing", package = "datarium")
model <- lm(sales ~ youtube, data = marketing)

plot(model, 2)

Normal Q-Q plot of the residuals for the sales-youtube model, with points falling approximately along the dashed reference line, supporting the normality assumption.

Astuce

Verdict ici : les points suivent la ligne de près — la normalité est une hypothèse sûre. Avec un grand échantillon, les F-test et t-test sont de toute façon robustes aux écarts légers ; ne vous inquiétez que d’une forte courbure ou de queues lourdes. Si elle échouait, une transformation de la réponse aide souvent (et corrige fréquemment l’hétéroscédasticité par la même occasion).

Valeurs aberrantes et points à fort effet de levier

Deux types différents d’observation extrême, lus sur le graphique Residuals vs Leverage (graphique 5) :

  • Une valeur aberrante a une valeur de réponse extrême — détectée par le résidu standardisé. Une valeur au-delà de ±3 est une valeur aberrante possible.
  • Un point à fort effet de levier a une valeur de prédicteur extrême — détecté par la valeur du chapeau. Une valeur supérieure à 2(p + 1)/n correspond à un fort effet de levier (p = nombre de prédicteurs, n = observations).
data("marketing", package = "datarium")
model <- lm(sales ~ youtube, data = marketing)

plot(model, 5)

Residuals vs leverage plot for the sales-youtube model, with the three most extreme points labelled and all standardized residuals within plus or minus 3.

Astuce

Verdict ici : les trois points étiquetés (#26, #36, #179) ont des résidus standardisés compris entre −2 et −3 — extrêmes mais aucun au-delà de ±3, donc aucune véritable valeur aberrante. Et chaque valeur du chapeau est inférieure à 2(p + 1)/n = 4/200 = 0.02, donc il n’y a pas non plus de point à fort effet de levier.

Valeurs influentes (distance de Cook)

Un point influent est un point dont l’inclusion ou l’exclusion modifierait le résultat de la régression. Il combine effet de levier et taille du résidu, mesuré par la distance de Cook — signalé lorsqu’il dépasse 4/(n − p − 1). Tracez la distance de Cook et Residuals vs Leverage côte à côte :

data("marketing", package = "datarium")
model <- lm(sales ~ youtube, data = marketing)

par(mfrow = c(1, 2))
plot(model, 4)   # Cook's distance
plot(model, 5)   # Residuals vs Leverage

Cook's distance plot and residuals vs leverage plot side by side for the sales-youtube model; all points sit well within the Cook's distance bounds.

par(mfrow = c(1, 1))

Inspectez directement les lignes à plus forte distance de Cook en base R :

data("marketing", package = "datarium")
model <- lm(sales ~ youtube, data = marketing)

cd <- cooks.distance(model)
marketing[order(cd, decreasing = TRUE)[1:3], ]   # top 3 most influential rows
    youtube facebook newspaper sales
36   348.84     4.92     10.20 15.36
179  332.04     2.76     28.44 14.16
26   315.48     4.20     23.40 14.40
Astuce

Verdict ici : aucun point influent. Les lignes de contour de la distance de Cook n’apparaissent même pas sur le graphique Residuals-vs-Leverage parce que chaque point se situe confortablement à l’intérieur — exclure une seule observation déplacerait à peine l’ajustement.

À quoi ressemble un point influent

Pour voir le contraste, ajoutez deux points extrêmes et réajustez — maintenant les diagnostics s’allument :

data("marketing", package = "datarium")

df2 <- data.frame(
  x = c(marketing$youtube, 500, 600),
  y = c(marketing$sales, 80, 100)
)
model2 <- lm(y ~ x, data = df2)

par(mfrow = c(1, 2))
plot(model2, 4)
plot(model2, 5)

Cook's distance and residuals vs leverage plots for a model with two injected extreme points; observations 201 and 202 sit far beyond the Cook's distance lines, marking them influential.

par(mfrow = c(1, 1))

Les observations #201 et #202 se situent bien au-delà des lignes de la distance de Cook — elles sont influentes. Les exclure déplace la pente (ici de ~0.065 vers ~0.048). Lorsqu’un point a à la fois une forte distance de Cook et se trouve au bord du graphique d’effet de levier, décidez délibérément : est-ce une erreur de saisie (à corriger ou supprimer) ou une observation réelle et importante (à conserver, en rapportant la sensibilité) ?

Synthèse du diagnostic

Hypothèse Graphique Bon signe Solution si violée
Linéarité Residuals vs Fitted ligne rouge plate transformer le prédicteur : log(x), poly(x, 2)
Normalité Normal Q-Q points sur la ligne transformer la réponse ; un grand n est robuste
Homoscédasticité Scale-Location plate, dispersion uniforme transformer la réponse : log(y), sqrt(y)
Aucune influence Residuals vs Leverage + Cook à l’intérieur des contours examiner / exclure le point

Le résidu standardisé est \(r_i = \dfrac{e_i}{s\sqrt{1 - h_i}}\), où \(e_i\) est le résidu brut, \(s\) l’erreur standard résiduelle, et \(h_i\) l’effet de levier (valeur du chapeau). L’effet de levier \(h_i\) est le \(i\)-ème élément diagonal de la matrice chapeau \(H = X(X^\top X)^{-1}X^\top\), avec \(\sum_i h_i = p + 1\) — d’où la règle 2(p+1)/n (deux fois la moyenne). La distance de Cook combine résidu et effet de levier, \(D_i = \dfrac{r_i^2}{p + 1}\cdot\dfrac{h_i}{1 - h_i}\) — grande lorsqu’un point est à la fois loin de la ligne et extrême parmi les prédicteurs.

Essayez en direct

Réajustez avec le logarithme des ventes et relancez les diagnostics — le graphique échelle-localisation s’aplatit-il ? Le bac à sable démarre au premier Run.

🟢 Avec un agent IA

Demandez à Prova « vérifie les hypothèses de ma régression et dis-moi laquelle est violée et comment la corriger » — elle lit vos graphiques de diagnostic et répond avec du code que vous pouvez exécuter sur votre propre modèle. The runtime is the judge. Demander à Prova →

Problèmes courants

Vous avez traité un point étiqueté comme une valeur aberrante automatique. plot(model) étiquette par défaut les 3 lignes les plus extrêmes — ce n’est qu’un « regardez ici », pas un « supprimez-les ». Vérifiez les seuils réels : résidu standardisé > 3 (valeur aberrante), chapeau > 2(p+1)/n (effet de levier), distance de Cook > 4/(n−p−1) (influence).

Vous avez vu un motif dans les résidus et paniqué. Un motif n’est pas un signal d’arrêt — c’est une information. Une courbe dans Residuals-vs-Fitted suggère une transformation ou un terme manquant ; un entonnoir dans Scale-Location suggère une réponse en log/sqrt. Corrigez le modèle, ne l’abandonnez pas.

Hétéroscédasticité avec un modèle valide. Si une transformation n’est pas souhaitable, conservez le modèle mais utilisez des erreurs standards robustes (cohérentes à l’hétéroscédasticité) pour l’inférence (par ex. sandwich + lmtest), afin que les p-values et les intervalles de confiance restent valides.

Questions fréquentes

Quatre : la linéarité (la relation prédicteur–réponse est une droite), l’indépendance des erreurs résiduelles, la normalité des résidus, et l’homoscédasticité (variance résiduelle constante). Vous vérifiez aussi la présence d’observations influentes qui faussent l’ajustement. Toutes se diagnostiquent en examinant les résidus.

Ajustez le modèle avec lm(), puis appelez plot(model) pour les quatre graphiques de diagnostic : Residuals vs Fitted (linéarité), Normal Q-Q (normalité), Scale-Location (homoscédasticité) et Residuals vs Leverage (points influents). Lisez chaque graphique au regard de son hypothèse ; appuyez-les avec rstandard(), hatvalues() et cooks.distance().

Une valeur aberrante a un résidu standardisé (rstandard()) au-delà de ±3. Un point à fort effet de levier a une valeur du chapeau (hatvalues()) supérieure à 2(p+1)/n. Un point influent a une distance de Cook (cooks.distance()) supérieure à 4/(n−p−1) — c’est celui qui modifie réellement l’ajustement lorsqu’on le retire. Le graphique Residuals-vs-Leverage montre les trois à la fois.

Cela dépend de laquelle : non-linéarité → transformer le prédicteur (log, sqrt, poly) ; hétéroscédasticité → transformer la réponse (log(y), sqrt(y)) ou utiliser des erreurs standards robustes ; résidus non normaux → transformer la réponse (les grands échantillons sont assez robustes) ; un point influent → l’examiner (erreur de données vs réel) et rapporter l’analyse avec et sans lui.

Testez vos connaissances

  1. Exécutez-le. Dans la cellule en direct, comparez le graphique Scale-Location de lm(sales ~ youtube) avec lm(log(sales) ~ youtube). Lequel montre une variance constante ?
  2. Conceptuel. Un point a un grand résidu standardisé mais une valeur du chapeau faible. Est-il susceptible d’être influent (modifier l’ajustement) ? Pourquoi ou pourquoi pas ?

Remplissez le blanc avec sales, puis log(sales), et observez la ligne rouge dans le graphique échelle-localisation. Pour la question 2, rappelez-vous que la distance de Cook combine à la fois la taille du résidu et l’effet de levier.

plot(lm(sales ~ youtube, data = marketing), 3)        # line trends up: heteroscedastic
plot(lm(log(sales) ~ youtube, data = marketing), 3)   # much flatter: variance stabilised

Le modèle log(sales) a la variance la plus constante. Pour la question 2 : probablement pas influent. La distance de Cook multiplie la taille du résidu par l’effet de levier ; un grand résidu à faible effet de levier (une valeur de prédicteur typique) reçoit peu de poids, donc retirer le point déplace à peine la ligne. L’influence requiert à la fois une réponse inhabituelle et une valeur de prédicteur inhabituelle.

Conclusion

Vous savez maintenant diagnostiquer une régression linéaire avec R : lire les quatre diagnostics plot(model), vérifier la linéarité (Residuals vs Fitted), la normalité (Q-Q), l’homoscédasticité (Scale-Location) et l’influence (Residuals vs Leverage + distance de Cook) — et appliquer la bonne solution à chaque violation, de la transformation d’une variable au traitement d’un point influent. Un modèle que vous avez vérifié est un modèle que vous pouvez rapporter.

Leçons connexes

Cette page vous a-t-elle été utile ?

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.

Commencer gratuitement →

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

Passer à Pro →

✓ Vous êtes Pro — continuez. The runtime is the judge.

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.

Partager cette pageXLinkedInRedditHN
Note

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.

Réutilisation

Citation

BibTeX
@online{2026,
  author = {},
  title = {Hypothèses et diagnostics de la régression linéaire avec R},
  date = {2026-06-23},
  url = {https://www.datanovia.com/learn/biostatistics/regression/linear-regression-assumptions-and-diagnostics-in-r},
  langid = {fr}
}
Veuillez citer ce travail comme suit :
“Hypothèses et diagnostics de la régression linéaire avec R.” 2026. June 23. https://www.datanovia.com/learn/biostatistics/regression/linear-regression-assumptions-and-diagnostics-in-r.