So führen sie einen likelihood-ratio-test in python durch
Ein Likelihood-Ratio-Test vergleicht die Anpassungsgüte zweier verschachtelter Regressionsmodelle .
Ein verschachteltes Modell ist einfach ein Modell, das eine Teilmenge von Prädiktorvariablen im gesamten Regressionsmodell enthält.
Angenommen, wir haben das folgende Regressionsmodell mit vier Prädiktorvariablen:
Y = β 0 + β 1 x 1 + β 2 x 2 + β 3 x 3 + β 4 x 4 + ε
Ein Beispiel für ein verschachteltes Modell wäre das folgende Modell mit nur zwei der ursprünglichen Prädiktorvariablen:
Y = β 0 + β 1 x 1 + β 2 x 2 + ε
Um festzustellen, ob sich diese beiden Modelle erheblich unterscheiden, können wir einen Likelihood-Ratio-Test durchführen, der die folgenden Null- und Alternativhypothesen verwendet:
H 0 : Das vollständige Modell und das verschachtelte Modell passen gleich gut zu den Daten. Sie sollten also ein verschachteltes Modell verwenden .
H A : Das vollständige Modell passt deutlich besser zu den Daten als das verschachtelte Modell. Sie müssen also die vollständige Vorlage verwenden .
Wenn der p-Wert des Tests unter einem bestimmten Signifikanzniveau liegt (z. B. 0,05), können wir die Nullhypothese ablehnen und daraus schließen, dass das vollständige Modell eine deutlich bessere Anpassung bietet.
Das folgende Schritt-für-Schritt-Beispiel zeigt, wie Sie einen Likelihood-Ratio-Test in Python durchführen.
Schritt 1: Daten laden
In diesem Beispiel zeigen wir, wie die folgenden zwei Regressionsmodelle in Python mithilfe von Daten aus dem mtcars- Datensatz angepasst werden:
Vollständiges Modell: mpg = β 0 + β 1 verfügbar + β 2 Vergaser + β 3 PS + β 4 Zyl
Modell: mpg = β 0 + β 1 verfügbar + β 2 Kohlenhydrate
Zuerst laden wir den Datensatz:
from sklearn. linear_model import LinearRegression import statsmodels. api as sm import pandas as pd import scipy #define URL where dataset is located url = "https://raw.githubusercontent.com/Statorials/Python-Guides/main/mtcars.csv" #read in data data = pd. read_csv (url)
Verwandte Themen: So lesen Sie CSV-Dateien mit Pandas
Schritt 2: Passen Sie die Regressionsmodelle an
Zuerst passen wir das vollständige Modell an und berechnen die Log-Likelihood des Modells:
#define response variable y1 = data['mpg'] #define predictor variables x1 = data[['disp', 'carb', 'hp', 'cyl']] #add constant to predictor variables x1 = sm. add_constant (x1) #fit regression model full_model = sm. OLS (y1,x1). fit () #calculate log-likelihood of model full_ll = full_model. llf print (full_ll) -77.55789711787898
Als nächstes passen wir das reduzierte Modell an und berechnen die Log-Likelihood des Modells:
#define response variable y2 = data['mpg'] #define predictor variables x2 = data[['disp', 'carb']] #add constant to predictor variables x2 = sm. add_constant (x2) #fit regression model reduced_model = sm. OLS (y2, x2). fit () #calculate log-likelihood of model reduced_ll = reduced_model. llf print (reduced_ll) -78.60301334355185
Schritt 3: Führen Sie den Log-Likelihood-Test durch
Als nächstes verwenden wir den folgenden Code, um den Plausibilitätstest durchzuführen:
#calculate likelihood ratio Chi-Squared test statistic
LR_statistic = -2 * (reduced_ll-full_ll)
print (LR_statistic)
2.0902324513457415
#calculate p-value of test statistic using 2 degrees of freedom
p_val = scipy. stats . chi2 . sf (LR_statistic, 2)
print (p_val)
0.35165094613502257
Aus dem Ergebnis können wir ersehen, dass die Chi-Quadrat-Teststatistik 2,0902 und der entsprechende p-Wert 0,3517 beträgt.
Da dieser p-Wert nicht kleiner als 0,05 ist, können wir die Nullhypothese nicht ablehnen.
Dies bedeutet, dass das vollständige Modell und das verschachtelte Modell gleich gut zu den Daten passen. Wir müssen daher das verschachtelte Modell verwenden, da die zusätzlichen Prädiktorvariablen im vollständigen Modell keine signifikante Verbesserung der Anpassung bewirken.
Unser endgültiges Modell wäre also:
mpg = β 0 + β 1 verfügbar + β 2 Kohlenhydrate
Hinweis : Bei der Berechnung des p-Werts haben wir zwei Freiheitsgrade verwendet, da dies den Unterschied in den gesamten verwendeten Prädiktorvariablen zwischen den beiden Modellen darstellt.
Zusätzliche Ressourcen
Die folgenden Tutorials bieten zusätzliche Informationen zur Verwendung von Regressionsmodellen in Python:
Eine vollständige Anleitung zur linearen Regression in Python
So führen Sie eine Polynomregression in Python durch
So führen Sie eine logistische Regression in Python durch