Umgang mit Multikollinearität

12

Ich habe gelernt, dass wir mit vif()der carPackage- Methode den Grad der Multikollinearität von Eingaben in einem Modell berechnen können. Von wikipedia , wenn der vifWert größer als 5dann können wir davon ausgehen , dass die Eingabe von multicollinearity Problem leidet. Ich habe zum Beispiel ein lineares Regressionsmodell mit der lm()Methode entwickelt und vif()gibt Folgendes aus. Wie wir sehen können, die Eingänge ub, lbund tbwerden von multicollinearity leiden.

 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

Um das Multikollinearitätsproblem zu vermeiden und damit mein Modell robuster zu machen, habe ich die folgenden Interaktionen zwischen ubund vorgenommen lb, und nun lautet die vif-Tabelle des neuen Modells wie folgt:

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

In R^2beiden Fällen gibt es keinen großen Unterschied in den Werten und auch keinen großen Unterschied in den Fehlern von Ein-Auslass-CV-Tests.

Meine Fragen sind:

  1. Ist es in Ordnung, das Multikollinearitätsproblem zu vermeiden, indem die oben gezeigte Interaktion verwendet wird?

  2. Gibt es eine schönere Möglichkeit, das Multikollinearitätsproblem im Vergleich zu den obigen Ergebnissen der vif-Methode darzustellen?

Bitte machen Sie mir Ihre Vorschläge.

Vielen Dank.

Samarasa
quelle
Ist Ihr Modell Log-Log-Regression (Interaktion als Einschränkung als ok mit ihnen)? Im Wiki gibt es einen vollständigeren Artikel zum Thema Multikollinearität. En.wikipedia.org/wiki/Multikollinearität Auch ich schlage vor, das Multikollinearitäts-Tag auf dieser Site zu untersuchen. Es scheint eine häufig gestellte Frage zu sein.
Dmitrij Celov
@ Dmitrij Celov: Vielen Dank. Nein, mein Modell ist eine einfache lineare Regression ohne Protokolle ...
Samarasa

Antworten:

10

Sie scheinen den Interaktionsbegriff einzuschließen ub:lb, aber nicht ubund sich lbselbst als separate Prädiktoren. Dies würde gegen das sogenannte "Marginalitätsprinzip" verstoßen, das besagt, dass Begriffe höherer Ordnung nur Variablen enthalten sollten, die in Begriffen niedrigerer Ordnung vorliegen ( Wikipedia für den Anfang ). Tatsächlich schließen Sie jetzt einen Prädiktor ein, der nur das elementweise Produkt von ubund ist lb.

VIFj11Rj2Rj2R2jjRx1R2ubublbR2

Ich würde anfangen, alle paarweisen Korrelationen zwischen Prädiktoren durchzuführen und die oben erwähnten Regressionen ausführen, um zu sehen, welche Variablen vorhergesagt werden ubund um lbzu sehen, ob die Redundanz leicht erklärt werden kann. In diesem Fall können Sie die redundanten Prädiktoren entfernen. Sie können auch die Gratregression untersuchen ( lm.ridge()aus dem Paket MASSin R).

XtXXκλmaxλminλmaxλmin0XtXkappa(lm(<formula>))lm()

κκ

κκ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
quelle
Zur ersten Anmerkung: Für ein multivariates Modell ist es in Ordnung, nur den Interaktionsbegriff zu belassen, da letzterer nur bedeutet, dass Sie die Coefs einschränken für ub lb(einLogub+einLoglb=einLogublb), aber für ein allgemeines lineares Regressionsmodell ist es, wie Sie dargelegt haben (+1) ^ _ ^ Übrigens lb - untere Schranke, ub - obere Schranke ?! wenn ja, mach den Unterschied von zweiub-lbEs ist wahrscheinlich die bessere Transformation.
Dmitrij Celov
@Dmitrij: Nein, ub + lb + sb = 100.
samarasa
Gibt es eine schöne grafische Darstellung für Multikollinearität? Bitte schlagen Sie mir vor, ob es eine Methode in R für diese gibt.
Samarasa
2
@kkp Die einzigen Möglichkeiten, die ich mir im Moment vorstellen kann, sind: pairs()für Streudiagramm-Matrizen, die die gesamte paarweise Verteilung der Prädiktoren anzeigen. Paket scatterplot3dkann verwendet werden, um das Streudiagramm von 3 Variablen zu visualisieren. In dieser Antwort wird die Ellipse gezeichnet, deren Achsenverhältnis gleich istκ2im bivariaten Fall. Sie können auch das Paket überprüfen, perturbdas zusätzliche Multikollinearitätsdiagnosen bietet, möglicherweise Grafiken.
Karakal
1

Sie sollten den P-Wert auch bei der Variablenbetrachtung berücksichtigen.

  1. Wenn der P-Wert sehr niedrig ist (p <0,05) und das VIF hoch ist (> 5), sollten Sie möglicherweise andere unbedeutende Variablen berücksichtigen. Und bauen Sie Ihr Modell um.
  2. Wenn Sie einen hohen P-Wert und einen hohen VIF-Wert haben, ist diese Variable unerheblich.
Manish Kumar
quelle