Rendre les séries temporelles stationnaires

Modèles ARIMA en Python

James Fulton

Climate informatics researcher

Aperçu

  • Tests statistiques de stationnarité
  • Rendre un jeu de données stationnaire
Modèles ARIMA en Python

Le test de Dickey-Fuller augmenté

  • Tests de non-stationnarité par tendance
  • Hypothèse nulle : la série est non stationnaire
Modèles ARIMA en Python

Appliquer le test adfuller

from statsmodels.tsa.stattools import adfuller

results = adfuller(df['close'])
Modèles ARIMA en Python

Interpréter le résultat du test

print(results)
(-1.34, 0.60, 23, 1235, {'1%': -3.435, '5%': -2.913, '10%': -2.568}, 10782.87)
  • Le 0e élément est la statistique de test (-1.34)
    • Plus c'est négatif, plus la stationnarité est probable
  • Le 1er élément est la p-valeur : (0.60)
    • p-valeur faible $\rightarrow$ rejet de l'hypothèse nulle. Rejet de la non-stationnarité.
  • Le 4e élément contient les valeurs critiques du test
Modèles ARIMA en Python

Interpréter le résultat du test

print(results)
(-1.34, 0.60, 23, 1235, {'1%': -3.435, '5%': -2.863, '10%': -2.568}, 10782.87)
  • Le 0e élément est la statistique de test (-1.34)
    • Plus c'est négatif, plus la stationnarité est probable
  • Le 1er élément est la p-valeur : (0.60)
    • p-valeur faible $\rightarrow$ rejet de l'hypothèse nulle. Rejet de la non-stationnarité.
  • Le 4e élément contient les valeurs critiques du test
1 https://www.statsmodels.org/dev/generated/statsmodels.tsa.stattools.adfuller.html
Modèles ARIMA en Python

L'intérêt du tracé

  • Tracer la série évite de mauvaises hypothèses
Modèles ARIMA en Python

L'intérêt du tracé

Modèles ARIMA en Python

Rendre une série temporelle stationnaire

Modèles ARIMA en Python

Prendre la différence

Différence : $\Delta y_t = y_t - y_{t-1}$

Modèles ARIMA en Python

Prendre la différence

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
Modèles ARIMA en Python

Prendre la différence

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
Modèles ARIMA en Python

Prendre la différence

Modèles ARIMA en Python

Autres transformations

Exemples d'autres transformations

  • Appliquer le log
    • np.log(df)
  • Appliquer la racine carrée
    • np.sqrt(df)
  • Appliquer la variation proportionnelle
    • df.shift(1)/df
Modèles ARIMA en Python

Passons à la pratique !

Modèles ARIMA en Python

Preparing Video For Download...