J'ai appris qu'en utilisant la vif()
méthode du car
package, nous pouvons calculer le degré de multicolinéarité des entrées dans un modèle. D'après wikipedia , si la vif
valeur est supérieure à celle-ci, 5
nous 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
, lb
et tb
souffrent 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 ub
et 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^2
valeurs 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:
Est-il correct d'éviter le problème de multicolinéarité en prenant l'interaction comme indiqué ci-dessus?
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.
la source
Réponses:
Vous semblez inclure le terme d'interaction
ub:lb
, mais pasub
etlb
eux - 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 deub
etlb
.1VjeFj 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 R2R211 - R2j R2j R2 j j R- 1X R2 R2
ub
ub
lb
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
ub
etlb
pour 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 packageMASS
dans 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 κ √XtX X κ λmaxλmin≠0XtXλm a x√λm i n√ λm a x λm i n ≠ 0 XtX
kappa(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)))
la source
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 bpairs()
pour les matrices de nuage de points montrant toute la distribution par paire des prédicteurs. Le packagescatterplot3d
peut ê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.perturb
Vous devriez également considérer la valeur P lors de la prise en compte des variables.
la source