Mesures de colinéarité

Une autre approche pour identifier la multicollinéarité est via le facteur d’inflation de la variance. Le VIF indique le pourcentage de la variance gonflée pour le coefficient de chaque variable. À partir d’une valeur de 1 (aucune colinéarité), un VIF compris entre 1 et 5 indique une colinéarité modérée, tandis que les valeurs supérieures à 5 indiquent une colinéarité élevée. Parmi les cas où une VIF élevée serait acceptable, citons l’utilisation de termes d’interaction, de termes polynomiaux ou de variables fictives (variables nominales comportant trois catégories ou plus). Les matrices de corrélation permettent d’identifier la corrélation entre les paires de variables tandis que la VIF permet l’évaluation globale de la multicolinéarité. La matrice de corrélation de la plupart des variables continues est présentée ci-dessous afin de mettre en évidence les différentes paires de variables colinéaires. Le VIF peut être calculé à l’aide du package statsmodels ; le bloc de code ci-dessous présente les valeurs du VIF avec les variables colinéaires incluses (à gauche) et supprimées (à droite).

matrice de corrélation pour les variables continues ; Coefficient de Kendall (image d’auteur)
# Setting the predictor variables
X_o = df_wdummy]
X_r1 = df_wdummy]#
from statsmodels.stats.outliers_influence import variance_inflation_factorvif = pd.Series()], index=X_o.columns,
name='vif_full')
vif_r = pd.Series()], index=X_r1.columns,
name='vif_collinear_rvmd')
pd.concat(, axis=1)

VIF valeurs pour les variables prédictives (image d’auteur)

Les valeurs VIF correspondent à la matrice de corrélation ; par exemple, paire de variables NOX et INDUS, le coefficient de corrélation est supérieur à 0.5 (0,61), et les valeurs VIF respectives sont supérieures à 5. L’élimination des variables colinéaires RAD et NOX a amélioré les chiffres VIF. L’abandon de variables colinéaires uniquement sur la base du chiffre VIF le plus élevé n’est pas une manière garantie de construire le modèle le plus performant, comme élaboré dans la section suivante.

Nous construisons un modèle de base en abandonnant toutes les variables colinéaires identifiées dans la matrice de corrélation (montrée ci-dessus), en attendant que TAX et RAD soient abandonnées ensuite.

# Baseline variables 
X_bl = df_wdummy]
y_bl = df_wdummy# Explore mitigating multi-collinearity
vif_bl = pd.Series()], index=X_bl.columns,
name='vif_bl')X_noTAX = X_bl.drop(,axis=1)
X_noRAD = X_bl.drop(,axis=1)
vif_noTAX = pd.Series()],
index=X_noTAX.columns, name='vif_noTAX')
vif_noRAD = pd.Series()],
index=X_noRAD.columns, name='vif_noRAD')
pd.concat(, axis=1)

Évaluation des chiffres VIF des variables prédictives dans le modèle de base (image par l’auteur)

Bien qu’il semble que l’abandon de la variable TAX sur la base du VIF soit meilleur, une approche prudente est de vérifier via la métrique R-carré ajustée (ajustée pour le nombre de prédicteurs, la métrique augmente seulement si la prochaine variable ajoutée améliore le modèle plus que ce qui serait attendu par hasard).

# Without TAX
model = sm.OLS(y, sm.add_constant(X_noTAX)).fit()
print_model = model.summary()
print(print_model)

Résumé des métriques du modèle (sans TAX) (image par l’auteur)
# Without RAD
model = sm.OLS(y, sm.add_constant(X_noRAD)).fit()
print_model = model.summary()
print(print_model)

.

Résumé des métriques du modèle (sans RAD) (image d’auteur)

D’après le chiffre plus élevé du R-au carré ajusté plus élevé, nous pouvons en déduire que le modèle est plus performant si la variable RAD est supprimée ! Le problème de la multicollinéarité étant réglé, la prochaine étape pourrait consister à explorer l’ajout de termes d’interaction pour potentiellement stimuler les performances du modèle.

Laisser un commentaire