Tijdreeksen stationair maken

ARIMA-modellen in Python

James Fulton

Climate informatics researcher

Overzicht

  • Statistische tests voor stationariteit
  • Een dataset stationair maken
ARIMA-modellen in Python

De Augmented Dickey-Fuller-test

  • Tests voor trend-niet-stationariteit
  • Nulhypothese: tijdreeks is niet-stationair
ARIMA-modellen in Python

De adfuller-test toepassen

from statsmodels.tsa.stattools import adfuller

results = adfuller(df['close'])
ARIMA-modellen in Python

De testresultaten interpreteren

print(results)
(-1.34, 0.60, 23, 1235, {'1%': -3.435, '5%': -2.913, '10%': -2.568}, 10782.87)
  • 0e element is teststatistiek (-1.34)
    • Negatiever = waarschijnlijker stationair
  • 1e element is p-waarde: (0.60)
    • Kleine p-waarde → nulhypothese verwerpen. Niet-stationair verwerpen.
  • 4e element zijn de kritieke waarden
ARIMA-modellen in Python

De testresultaten interpreteren

print(results)
(-1.34, 0.60, 23, 1235, {'1%': -3.435, '5%': -2.863, '10%': -2.568}, 10782.87)
  • 0e element is teststatistiek (-1.34)
    • Negatiever = waarschijnlijker stationair
  • 1e element is p-waarde: (0.60)
    • Kleine p-waarde → nulhypothese verwerpen. Niet-stationair verwerpen.
  • 4e element zijn de kritieke waarden
1 https://www.statsmodels.org/dev/generated/statsmodels.tsa.stattools.adfuller.html
ARIMA-modellen in Python

De waarde van plotten

  • Tijdreeksen plotten voorkomt verkeerde aannames
ARIMA-modellen in Python

De waarde van plotten

ARIMA-modellen in Python

Een tijdreeks stationair maken

ARIMA-modellen in Python

Het verschil nemen

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

ARIMA-modellen in Python

Het verschil nemen

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-modellen in Python

Het verschil nemen

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-modellen in Python

Het verschil nemen

ARIMA-modellen in Python

Andere transformaties

Voorbeelden van andere transformaties

  • Neem de log
    • np.log(df)
  • Neem de wortel
    • np.sqrt(df)
  • Neem de procentuele verandering
    • df.shift(1)/df
ARIMA-modellen in Python

Laten we oefenen!

ARIMA-modellen in Python

Preparing Video For Download...