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.

Einen Kommentar hinzufügen

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert