So führen sie einen ljung-box-test in python durch
Der Ljung-Box-Test ist ein statistischer Test, der prüft, ob in einer Zeitreihe eine Autokorrelation vorliegt.
Dabei werden folgende Annahmen zugrunde gelegt:
H 0 : Die Residuen sind unabhängig voneinander verteilt.
H A : Residuen werden 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 unseres Zeitreihenmodells unabhängig sind, was häufig eine Annahme ist, die wir bei der Erstellung eines Modells treffen.
In diesem Tutorial wird erläutert, 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 Sie die Funktion acorr_ljungbox() aus der statsmodels- Bibliothek verwenden, die die folgende Syntax verwendet:
acorr_ljungbox(x, offsets=Keine)
Gold:
- x: die Datenreihe
- Verzögerungen: Anzahl der zu testenden Verzögerungen
Diese Funktion gibt eine Teststatistik und einen entsprechenden p-Wert zurück. Wenn der p-Wert unter einem bestimmten Schwellenwert liegt (z. B. α = 0,05), können Sie die Nullhypothese ablehnen und daraus schließen, dass die Residuen nicht unabhängig verteilt sind.
Der folgende Code zeigt, wie diese Funktion verwendet wird, um den Ljung-Box-Test für den integrierten Statistikmodelldatensatz „SUNACTIVITY“ durchzuführen:
import statsmodels.api as sm #load data series data = sm.datasets.sunspots.load_pandas().data #view first ten rows of data series 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 #fit ARMA model to dataset res = sm. tsa . ARMA (data[" SUNACTIVITY "],(1,1)). fit (disp=-1) #perform Ljung-Box test on residuals with lag=5 sm. stats . acorr_ljungbox (res. resid , lags=[5], return_df= True ) lb_stat lb_pvalue 5 107.86488 1.157710e-21
Die Teststatistik beträgt 107,86488 und der Test-p-Wert beträgt 1,157710e-21 , was viel weniger als 0,05 ist. Daher lehnen wir die Nullhypothese des Tests ab und kommen zu dem Schluss, dass die Residuen nicht unabhängig sind.
Beachten Sie, dass wir in diesem Beispiel einen Versatzwert von 5 verwenden. Sie können jedoch jeden beliebigen Wert für den Versatz auswählen. Beispielsweise könnten wir stattdessen einen Wert von 20 verwenden:
#perform Ljung-Box test on residuals with lag=20 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 beträgt 343,634016 und der p-Wert des Tests beträgt 9,117477e-61 , was viel weniger als 0,05 ist. Daher lehnen wir die Nullhypothese des Tests erneut ab und kommen zu dem Schluss, 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 Versatz wählen.