Jak učinit časovou řadu stacionární

ARIMA modely v Pythonu

James Fulton

Climate informatics researcher

Přehled

  • Statistické testy stacionarity
  • Převod datové sady na stacionární
ARIMA modely v Pythonu

Rozšířený Dickey-Fullerův test

  • Testuje nestacionaritu způsobenou trendem
  • Nulová hypotéza: časová řada je nestacionární
ARIMA modely v Pythonu

Použití testu adfuller

from statsmodels.tsa.stattools import adfuller

results = adfuller(df['close'])
ARIMA modely v Pythonu

Interpretace výsledku testu

print(results)
(-1.34, 0.60, 23, 1235, {'1%': -3.435, '5%': -2.913, '10%': -2.568}, 10782.87)
    1. prvek je testová statistika (-1,34)
      • Čím zápornější, tím pravděpodobnější stacionarita
    1. prvek je p-hodnota: (0,60)
      • Malá p-hodnota $\rightarrow$ zamítnutí nulové hypotézy. Zamítnutí nestacionarity.
    1. prvek jsou kritické testové statistiky
ARIMA modely v Pythonu

Interpretace výsledku testu

print(results)
(-1.34, 0.60, 23, 1235, {'1%': -3.435, '5%': -2.863, '10%': -2.568}, 10782.87)
    1. prvek je testová statistika (-1,34)
      • Čím zápornější, tím pravděpodobnější stacionarita
    1. prvek je p-hodnota: (0,60)
      • Malá p-hodnota $\rightarrow$ zamítnutí nulové hypotézy. Zamítnutí nestacionarity.
    1. prvek jsou kritické testové statistiky
1 https://www.statsmodels.org/dev/generated/statsmodels.tsa.stattools.adfuller.html
ARIMA modely v Pythonu

Hodnota vizualizace

  • Vizualizace časové řady pomáhá vyhnout se chybným předpokladům
ARIMA modely v Pythonu

Hodnota vizualizace

ARIMA modely v Pythonu

Převod časové řady na stacionární

ARIMA modely v Pythonu

Výpočet diference

Diference: $\Delta y_t = y_t - y_{t-1}$

ARIMA modely v Pythonu

Výpočet diference

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 modely v Pythonu

Výpočet diference

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 modely v Pythonu

Výpočet diference

ARIMA modely v Pythonu

Další transformace

Příklady dalších transformací

  • Logaritmus
    • np.log(df)
  • Odmocnina
    • np.sqrt(df)
  • Proporcionální změna
    • df.shift(1)/df
ARIMA modely v Pythonu

Pojďme procvičovat!

ARIMA modely v Pythonu

Preparing Video For Download...