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