Multicolinéarité et VIF en R

Lorsque les prédicteurs sont corrélés entre eux, les coefficients de régression deviennent instables. Détectez le problème avec le facteur d’inflation de la variance (VIF), appliquez la règle empirique, et corrigez-le en supprimant le prédicteur redondant

Détectez et corrigez la multicolinéarité en régression linéaire avec R. Calculez le facteur d’inflation de la variance (VIF) avec car::vif(), appliquez la règle empirique VIF > 5 (ou 10), repérez les prédicteurs redondants, et ré-ajustez un modèle plus simple sans dégrader l’ajustement. Illustré sur les données immobilières de Boston.

Date de publication

23 juin 2026

Modifié

7 juillet 2026

AstucePoints clés
  • La multicolinéarité survient quand des prédicteurs sont corrélés entre eux — elle rend les coefficients de régression instables (erreurs standard élevées, signes qui s’inversent) alors même que l’ajustement global du modèle reste bon.
  • Détectez-la avec le facteur d’inflation de la variance (VIF)car::vif(model) — un score par prédicteur.
  • Règle empirique : VIF = 1 signifie aucune colinéarité ; VIF > 5 (ou 10) signale un niveau problématique.
  • Corrigez-la en supprimant le prédicteur redondant à fort VIF — l’information étant dupliquée, le modèle plus simple s’ajuste presque aussi bien.
  • La multicolinéarité affecte l’interprétation (quel prédicteur compte), pas les prédictions du modèle.

Introduction

En régression multiple, chaque coefficient est l’effet d’un prédicteur les autres maintenus constants — mais cela ne fonctionne proprement que si les prédicteurs portent une information distincte. Lorsque deux prédicteurs ou plus sont fortement corrélés entre eux (multicolinéarité), leurs effets ne peuvent plus être séparés : les coefficients deviennent instables, les erreurs standard explosent, et un prédicteur peut même changer de signe.

Le scénario : un modèle immobilier de Boston utilise une douzaine de prédicteurs de quartier, dont plusieurs mesurent des choses apparentées (le taux de taxe foncière et l’accès aux autoroutes, par exemple). Lesquels sont redondants — et le modèle est-il fiable ? Le facteur d’inflation de la variance répond à cette question.

Les données et un modèle complet

Nous utilisons le jeu de données immobilières Boston du package MASS — la valeur médiane des logements (medv) et 13 prédicteurs de quartier. Ajustons un modèle avec tous ces prédicteurs :

data("Boston", package = "MASS")

model <- lm(medv ~ ., data = Boston)
summary(model)$adj.r.squared      # the model fits well overall
[1] 0.7337897

Le modèle explique ~73 % de la variation — bon ajustement global. Mais les prédicteurs se marchent-ils dessus ?

Détecter la multicolinéarité avec le VIF

car::vif() donne un facteur d’inflation de la variance par prédicteur — de combien la variance de chaque coefficient est gonflée par la colinéarité avec les autres :

library(car)

data("Boston", package = "MASS")
model <- lm(medv ~ ., data = Boston)

sort(vif(model), decreasing = TRUE)
     tax      rad      nox    indus      dis      age    lstat       zn 
9.008554 7.484496 4.393720 3.991596 3.955945 3.100826 2.941491 2.298758 
      rm  ptratio     crim    black     chas 
1.933744 1.799084 1.792192 1.348521 1.073995 

Interprétez-le à l’aide de la règle empirique (1 = aucune, > 5 ou 10 = problématique) :

  • tax = 9.0 et rad = 7.5 dépassent tous deux 5 — le taux de taxe foncière et l’indice d’accessibilité aux autoroutes sont fortement corrélés entre eux (les zones à forte taxe se concentrent près des autoroutes), si bien que le modèle ne peut pas séparer proprement leurs effets.
  • Tout le reste est en dessous de 5 — acceptable.

Visualiser les VIF

