So berechnen sie vif in python
Multikollinearität in der Regressionsanalyse tritt auf, wenn zwei oder mehr erklärende Variablen stark miteinander korrelieren, sodass sie im Regressionsmodell keine eindeutigen oder unabhängigen Informationen liefern.
Wenn der Korrelationsgrad zwischen den Variablen hoch genug ist, kann dies zu Problemen bei der Anpassung und Interpretation des Regressionsmodells führen.
Eine Möglichkeit, Multikollinearität zu erkennen, ist die Verwendung einer Metrik namens Variance Inflation Factor (VIF) , die die Korrelation und Stärke der Korrelation zwischen erklärenden Variablen in einem Regressionsmodell misst.
In diesem Tutorial wird erklärt, wie man VIF in Python berechnet.
Beispiel: VIF in Python berechnen
Für dieses Beispiel verwenden wir einen Datensatz, der die Attribute von 10 Basketballspielern beschreibt:
import numpy as np import pandas as pd #create dataset df = pd.DataFrame({'rating': [90, 85, 82, 88, 94, 90, 76, 75, 87, 86], 'points': [25, 20, 14, 16, 27, 20, 12, 15, 14, 19], 'assists': [5, 7, 7, 8, 5, 7, 6, 9, 9, 5], 'rebounds': [11, 8, 10, 6, 6, 9, 6, 10, 10, 7]}) #view dataset df rating points assists rebounds 0 90 25 5 11 1 85 20 7 8 2 82 14 7 10 3 88 16 8 6 4 94 27 5 6 5 90 20 7 9 6 76 12 6 6 7 75 15 9 10 8 87 14 9 10 9 86 19 5 7
Angenommen, wir möchten ein multiples lineares Regressionsmodell anpassen, indem wir die Bewertung als Antwortvariable und Punkte, Assists und Rebounds als erklärende Variablen verwenden.
Um den VIF für jede erklärende Variable im Modell zu berechnen, können wir die Funktion variance_inflation_factor() aus der statsmodels-Bibliothek verwenden:
from patsy import damatrices from statsmodels.stats.outliers_influence import variance_inflation_factor #find design matrix for linear regression model using 'rating' as response variable y, X = dmatrices('rating ~ points+assists+rebounds', data=df, return_type='dataframe') #calculate VIF for each explanatory variable vivid = pd.DataFrame() vive['VIF'] = [variance_inflation_factor(X.values, i) for i in range(X.shape[1])] vivid['variable'] = X.columns #view VIF for each explanatory variable lively Variable VIF 0 101.258171 Intercept 1 1.763977 points 2 1.959104 assists 3 1.175030 rebounds
Wir können die VIF-Werte für jede der erklärenden Variablen beobachten:
- Punkte: 1,76
- Vorlagen: 1,96
- Rebounds: 1,18
Hinweis: Ignorieren Sie das VIF für „Intercept“ in der Vorlage, da dieser Wert nicht relevant ist.
So interpretieren Sie VIF-Werte
Der VIF-Wert beginnt bei 1 und hat keine Obergrenze. Eine allgemeine Regel für die Interpretation von VIFs lautet:
- Ein Wert von 1 gibt an, dass keine Korrelation zwischen einer bestimmten erklärenden Variablen und einer anderen erklärenden Variablen im Modell besteht.
- Ein Wert zwischen 1 und 5 weist auf eine mäßige Korrelation zwischen einer bestimmten erklärenden Variablen und anderen erklärenden Variablen im Modell hin, ist jedoch oft nicht schwerwiegend genug, um besondere Aufmerksamkeit zu erfordern.
- Ein Wert größer als 5 weist auf eine potenziell schwerwiegende Korrelation zwischen einer bestimmten erklärenden Variablen und anderen erklärenden Variablen im Modell hin. In diesem Fall sind die Koeffizientenschätzungen und p-Werte in den Regressionsergebnissen wahrscheinlich unzuverlässig.
Da jeder der VIF-Werte der erklärenden Variablen in unserem Regressionsmodell nahe bei 1 liegt, ist Multikollinearität in unserem Beispiel kein Problem.