Ich verwende derzeit einige lineare Modelle mit gemischten Effekten.
Ich benutze das Paket "lme4" in R.
Meine Modelle haben die Form:
model <- lmer(response ~ predictor1 + predictor2 + (1 | random effect))
Bevor ich meine Modelle ausführte, überprüfte ich die mögliche Multikollinearität zwischen Prädiktoren.
Ich habe das gemacht von:
Machen Sie einen Datenrahmen der Prädiktoren
dummy_df <- data.frame(predictor1, predictor2)
Verwenden Sie die "cor" -Funktion, um die Pearson-Korrelation zwischen Prädiktoren zu berechnen.
correl_dummy_df <- round(cor(dummy_df, use = "pair"), 2)
Wenn "correl_dummy_df" größer als 0,80 war, entschied ich, dass "predictor1" und "predictor2" zu stark korreliert waren und nicht in meinen Modellen enthalten waren.
Wenn Sie etwas lesen, scheint es objektivere Möglichkeiten zu geben, die Multikollinearität zu überprüfen.
Hat jemand einen Rat dazu?
Der "Variance Inflation Factor (VIF)" scheint eine gültige Methode zu sein.
VIF kann mit der Funktion "corvif" im AED-Paket (nicht Cran) berechnet werden. Das Paket finden Sie unter http://www.highstat.com/book2.htm . Das Paket unterstützt das folgende Buch:
Zuur, AF, Ieno, EN, N. Walker, Saveliev, AA & Smith, GM 2009. Modelle mit gemischten Effekten und Erweiterungen in Ökologie mit R, 1. Auflage. Springer, New York.
Es sieht so aus, als ob eine allgemeine Faustregel lautet: Wenn VIF> 5 ist, ist die Multikollinearität zwischen Prädiktoren hoch.
Ist die Verwendung von VIF robuster als die einfache Pearson-Korrelation?
Aktualisieren
Ich fand einen interessanten Blog unter:
http://hlplab.wordpress.com/2011/02/24/diagnosing-collinearity-in-lme4/
Der Blogger bietet nützlichen Code zur Berechnung des VIF für Modelle aus dem lme4-Paket.
Ich habe den Code getestet und es funktioniert großartig. In meiner nachfolgenden Analyse habe ich festgestellt, dass Multikollinearität für meine Modelle kein Problem darstellt (alle VIF-Werte <3). Dies war interessant, da ich zuvor eine hohe Pearson-Korrelation zwischen einigen Prädiktoren festgestellt hatte.
AED
Paket wurde eingestellt ; stattdessen nursource("http://www.highstat.com/Book2/HighstatLibV6.R")
für diecorvif
funktion. (2) Ich hoffe, eine echte Antwort zu liefern, aber (a) Ich glaube, dass VIF Multikollinearität berücksichtigt (z. B. haben Sie möglicherweise drei Prädiktoren, von denen keiner starke paarweise Korrelationen aufweist, aber die lineare Kombination von A und B ist stark mit C korreliert ) und (b) Ich habe starke Vorbehalte gegen die Weisheit, kollineare Terme fallen zu lassen. siehe Graham Ecology 2003, Doi: 10.1890 / 02-3114http://highstat.com/Books/BGS/GAMM/RCodeP2/HighstatLibV6.R
Antworten:
Für die VIF-Berechnung kann usdm auch ein Paket sein (ich muss "usdm" installieren)
Wenn VIF> 4.0, dann gehe ich im Allgemeinen davon aus, dass Multikollinearität alle diese Prädiktorvariablen entfernt, bevor sie in mein Modell eingepasst werden
quelle
.4
als anzeigenvifcor(vardata,th=0.4)
. Ebenso können Sie verwendenvifstep(vardata,th=10)
, um alle größer als 10 zu verwerfen.Ein Update, da ich diese Frage nützlich fand, aber keine Kommentare hinzufügen kann -
Der Code von Zuur et al. (2009) ist auch über das Zusatzmaterial zu einer späteren (und sehr nützlichen) Veröffentlichung in der Zeitschrift Methods in Ecology and Evolution erhältlich .
Das Papier - Ein Protokoll zur Datenexploration zur Vermeidung häufiger statistischer Probleme - bietet nützliche Ratschläge und eine dringend benötigte Referenz zur Begründung von VIF-Schwellenwerten (sie empfehlen einen Schwellenwert von 3). Der Artikel ist hier zu finden: http://onlinelibrary.wiley.com/doi/10.1111/j.2041-210X.2009.00001.x/full und der R-Code befindet sich auf der Registerkarte für Zusatzmaterialien (ZIP-Download).
Eine Kurzanleitung : In dem Extrakt Varianzinflationsfaktoren (VIF) ihren Lauf HighStatLib.r Code und die Funktion verwenden
corvif
. Die Funktion erfordert einen Datenrahmen mit nur den Prädiktoren (z. B.df = data.frame(Dataset[,2:4])
wenn Ihre Daten in Dataset mit den Prädiktoren in den Spalten 2 bis 4 gespeichert sind) .quelle
Vielleicht
qr()
funktioniert die Funktion. WennX
es sich um Ihren Datenrahmen oder Ihre Matrix handelt, können Sie diese verwendenqr(X)$pivot
. Beispielsweise istqr(X)$pivot= c(1, 2, 4, 5, 7, 8, 3, 6)
Spalte 3 und 6 die multikollineare Variable.quelle
Um die Multikollinearität zwischen Prädiktoren beim Ausführen der Dredge-Funktion (MuMIn-Paket) zu bewerten, geben Sie die folgende max.r-Funktion als "zusätzliches" Argument an:
Führen Sie dann einfach einen Dredge durch, indem Sie die Anzahl der Prädiktorvariablen und die Funktion max.r angeben:
Dies funktioniert für lme4-Modelle. Nlme-Modelle finden Sie unter: https://github.com/rojaff/dredge_mc
quelle
VIF (Varianzinflationsfaktor) kann einfach gemessen werden durch:
quelle