Як виконати тест ljung-box на python


Тест Люнг-Бокса — це статистичний тест, який перевіряє наявність автокореляції в часовому ряді.

Він використовує такі припущення:

H 0 : Залишки розподіляються незалежно.

H A : Залишки не розподіляються незалежно; вони демонструють послідовну кореляцію.

В ідеалі ми хотіли б не відкидати нульову гіпотезу. Тобто ми хотіли б, щоб p-значення тесту було більше 0,05, оскільки це означає, що залишки нашої моделі часових рядів є незалежними, що часто є припущенням, яке ми робимо під час створення моделі.

Цей посібник пояснює, як виконати тест Ljung-Box у Python.

Приклад: тест Ljung-Box на Python

Щоб виконати тест Ljung-Box на серії даних у Python, ви можете використати функцію acorr_ljungbox() із бібліотеки statsmodels , яка використовує такий синтаксис:

acorr_ljungbox(x, offsets=None)

золото:

  • x: ряд даних
  • затримки: кількість затримок для тестування

Ця функція повертає тестову статистику та відповідне значення p. Якщо p-значення нижче певного порогу (наприклад, α = 0,05), ви можете відхилити нульову гіпотезу та зробити висновок, що залишки не розподілені незалежно.

Наступний код показує, як використовувати цю функцію для виконання тесту Ljung-Box на вбудованому наборі даних statsmodels під назвою “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

Статистика тесту становить 107,86488 , а значення p тесту – 1,157710e-21 , що набагато менше, ніж 0,05. Таким чином, ми відкидаємо нульову гіпотезу тесту та робимо висновок, що залишки не є незалежними.

Зверніть увагу, що в цьому прикладі ми вирішили використовувати значення зміщення 5, але ви можете вибрати будь-яке значення, яке хочете використовувати для зміщення. Наприклад, замість цього ми можемо використовувати значення 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

Статистика тесту становить 343,634016 , а значення p тесту становить 9,117477e-61 , що набагато менше, ніж 0,05. Таким чином, ми ще раз відкидаємо нульову гіпотезу тесту та робимо висновок, що залишки не є незалежними.

Залежно від вашої конкретної ситуації ви можете вибрати нижче або більше значення для використання для зсуву.

Додати коментар

Ваша e-mail адреса не оприлюднюватиметься. Обов’язкові поля позначені *