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

Einen Kommentar hinzufügen

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