Un diagramme en barres rapide face au seuil rend les coupables évidents :

library(ggpubr)
library(car)

data("Boston", package = "MASS")
model <- lm(medv ~ ., data = Boston)

vif.df <- data.frame(predictor = names(vif(model)), VIF = as.numeric(vif(model)))

ggbarplot(vif.df, x = "predictor", y = "VIF", fill = "#3a86d4",
          sort.val = "desc", rotate = TRUE, xlab = "", ylab = "VIF") +
  geom_hline(yintercept = 5, linetype = "dashed", color = "red")

A horizontal bar chart of the variance inflation factor for each Boston predictor, sorted, with tax and rad extending past the dashed VIF = 5 threshold line.

Corriger : supprimer le prédicteur redondant

Les prédicteurs à fort VIF portent une information redondante : supprimez-en un et ré-ajustez. Retirons tax et revérifions — les VIF restants reviennent dans la plage sûre, et l’ajustement reste essentiellement inchangé :

library(car)

data("Boston", package = "MASS")

model2 <- lm(medv ~ . - tax, data = Boston)
sort(vif(model2), decreasing = TRUE)
     nox      dis    indus      age    lstat      rad       zn       rm 
4.369271 3.954446 3.226015 3.098044 2.940800 2.837494 2.184240 1.923075 
    crim  ptratio    black     chas 
1.791940 1.788839 1.347564 1.058220 
summary(model2)$adj.r.squared     # ≈ 0.729 — barely changed from 0.734
[1] 0.7285204

Supprimer tax ramène rad à ~2.8 (ils étaient colinéaires entre eux), chaque VIF est désormais sous 5, et le R² ajusté ne baisse que de 0.734 à 0.729 — un modèle plus simple, plus stable et tout aussi bon. C’est tout l’enjeu : l’information du prédicteur supprimé était redondante.

Rapport

La multicolinéarité a été évaluée à l’aide des facteurs d’inflation de la variance. Deux prédicteurs dépassaient le seuil VIF > 5 — tax (VIF = 9.0) et rad (VIF = 7.5) — indiquant une redondance. La suppression de tax a ramené tous les VIF sous 5 tandis que le R² ajusté restait essentiellement inchangé (0.734 → 0.729), produisant un modèle plus stable.

Pour le prédicteur \(x_j\), régressez-le sur tous les autres prédicteurs et prenez le \(R_j^2\) de ce modèle auxiliaire. Alors \(\text{VIF}_j = \dfrac{1}{1 - R_j^2}\). Si \(x_j\) est sans lien avec les autres, \(R_j^2 = 0\) et VIF = 1 ; s’il est parfaitement prédit par eux, \(R_j^2 \to 1\) et VIF \(\to \infty\). L’erreur standard du coefficient est gonflée d’un facteur \(\sqrt{\text{VIF}_j}\) — un VIF = 9 signifie donc que son erreur standard est 3× plus grande qu’elle ne le serait sans colinéarité, ce qui explique pourquoi l’estimation devient instable.

Essayez en direct

Supprimez rad au lieu de tax — cela corrige-t-il aussi la colinéarité ? Comparez les VIF. Le bac à sable démarre au premier Run.

🟢 Avec un agent IA

Demandez à Prova « vérifie la multicolinéarité de ma régression et dis-moi quel prédicteur supprimer » — elle calcule les VIF et explique quels prédicteurs sont redondants, avec du code que vous pouvez exécuter sur votre propre modèle. The runtime is the judge. Ask Prova →

Problèmes courants

Vous vous êtes affolé devant un VIF élevé alors que seule la prédiction vous importe. La multicolinéarité gonfle les erreurs standard des coefficients et brouille l’interprétation — mais elle ne biaise pas les prédictions du modèle. Si vous n’avez besoin que de valeurs predict() précises, vous pouvez souvent la laisser de côté.

