Welchen

30

Ich versuche, Varianzinflationsfaktoren mithilfe der vifFunktion im R-Paket zu interpretieren car. Die Funktion druckt sowohl eine verallgemeinerte und auch GVIF 1 / ( 2 df ) . Laut der Hilfedatei dieser letztere WertVIFGVIF1/(2df)

Um die Dimension des Vertrauensellipsoids anzupassen, gibt die Funktion auch GVIF ^ [1 / (2 * df)] aus, wobei df die Freiheitsgrade sind, die dem Term zugeordnet sind.

Ich verstehe die Bedeutung dieser Erklärung in der Hilfedatei nicht, daher bin ich mir nicht sicher, ob ich oder GVIF 1 / ( 2 df ) verwenden soll . Bei meinem Modell sind diese beiden Werte sehr unterschiedlich (maximaler GVIF ~ 60 ; maximaler GVIF 1 / ( 2 df ) ~ 3 ).GVIFGVIF1/(2df)GVIF60GVIF1/(2df)3

Könnte mir bitte jemand erklären, welches ich verwenden soll und was unter Anpassen der Dimension des Vertrauensellipsoids zu verstehen ist?

jay
quelle

Antworten:

25

Georges Monette und ich stellten die GVIF in der Veröffentlichung "Generalized Collinearity Diagnostics", JASA 87: 178-183, 1992, vor ( Link ). Wie wir erklärt haben, repräsentiert der GVIF das quadratische Verhältnis der Hypervolumina des Gelenkvertrauensellipsoids für eine Teilmenge der Koeffizienten zum "utopischen" Ellipsoid, das erhalten würde, wenn die Regressoren in dieser Teilmenge nicht mit den Regressoren in der komplementären Teilmenge korreliert wären. Bei einem einzelnen Koeffizienten ist dies auf das übliche VIF spezialisiert. Um GVIFs über Dimensionen hinweg vergleichbar zu machen, haben wir die Verwendung von GVIF ^ (1 / (2 * Df)) vorgeschlagen, wobei Df die Anzahl der Koeffizienten in der Teilmenge ist. Tatsächlich reduziert dies die GVIF auf ein lineares Maß, und für die VIF ist Df = 1 aufgrund der Kollinearität im Konfidenzintervall für den Koeffizienten proportional zur Inflation.

John Fox
quelle
3
Willkommen auf unserer Webseite! Wir würden uns freuen, wenn Sie Ihr Konto registrieren und ab und zu einen Besuch abstatten würden. Ein kleiner Hinweis zur Haushaltsführung: Sie müssen Ihre Posts nicht signieren. Ihr Identicon mit einem Link zu Ihrer Benutzerseite wird automatisch zu jeder Antwort hinzugefügt, die Sie geben.
gung - Wiedereinsetzung von Monica
24

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:

corvifBefehl aus dem AED-Paket,

vifBefehl aus dem Autopaket,

vifBefehl aus dem RMS-Paket,

vifBefehl 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 corvifBefehl 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 corvifBefehls aus dem AED-Paket oder des vifBefehls 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 GVichF(1/(2×Df)) (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.

Jan Philipp S
quelle
Welcome to the site, @JanPhilippS. This seems like as much a new question as an answer to the OP's question. Please only use the "Your Answer" field to provide answers. If you have your own question, click the [ASK QUESTION] at the top & ask it there, then we can help you properly. Since you are new here, you may want to take our tour, which contains information for new users.
gung - Reinstate Monica
2
Well, it's not really a new question. Rather a detailed answer.
Jan Philipp S
1
@JanPhilippS, thanks for the links to sources for further reading. I think your post seemed like a quality answer that allowed for some reflection on the state of affairs.
timothy.s.lau
6

Fox & Monette (original citation for GVIF, GVIF^1/2df) suggest taking GVIF to the power of 1/2df makes the value of the GVIF comparable across different number of parameters. "It is analagous to taking the square root of the usual variance-inflation factor" ( from An R and S-Plus Companion to Applied Regression by John Fox). So yes, squaring it and applying the usual VIF "rule of thumb" seems reasonable.

acmw
quelle