So testen sie die multikollinearität in python
Bei der Regressionsanalyse tritt Multikollinearität auf, wenn zwei oder mehr Prädiktorvariablen stark miteinander korrelieren, sodass sie im Regressionsmodell keine eindeutigen oder unabhängigen Informationen liefern.
Wenn der Korrelationsgrad zwischen den Prädiktorvariablen hoch genug ist, kann dies zu Problemen bei der Anpassung und Interpretation des Regressionsmodells führen.
Der einfachste Weg, Multikollinearität in einem Regressionsmodell zu erkennen, ist die Berechnung einer Metrik, die als Varianzinflationsfaktor bekannt ist und oft mit VIF abgekürzt wird.
VIF misst die Stärke der Korrelation zwischen Prädiktorvariablen in einem Modell. Er nimmt einen Wert zwischen 1 und positiver Unendlichkeit an.
Zur Interpretation von VIF-Werten verwenden wir die folgenden Faustregeln:
- VIF = 1: Es besteht keine Korrelation zwischen einer bestimmten Prädiktorvariablen und einer anderen Prädiktorvariablen im Modell.
- VIF zwischen 1 und 5: Es besteht eine mäßige Korrelation zwischen einer bestimmten Prädiktorvariablen und anderen Prädiktorvariablen im Modell.
- VIF > 5 : Es besteht eine starke Korrelation zwischen einer bestimmten Prädiktorvariablen und anderen Prädiktorvariablen im Modell.
Das folgende Beispiel zeigt, wie man Multikollinearität in einem Regressionsmodell in Python erkennt, indem man VIF-Werte für jede Prädiktorvariable im Modell berechnet.
Beispiel: Multikollinearitätstest in Python
Angenommen, wir haben den folgenden Pandas-DataFrame, der Informationen über verschiedene Basketballspieler enthält:
import pandas as pd #createDataFrame 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 DataFrame print (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
Nehmen wir an, wir möchten ein multiples lineares Regressionsmodell anpassen, indem wir „scoring“ als Antwortvariable und „points“ , „assists “ und „ rebounds“ als Prädiktorvariablen verwenden.
Um den VIF für jede Prädiktorvariable 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 regression model using 'rating' as response variable y , #create DataFrame to hold VIF values vive_df = pd. DataFrame () vive_df[' variable '] = X.columns #calculate VIF for each predictor variable vive_df[' VIF '] = [variance_inflation_factor(X. values , i) for i in range(X. shape [1])] #view VIF for each predictor variable print (viv_df) 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 Prädiktorvariablen sehen:
- 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.
Da jeder der VIF-Werte der Prädiktorvariablen im Modell nahe bei 1 liegt, stellt Multikollinearität im Modell kein Problem dar.
Zusätzliche Ressourcen
Die folgenden Tutorials erklären, wie Sie andere häufige Aufgaben in Python ausführen:
So führen Sie eine einfache lineare Regression in Python durch
So führen Sie eine multiple lineare Regression in Python durch
So erstellen Sie ein Restdiagramm in Python