So führen Sie einen Ljung-Box-Test in Python durch

Von Fabian
Kategorie: Python
Lesezeit: 3 Minuten

Der Ljung-Box-Test ist ein statistischer Test, der prüft, ob in einer Zeitreihe eine Autokorrelation vorliegt.

Es werden die folgenden Hypothesen verwendet:

H 0: Die Residuen werden unabhängig verteilt.

H A: Die Residuen sind nicht unabhängig verteilt; Sie weisen eine serielle Korrelation auf.

Im Idealfall möchten wir die Nullhypothese nicht ablehnen. Das heißt, wir möchten, dass der p-Wert des Tests größer als 0,05 ist, da dies bedeutet, dass die Residuen für unser Zeitreihenmodell unabhängig sind. Dies ist häufig eine Annahme, die wir beim Erstellen eines Modells treffen.

In diesem Tutorial wird erklärt, wie Sie einen Ljung-Box-Test in Python durchführen.

Beispiel: Ljung-Box-Test in Python

Um den Ljung-Box-Test für eine Datenreihe in Python durchzuführen, können wir die Funktion acorr_ljungbox() aus der statsmodels-Bibliothek verwenden, die die folgende Syntax verwendet:

acorr_ljungbox(x, lags=None)

wo:

  • x: Die Datenreihe
  • lags: Anzahl der zu testenden Lags (zeitliche Verschiebung)

Diese Funktion gibt eine Teststatistik und einen entsprechenden p-Wert zurück. Wenn der p-Wert kleiner als ein Schwellenwert ist (z. B. α = 0,05), können Sie die Nullhypothese ablehnen und daraus schließen, dass die Residuen nicht unabhängig voneinander verteilt sind.

Der folgende Code zeigt, wie Sie mit dieser Funktion den Ljung-Box-Test für den integrierten statsmodels-Datensatz "SUNACTIVITY" durchführen können:

import statsmodels.api as sm

# Datenreihen laden
data = sm.datasets.sunspots.load_pandas().data

# Die ersten zehn Zeilen der Datenreihe anzeigen 
data[:5]

YEAR    SUNACTIVITY
0   1700.0  5.0
1   1701.0  11.0
2   1702.0  16.0
3   1703.0  23.0
4   1704.0  36.0

# ARMA-Modell an Datensatz anpassen
res = sm.tsa.ARMA(data["SUNACTIVITY"], (1,1)).fit(disp=-1)

#Ljung-Box-Test an Residuen mit Lag = 5 durchführen
sm.stats.acorr_ljungbox(res.resid, lags=[5], return_df=True)

          lb_stat   lb_pvalue
5   107.86488   1.157710e-21

Die Teststatistik des Tests beträgt 107,86488 und der p-Wert des Tests beträgt 1,157710e-21, was viel weniger als 0,05 ist. Daher lehnen wir die Nullhypothese des Tests ab und schließen daraus, dass die Residuen nicht unabhängig sind.

Beachten Sie, dass wir in diesem Beispiel einen Lag von 5 verwendet haben. Sie können jedoch einen beliebigen Wert auswählen, den Sie für den Lag verwenden möchten. Zum Beispiel könnten wir stattdessen einen Wert von 20 verwenden:

#Ljung-Box-Test an Residuen mit Lag = 20 durchführen
sm.stats.acorr_ljungbox(res.resid, lags=[20], return_df=True)

           lb_stat  lb_pvalue
20  343.634016  9.117477e-61

Die Teststatistik des Tests ist 343,634016 und der p-Wert des Tests ist 9,117477e-61, was viel weniger als 0,05 ist. Daher lehnen wir die Nullhypothese des Tests erneut ab und schließen daraus, dass die Residuen nicht unabhängig sind.

Abhängig von Ihrer speziellen Situation können Sie einen niedrigeren oder höheren Wert für den Lag auswählen.

Statistik: Der Weg zur Datenanalyse

* Amazon Affiliate Link


Das könnte Sie auch interessieren: