Faire face à la multicolinéarité

13

J'ai appris qu'en utilisant la vif()méthode du carpackage, nous pouvons calculer le degré de multicolinéarité des entrées dans un modèle. D'après wikipedia , si la vifvaleur est supérieure à celle-ci, 5nous pouvons considérer que l'entrée souffre d'un problème de multicolinéarité. Par exemple, j'ai développé un modèle de régression linéaire en utilisant la lm()méthode et vif()donne ce qui suit. Comme on peut le voir, les entrées ub, lbet tbsouffrent de multicolinéarité.

 vif(lrmodel)
     tb        ub        lb          ma     ua        mb         sa     sb 
 7.929757 50.406318 30.826721  1.178124  1.891218  1.364020  2.113797  2.357946

Afin d'éviter le problème de multicolinéarité et donc de rendre mon modèle plus robuste, j'ai pris une interaction entre ubet lb, et maintenant le tableau vif du nouveau modèle est le suivant:

   tb     ub:lb      ma       mb      sa        sb     ua
1.763331 1.407963 1.178124 1.327287 2.113797 1.860894 1.891218

Il n'y a pas beaucoup de différence dans les R^2valeurs et il n'y a pas non plus de grande différence dans les erreurs des tests CV à une absence dans les deux cas ci-dessus.

Mes questions sont:

  1. Est-il correct d'éviter le problème de multicolinéarité en prenant l'interaction comme indiqué ci-dessus?

  2. Existe-t-il une meilleure façon de présenter un problème de multicolinéarité par rapport aux résultats de la méthode vif ci-dessus.

Veuillez me faire part de vos suggestions.

Merci.

samarasa
la source
Votre modèle est-il une régression log-log (l'interaction comme restriction est d'accord avec eux)? Dans le wiki, il y a un article plus complet concernant le problème de multicollinéarité en.wikipedia.org/wiki/Multicollinearity Je suggère également d'explorer la balise de multicollinéarité sur ce site, il semble que ce soit une question fréquemment posée.
Dmitrij Celov
@Dmitrij Celov: Merci. Non, mon modèle est une régression linéaire simple sans journaux ...
samarasa

Réponses:

11

Vous semblez inclure le terme d'interaction ub:lb, mais pas ubet lbeux - mêmes en tant que prédicteurs séparés. Cela violerait le soi-disant "principe de marginalité" qui stipule que les termes d'ordre supérieur ne devraient inclure que des variables présentes en termes d'ordre inférieur ( Wikipedia pour commencer ). En fait, vous incluez maintenant un prédicteur qui n'est que le produit élémentaire de ubet lb.

1VIFj est juste où est la valeur lorsque vous exécutez une régression avec votre variable de prédiction d'origine comme critère prédit par tous les prédicteurs restants (c'est aussi le ème élément diagonal de , l'inverse de la matrice de corrélation des prédicteurs). A VIF valeur de 50 indique donc que vous obtenez un de 0,98 pour prédire avec les autres prédicteurs, ce qui indique que est presque complètement redondant (même pour , de 0,97). R 2 j R2jjR - 1 x R2R211Rj2Rj2R2jjRx1R2ubublbR2

Je commencerais à faire toutes les corrélations par paires entre les prédicteurs, et exécuter les régressions susmentionnées pour voir quelles variables prédire ubet lbpour voir si la redondance est facilement expliquée. Si tel est le cas, vous pouvez supprimer les prédicteurs redondants. Vous pouvez également examiner la régression des crêtes (à lm.ridge()partir du package MASSdans R).

Des diagnostics de multicolinéarité plus avancés utilisent la structure de valeurs propres de où est la matrice de conception de la régression (c'est-à-dire, tous les prédicteurs comme vecteurs de colonne). La condition est où et sont les plus grands et les plus petits ( ) valeurs propres de . Dans R, vous pouvez utiliser , où le modèle utilise généralement les variables standardisées.X κ XtXXκ λmaxλmin0XtXλmaxλminλmaxλmin0XtXkappa(lm(<formula>))lm()

Géométriquement, vous donne une idée de la forme du nuage de données formé par les prédicteurs. Avec 2 prédicteurs, le nuage de points pourrait ressembler à une ellipse avec 2 axes principaux. vous indique ensuite à quel point cette ellipse est "plate", c'est-à-dire qu'elle est une mesure du rapport entre la longueur du plus grand axe et la longueur du plus petit axe principal. Avec 3 prédicteurs, vous pourriez avoir une forme de cigare et 3 axes principaux. Plus votre nuage de données est "plat" dans une certaine direction, plus les variables sont redondantes lorsqu'elles sont prises ensemble.κκκ

Il existe quelques règles générales pour les valeurs non critiques de (j'ai entendu moins de 20). Mais sachez que n'est pas invariant dans les transformations de données qui changent simplement l'unité des variables - comme la standardisation. C'est différent de VIF: vous donnera le même résultat que (tant qu'il n'y a pas de termes multiplicatifs dans le modèle), mais et différera presque sûrement.κκκvif(lm(y ~ x1 + x2))vif(lm(scale(y) ~ scale(x1) + scale(x2)))kappa(lm(y ~ x1 + x2))kappa(lm(scale(y) ~ scale(x1) + scale(x2)))

caracal
la source
En ce qui concerne la première note: pour le modèle multivarié, il semble correct de ne laisser que le terme d'interaction, car ce dernier signifie simplement que vous restreignez les coefs pour ub lb( ) , mais pour un modèle de régression linéaire général, c'est comme vous l'avez souligné (+1) ^ _ ^ Au fait lb - borne inférieure, ub - borne supérieure?! si c'est le cas, faites la différence de deux , c'est probablement la meilleure transformation. u b - l balogub+aloglb=alogublbublb
Dmitrij Celov
@Dmitrij: Non, ub + lb + sb = 100.
samarasa
Existe-t-il une belle représentation graphique de la multicolinéarité? Veuillez me suggérer s'il existe une méthode en R pour thi.
samarasa
2
@kkp Les seules façons dont je peux penser en ce moment sont: pairs()pour les matrices de nuage de points montrant toute la distribution par paire des prédicteurs. Le package scatterplot3dpeut être utilisé pour visualiser le nuage de points de 3 variables. Voir cette réponse pour dessiner l'ellipse dont le rapport d'axe est égal à dans le cas bivarié. Vous pouvez également vérifier le package qui offre des diagnostics de multicolinéarité supplémentaires, peut-être des graphiques. κ2perturb
caracal
1

Vous devriez également considérer la valeur P lors de la prise en compte des variables.

  1. Si la valeur P est très faible (p <0,05), alors que la VIF est élevée (> 5), vous devriez peut-être considérer d'autres variables insignifiantes. Et reconstruisez votre modèle.
  2. Si vous avez une valeur P et un VIF élevés, cette variable sera insignifiante.
Manish Kumar
la source