Hoe een ljung-box-test uit te voeren in python


De Ljung-Box-test is een statistische test die controleert of er sprake is van autocorrelatie in een tijdreeks.

Er wordt gebruik gemaakt van de volgende aannames:

H 0 : De residuen worden onafhankelijk verdeeld.

H A : Residuen worden niet onafhankelijk gedistribueerd; ze vertonen seriële correlatie.

Idealiter zouden we de nulhypothese niet willen verwerpen. Dat wil zeggen dat we graag willen dat de p-waarde van de test groter is dan 0,05, omdat dit betekent dat de residuen van ons tijdreeksmodel onafhankelijk zijn, wat vaak een aanname is die we maken bij het maken van een model.

In deze tutorial wordt uitgelegd hoe u een Ljung-Box-test uitvoert in Python.

Voorbeeld: Ljung-Box-test in Python

Om de Ljung-Box-test uit te voeren op een gegevensreeks in Python, kunt u de functie acorr_ljungbox() uit de statsmodels- bibliotheek gebruiken, die de volgende syntaxis gebruikt:

acorr_ljungbox(x, verschuivingen=Geen)

Goud:

  • x: de gegevensreeks
  • vertragingen: aantal vertragingen dat moet worden getest

Deze functie retourneert een teststatistiek en een bijbehorende p-waarde. Als de p-waarde onder een bepaalde drempel ligt (bijvoorbeeld α = 0,05), kun je de nulhypothese verwerpen en concluderen dat de residuen niet onafhankelijk verdeeld zijn.

De volgende code laat zien hoe u deze functie kunt gebruiken om de Ljung-Box-test uit te voeren op de ingebouwde statsmodels-gegevensset met de naam „SUNACTIVITY“:

 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

De teststatistiek is 107,86488 en de test-p-waarde is 1,157710e-21 , wat veel minder is dan 0,05. We verwerpen dus de nulhypothese van de test en concluderen dat de residuen niet onafhankelijk zijn.

Houd er rekening mee dat we in dit voorbeeld ervoor kiezen om een offsetwaarde van 5 te gebruiken, maar u kunt elke waarde kiezen die u voor de offset wilt gebruiken. We kunnen bijvoorbeeld in plaats daarvan een waarde van 20 gebruiken:

 #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

De teststatistiek van de test is 343,634016 en de p-waarde van de test is 9,117477e-61 , wat veel minder is dan 0,05. We verwerpen dus opnieuw de nulhypothese van de test en concluderen dat de residuen niet onafhankelijk zijn.

Afhankelijk van uw specifieke situatie kunt u een lagere of hogere waarde kiezen voor de compensatie.

Einen Kommentar hinzufügen

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