Розширений тест дікі-фуллера в 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

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

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