Ein Likelihood-Quotienten-Test vergleicht die Anpassungsgüte zweier verschachtelter Regressionsmodelle .

Ein verschachteltes Modell ist einfach eines, das eine Teilmenge der 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 signifikant unterscheiden, können wir einen Likelihood-Quotienten-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. Daher sollten Sie das verschachtelte Modell verwenden.

H A : Das vollständige Modell passt deutlich besser zu den Daten als das verschachtelte Modell. Daher sollten Sie das vollständige Modell verwenden.

Wenn der p-Wert des Tests unter einem bestimmten Signifikanzniveau liegt (z. B. 0,05), können wir die Nullhypothese verwerfen und schlussfolgern, dass das vollständige Modell eine deutlich bessere Anpassung bietet.

Das folgende Schritt-für-Schritt-Beispiel zeigt, wie Sie einen Likelihood-Quotienten-Test in Python durchführen.

Schritt 1: Laden Sie die Daten

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 Disp + β 2 Vergaser + β 3 PS + β 4 Zyl

Reduziertes Modell: mpg = β 0 + β 1 disp + β 2 carb

Zuerst laden wir den Datensatz:

from sklearn.linear_model import LinearRegression
import statsmodels.api as sm
import pandas as pd
import scipy

#URL definieren, wo sich der Datensatz befindet
url = "https://raw.githubusercontent.com/Statology/Python-Guides/main/mtcars.csv"

#Daten einlesen
data = pd.read_csv(url)

Verwandte: 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-Wahrscheinlichkeit des Modells:

#Antwortvariable definieren
y1 = data['mpg']

#Prädiktorvariablen definieren
x1 = data[['disp', 'carb', 'hp', 'cyl']]

# Konstante zu Prädiktorvariablen hinzufügen
x1 = sm.add_constant(x1)

#fit-Regressionsmodell
full_model = sm.OLS(y1, x1).fit()

#Log-Wahrscheinlichkeit des Modells berechnen
full_ll = full_model.llf

print(full_ll)

-77.55789711787898

Dann passen wir das reduzierte Modell an und berechnen die Log-Wahrscheinlichkeit des Modells:

#Antwortvariable definieren
y2 = data['mpg']

#Prädiktorvariablen definieren
x2 = data[['disp', 'carb']]

# Konstante zu Prädiktorvariablen hinzufügen
x2 = sm.add_constant(x2)

#fit-Regressionsmodell
reduced_model = sm.OLS(y2, x2).fit()

#Log-Wahrscheinlichkeit des Modells berechnen
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 Log-Likelihood-Test durchzuführen:

#Berechnen Sie die Chi-Quadrat-Teststatistik für das Likelihood-Verhältnis
LR_statistic = -2*(reduced_ll-full_ll)

print(LR_statistic)

2.0902324513457415

# p-Wert der Teststatistik mit 2 Freiheitsgraden berechnen
p_val = scipy.stats.chi2.sf(LR_statistic, 2)

print(p_val)

0.35165094613502257

Aus der Ausgabe können wir ersehen, dass die Chi-Quadrat-Teststatistik 2,0902 und der entsprechende p- Wert 0,3517 ist.

Da dieser p-Wert nicht kleiner als 0,05 ist, werden wir die Nullhypothese nicht zurückweisen.

Das bedeutet, dass das vollständige Modell und das verschachtelte Modell gleich gut auf die Daten passen. Daher sollten wir das verschachtelte Modell verwenden, da die zusätzlichen Prädiktorvariablen im vollständigen Modell keine signifikante Verbesserung der Anpassung bieten.

Somit wäre unser endgültiges Modell:

mpg = β 0 + β 1 disp + β 2 carb

Hinweis : Wir haben bei der Berechnung des p-Werts 2 Freiheitsgrade verwendet, da dies die Differenz zwischen den gesamten Prädiktorvariablen darstellt, die zwischen den beiden Modellen verwendet wurden.

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 polynomiale Regression in Python durch
So führen Sie eine logistische Regression in Python durch

Statistik: Der Weg zur Datenanalyse

* Amazon Affiliate Link


Das könnte Sie auch interessieren: