Göra tidsserier stationära

ARIMA-modeller i Python

James Fulton

Climate informatics researcher

Översikt

  • Statistiska test för stationäritet
  • Göra en datamängd stationär
ARIMA-modeller i Python

Augmented Dickey-Fuller-testet

  • Test för trend-icke-stationäritet
  • Nollhypotesen är att tidsserien är icke-stationär
ARIMA-modeller i Python

Tillämpa adfuller-testet

from statsmodels.tsa.stattools import adfuller

results = adfuller(df['close'])
ARIMA-modeller i Python

Tolka testresultatet

print(results)
(-1.34, 0.60, 23, 1235, {'1%': -3.435, '5%': -2.913, '10%': -2.568}, 10782.87)
  • Element 0 är teststatistikan (-1.34)
    • Mer negativt värde innebär högre sannolikhet för stationäritet
  • Element 1 är p-värdet: (0.60)
    • Litet p-värde $\rightarrow$ förkasta nollhypotesen. Förkasta icke-stationäritet.
  • Element 4 är de kritiska teststatistikorna
ARIMA-modeller i Python

Tolka testresultatet

print(results)
(-1.34, 0.60, 23, 1235, {'1%': -3.435, '5%': -2.863, '10%': -2.568}, 10782.87)
  • Element 0 är teststatistikan (-1.34)
    • Mer negativt värde innebär högre sannolikhet för stationäritet
  • Element 1 är p-värdet: (0.60)
    • Litet p-värde $\rightarrow$ förkasta nollhypotesen. Förkasta icke-stationäritet.
  • Element 4 är de kritiska teststatistikorna
1 https://www.statsmodels.org/dev/generated/statsmodels.tsa.stattools.adfuller.html
ARIMA-modeller i Python

Värdet av att plotta

  • Att plotta tidsserier hjälper dig undvika felaktiga antaganden
ARIMA-modeller i Python

Värdet av att plotta

ARIMA-modeller i Python

Göra en tidsserie stationär

ARIMA-modeller i Python

Ta differensen

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

ARIMA-modeller i Python

Ta differensen

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-modeller i Python

Ta differensen

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-modeller i Python

Ta differensen

ARIMA-modeller i Python

Andra transformationer

Exempel på andra transformationer

  • Ta logaritmen
    • np.log(df)
  • Ta kvadratroten
    • np.sqrt(df)
  • Ta den proportionella förändringen
    • df.shift(1)/df
ARIMA-modeller i Python

Nu kör vi en övning!

ARIMA-modeller i Python

Preparing Video For Download...