Ich bin auf genau die gleiche Frage gestoßen und habe versucht, mich durchzuarbeiten. Siehe meine ausführliche Antwort unten.
Zunächst habe ich 4 Optionen gefunden, die ähnliche VIF-Werte in R erzeugen:
• corvif
Befehl aus dem AED-Paket,
• vif
Befehl aus dem Autopaket,
• vif
Befehl aus dem RMS-Paket,
• vif
Befehl aus dem DAAG-Paket.
Die Verwendung dieser Befehle für eine Reihe von Prädiktoren, die keine Faktoren / kategorialen Variablen oder Polynomterme enthalten, ist sehr einfach. Alle drei Befehle erzeugen dieselbe numerische Ausgabe, obwohl der corvif
Befehl aus dem AED-Paket die Ergebnisse als GVIF kennzeichnet.
Typischerweise kommt GVIF jedoch nur für Faktoren und Polynomvariablen ins Spiel. Variablen, die mehr als 1 Koeffizienten und damit mehr als 1 Freiheitsgrad erfordern, werden typischerweise mit dem GVIF ausgewertet. Für Ein-Koeffizienten-Terme ist VIF gleich GVIF.
Daher können Sie Standard-Faustregeln anwenden, um festzustellen, ob Kollinearität ein Problem darstellt, z. B. ein Schwellenwert von 3, 5 oder 10. Es kann (sollte) jedoch Vorsicht geboten sein (siehe: http://www.nkd-group.com/ghdash/mba555/PDF/VIF%20article.pdf ).
In case of multi-coefficient terms, as for e.g. categorical predictors, the 4 packages produce different outputs. The vif
commands from the rms and DAAG packages produce VIF values, whereas the other two produce GVIF values.
Let us have a look at VIF values from the rms and DAAG packages first:
TNAP ICE RegB RegC RegD RegE
1.994 2.195 3.074 3.435 2.907 2.680
TNAP und ICE sind kontinuierliche Prädiktoren und Reg ist eine kategoriale Variable, die von den Dummies RegB bis RegE dargestellt wird. In diesem Fall ist die RegA die Basis. Alle VIF-Werte sind eher moderat und normalerweise kein Grund zur Sorge. Das Problem mit diesem Ergebnis ist, dass es von der Basislinie der kategorialen Variablen beeinflusst wird. Um sicherzugehen, dass ein VIF-Wert nicht über einem akzeptablen Wert liegt, muss diese Analyse für jede Ebene der kategorialen Variablen, die die Basislinie darstellt, wiederholt werden. In diesem Fall fünfmal.
Durch Anwenden des corvif
Befehls aus dem AED-Paket oder des vif
Befehls aus dem Fahrzeugpaket werden GVIF-Werte erzeugt:
| GVIF | Df | GVIF^(1/2Df) |
TNAP | 1.993964 | 1 | 1.412078 |
ICE | 2.195035 | 1 | 1.481565 |
Reg | 55.511089 | 5 | 1.494301 |
Die GVIF wird für Mengen verwandter Regressoren berechnet, z. B. für eine Menge von Dummy-Regressoren. Für die beiden stetigen Variablen TNAP und ICE sind dies die gleichen VIF-Werte wie zuvor. Für die kategoriale Variable Reg erhalten wir jetzt einen sehr hohen GVIF-Wert, obwohl die VIF-Werte für die einzelnen Ebenen der kategorialen Variablen alle moderat waren (wie oben gezeigt).
Die Interpretation ist jedoch unterschiedlich. Für die beiden stetigen Variablen G VichF( 1 / ( 2 × D f) ) (which is basically the square root of the VIF/GVIF value as DF = 1) is the proportional change of the standard error and confidence interval of their coefficients due to the level of collinearity. The GVIF(1/(2×Df)) value of the categorical variable is a similar measure for the reduction in precision of the coefficients' estimation due to collinearity (even though not ready for quoting also look at http://socserv2.socsci.mcmaster.ca/jfox/papers/linear-models-problems.pdf).
If we then simply apply the same standard rules of thumb for GVIF(1/(2×Df)) values as recommended in literature for the VIF, we simply need to square GVIF(1/(2×Df)).
Reading through all the forum posts, short notes in the web and scientific papers, it seems that there is quite some confusion going on. In peer reviewed papers, I found the values for GVIF(1/(2×Df)) ignored and the same standard rules suggested for the VIF are applied to the GVIF values. In another paper, GVIF values of close to 100 are excepted because of a reasonably small GVIF(1/(2×Df)) (due to a high DF). The rule of GVIF2(1/(2×Df))<2 is applied in some publications, which would equal a VIF of 4 for one-coefficient variables.