Stationarizarea seriilor de timp

Modele ARIMA în Python

James Fulton

Climate informatics researcher

Prezentare generală

  • Teste statistice pentru staționaritate
  • Stationarizarea unui set de date
Modele ARIMA în Python

Testul augmentat Dickey-Fuller

  • Testează non-staționaritatea de tip trend
  • Ipoteza nulă: seria de timp este non-staționară
Modele ARIMA în Python

Aplicarea testului adfuller

from statsmodels.tsa.stattools import adfuller

results = adfuller(df['close'])
Modele ARIMA în Python

Interpretarea rezultatului testului

print(results)
(-1.34, 0.60, 23, 1235, {'1%': -3.435, '5%': -2.913, '10%': -2.568}, 10782.87)
  • Elementul 0: statistică de test (-1.34)
    • Mai negativ → mai probabil staționar
  • Elementul 1: p-valoare (0.60)
    • p-valoare mică $\rightarrow$ respingere ipoteză nulă. Respingere non-staționaritate.
  • Elementul 4: statistici critice de test
Modele ARIMA în Python

Interpretarea rezultatului testului

print(results)
(-1.34, 0.60, 23, 1235, {'1%': -3.435, '5%': -2.863, '10%': -2.568}, 10782.87)
  • Elementul 0: statistică de test (-1.34)
    • Mai negativ → mai probabil staționar
  • Elementul 1: p-valoare (0.60)
    • p-valoare mică $\rightarrow$ respingere ipoteză nulă. Respingere non-staționaritate.
  • Elementul 4: statistici critice de test
1 https://www.statsmodels.org/dev/generated/statsmodels.tsa.stattools.adfuller.html
Modele ARIMA în Python

Valoarea vizualizării

  • Vizualizarea seriilor de timp previne ipoteze greșite
Modele ARIMA în Python

Valoarea vizualizării

Modele ARIMA în Python

Stationarizarea unei serii de timp

Modele ARIMA în Python

Calculul diferenței

Diferență: $\Delta y_t = y_t - y_{t-1}$

Modele ARIMA în Python

Calculul diferenței

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
Modele ARIMA în Python

Calculul diferenței

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
Modele ARIMA în Python

Calculul diferenței

Modele ARIMA în Python

Alte transformări

Exemple de alte transformări

  • Logaritm
    • np.log(df)
  • Rădăcină pătrată
    • np.sqrt(df)
  • Variație procentuală
    • df.shift(1)/df
Modele ARIMA în Python

Să exersăm!

Modele ARIMA în Python

Preparing Video For Download...