Jak wykonać test ljung-box w pythonie


Test Ljunga-Boxa jest testem statystycznym sprawdzającym, czy w szeregu czasowym występuje autokorelacja.

Wykorzystuje następujące założenia:

H 0 : Reszty rozkładają się niezależnie.

H A : Reszty nie są dystrybuowane niezależnie; wykazują korelację szeregową.

Idealnie byłoby, gdybyśmy nie odrzucali hipotezy zerowej. Oznacza to, że chcielibyśmy, aby wartość p testu była większa niż 0,05, ponieważ oznacza to, że reszty naszego modelu szeregów czasowych są niezależne, co często przyjmujemy przy tworzeniu modelu.

W tym samouczku wyjaśniono, jak wykonać test Ljung-Box w Pythonie.

Przykład: test Ljung-Boxa w Pythonie

Aby wykonać test Ljung-Box na serii danych w Pythonie, możesz użyć funkcji acorr_ljungbox() z biblioteki statsmodels , która używa następującej składni:

acorr_ljungbox(x, przesunięcia=Brak)

Złoto:

  • x: seria danych
  • opóźnienia: liczba opóźnień do przetestowania

Ta funkcja zwraca statystykę testową i odpowiadającą jej wartość p. Jeżeli wartość p jest poniżej pewnego progu (np. α = 0,05), można odrzucić hipotezę zerową i stwierdzić, że reszty nie mają rozkładu niezależnego.

Poniższy kod pokazuje, jak używać tej funkcji do wykonania testu Ljung-Boxa na wbudowanym zestawie danych modeli statystycznych o nazwie „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

Statystyka testowa wynosi 107,86488 , a wartość p testu wynosi 1,157710e-21 , czyli znacznie mniej niż 0,05. Zatem odrzucamy hipotezę zerową testu i stwierdzamy, że reszty nie są niezależne.

Pamiętaj, że w tym przykładzie zdecydowaliśmy się użyć wartości przesunięcia wynoszącej 5, ale możesz wybrać dowolną wartość, której chcesz użyć dla przesunięcia. Na przykład moglibyśmy zamiast tego użyć wartości 20:

 #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

Statystyka testowa testu wynosi 343,634016 , a wartość p testu wynosi 9,117477e-61 , czyli znacznie mniej niż 0,05. Zatem po raz kolejny odrzucamy hipotezę zerową testu i stwierdzamy, że reszty nie są niezależne.

W zależności od konkretnej sytuacji możesz wybrać niższą lub wyższą wartość przesunięcia.

Dodaj komentarz

Twój adres e-mail nie zostanie opublikowany. Wymagane pola są oznaczone *