Розширений тест дікі-фуллера в python (з прикладом)
Часовий ряд називається «стаціонарним», якщо він не має тенденції, представляє постійну дисперсію з часом і має постійну структуру автокореляції з часом.
Один із способів перевірити, чи є часовий ряд стаціонарним, — виконати розширений тест Дікі–Фуллера , який використовує такі нульові та альтернативні гіпотези:
H 0 : часовий ряд є нестаціонарним. Іншими словами, його структура залежить від часу, а його зміна непостійна з часом.
H A : часовий ряд є стаціонарним.
Якщо p-значення тесту нижче певного рівня значущості (наприклад, α = 0,05), тоді ми можемо відхилити нульову гіпотезу та зробити висновок, що часовий ряд є стаціонарним.
Наступний покроковий приклад показує, як виконати розширений тест Дікі-Фуллера в Python для певного часового ряду.
Приклад: розширений тест Дікі-Фуллера в Python
Припустімо, що ми маємо такі часові ряди даних у Python:
data = [3, 4, 4, 5, 6, 7, 6, 6, 7, 8, 9, 12, 10]
Перш ніж виконувати розширений тест Дікі-Фуллера на даних, ми можемо створити швидкий графік для візуалізації даних:
import matplotlib. pyplot as plt plt. plot (data)
Щоб виконати розширений тест Дікі-Фуллера, ми можемо використати функцію adfuller() із бібліотеки statsmodels . Спочатку нам потрібно встановити statsmodels:
pip install statsmodels
Тоді ми можемо використати наступний код для виконання розширеного тесту Дікі-Фуллера:
from statsmodels. tsa . stattools import adfuller #perform augmented Dickey-Fuller test adfuller(data) (-0.9753836234744063, 0.7621363564361013, 0, 12, {'1%': -4.137829282407408, '5%': -3.1549724074074077, '10%': -2.7144769444444443}, 31.2466098872313)
Ось як інтерпретувати найважливіші значення результату:
- Статистика тесту: -0,97538
- P-значення: 0,7621
Оскільки p-значення не менше 0,05, ми не можемо відхилити нульову гіпотезу.
Це означає, що часовий ряд не є стаціонарним. Іншими словами, його структура залежить від часу, а його зміна непостійна з часом.
Додаткові ресурси
Як побудувати часовий ряд у Matplotlib
Як побудувати декілька серій із Pandas DataFrame
Як виконати тест тенденції Манна-Кендалла в Python