Стаціонаризація часових рядів

Моделі ARIMA в Python

James Fulton

Climate informatics researcher

Огляд

  • Статистичні тести на стаціонарність
  • Як зробити набір даних стаціонарним
Моделі ARIMA в Python

Розширений тест Дікі—Фуллера

  • Тести на трендову нестаціонарність
  • Нульова гіпотеза: часовий ряд нестаціонарний
Моделі ARIMA в Python

Застосування тесту adfuller

from statsmodels.tsa.stattools import adfuller

results = adfuller(df['close'])
Моделі ARIMA в Python

Інтерпретація результату тесту

print(results)
(-1.34, 0.60, 23, 1235, {'1%': -3.435, '5%': -2.913, '10%': -2.568}, 10782.87)
  • 0-й елемент — статистика тесту (-1.34)
    • Чим більш від'ємна, тим імовірніша стаціонарність
  • 1-й елемент — p-значення: (0.60)
    • Малe p-значення $\rightarrow$ відхиляємо нульову гіпотезу. Відхиляємо нестаціонарність.
  • 4-й елемент — критичні значення статистики тесту
Моделі ARIMA в Python

Інтерпретація результату тесту

print(results)
(-1.34, 0.60, 23, 1235, {'1%': -3.435, '5%': -2.863, '10%': -2.568}, 10782.87)
  • 0-й елемент — статистика тесту (-1.34)
    • Чим більш від'ємна, тим імовірніша стаціонарність
  • 1-й елемент — p-значення: (0.60)
    • Малe p-значення $\rightarrow$ відхиляємо нульову гіпотезу. Відхиляємо нестаціонарність.
  • 4-й елемент — критичні значення статистики тесту
1 https://www.statsmodels.org/dev/generated/statsmodels.tsa.stattools.adfuller.html
Моделі ARIMA в Python

Користь графіків

  • Візуалізація рядів убереже від хибних припущень
Моделі ARIMA в Python

Користь графіків

Моделі ARIMA в Python

Як зробити часовий ряд стаціонарним

Моделі ARIMA в Python

Обчислення різниці

Різниця: $\Delta y_t = y_t - y_{t-1}$

Моделі ARIMA в Python

Обчислення різниці

df_stationary = df.diff()
            city_population
date                       
1969-09-30              NaN
1970-03-31        -0.116156
1970-09-30         0.050850
1971-03-31        -0.153261
1971-09-30         0.108389
Моделі ARIMA в Python

Обчислення різниці

df_stationary = df.diff().dropna()
            city_population
date                       
1970-03-31        -0.116156
1970-09-30         0.050850
1971-03-31        -0.153261
1971-09-30         0.108389
1972-03-31        -0.029569
Моделі ARIMA в Python

Обчислення різниці

Моделі ARIMA в Python

Інші перетворення

Приклади інших перетворень

  • Взяти логарифм
    • np.log(df)
  • Взяти квадратний корінь
    • np.sqrt(df)
  • Взяти відносну зміну
    • df.shift(1)/df
Моделі ARIMA в Python

Давайте потренуємось!

Моделі ARIMA в Python

Preparing Video For Download...