Un prédicteur a changé de signe ou est devenu non significatif. Symptôme classique de multicolinéarité — le prédicteur partage de l’information avec un autre. Vérifiez le VIF ; le coefficient instable en a généralement un élevé.

Vous avez supprimé les deux prédicteurs corrélés. Retirez-en un à la fois et revérifiez le VIF — en supprimer un ramène souvent son partenaire dans la plage sûre (ici, supprimer tax a aussi corrigé rad). En supprimer les deux peut écarter un vrai signal.

Questions fréquentes

Le VIF mesure de combien la variance du coefficient d’un prédicteur est gonflée par sa corrélation avec les autres prédicteurs. VIF = 1 signifie aucune colinéarité ; il augmente à mesure que le prédicteur devient plus redondant. Calculez-le avec car::vif(model) — une valeur par prédicteur.

VIF = 1 est idéal (aucune colinéarité). La règle empirique courante veut qu’un VIF supérieur à 5 (ou, plus indulgent, 10) indique une multicolinéarité problématique qui mérite d’être traitée. Les valeurs entre 1 et 5 sont généralement acceptables.

Supprimez le prédicteur redondant à fort VIF et ré-ajustez (lm(y ~ . - tax)), puis revérifiez le VIF — en supprimer un corrige souvent aussi son partenaire corrélé. Alternatives lorsque vous devez conserver tous les prédicteurs : combinez-les en un indice, ou utilisez des méthodes de réduction de dimension/pénalisées (régression sur composantes principales ou régression ridge).

Non — la multicolinéarité gonfle les erreurs standard des coefficients et rend leur interprétation individuelle peu fiable, mais l’ajustement global du modèle et ses prédictions restent valides. C’est un problème pour expliquer quel prédicteur compte, pas pour prédire le résultat.

Testez vos connaissances

  1. Exécutez-le. Dans la cellule interactive, supprimez rad au lieu de tax. Le VIF de tax passe-t-il sous 5 ? Que vous apprend cela sur la relation tax–rad ?
  2. Conceptuel. Un prédicteur a un VIF = 12 mais c’est celui qui vous importe le plus scientifiquement. Citez deux options autres que sa simple suppression.

Remplissez le blanc par tax, puis rad. Chaque suppression devrait faire baisser le VIF de l’autre, car ils sont colinéaires entre eux. Pour la question 2, pensez à combiner des variables ou à utiliser une méthode conçue pour les prédicteurs corrélés.

Supprimer l’un ou l’autre, tax ou rad, ramène l’autre sous 5 — ils sont colinéaires entre eux, si bien qu’un seul d’entre eux porte l’information partagée. Pour la question 2 : au lieu de supprimer un prédicteur à fort VIF scientifiquement important, vous pouvez (a) combiner les prédicteurs corrélés en un seul indice/score, ou (b) utiliser une méthode conçue pour les prédicteurs corrélés — régression sur composantes principales ou régression ridge (pénalisée) — qui stabilisent les estimations sans supprimer la variable.

Conclusion

Vous savez maintenant détecter et corriger la multicolinéarité en R : calculez le VIF avec car::vif(), appliquez la règle empirique > 5 (ou 10) pour repérer les prédicteurs redondants, et supprimez le pire d’entre eux pour obtenir un modèle plus simple et plus stable au pouvoir d’ajustement essentiellement identique. La multicolinéarité, c’est savoir à quel prédicteur se fier — vérifiez-la chaque fois que vous interprétez les coefficients d’un modèle de régression multiple.

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 = {Multicolinéarité et VIF en R},
  date = {2026-06-23},
  url = {https://www.datanovia.com/learn/biostatistics/regression/multicollinearity-and-vif-in-r},
  langid = {fr}
}
Veuillez citer ce travail comme suit :
“Multicolinéarité et VIF en R.” 2026. June 23. https://www.datanovia.com/learn/biostatistics/regression/multicollinearity-and-vif-in-r.