data("Boston", package = "MASS")
model <- lm(medv ~ ., data = Boston)
summary(model)$adj.r.squared # the model fits well overall[1] 0.7337897
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.
23 juin 2026
7 juillet 2026
car::vif(model) — un score par prédicteur.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.
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 :
[1] 0.7337897
Le modèle explique ~73 % de la variation — bon ajustement global. Mais les prédicteurs se marchent-ils dessus ?
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 :
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.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")
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é :
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
[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.
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) etrad(VIF = 7.5) — indiquant une redondance. La suppression detaxa 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.
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.
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 →
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.
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.
rad au lieu de tax. Le VIF de tax passe-t-il sous 5 ? Que vous apprend cela sur la relation tax–rad ?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.
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.
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 = {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}
}