Rendre une série chronologique stationnaire

Modèles ARIMA en Python

James Fulton

Climate informatics researcher

Aperçu

  • Tests statistiques de stationnarité
  • Rendre un ensemble 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 valeur p : (0.60)
    • Petite valeur p $\rightarrow$ rejeter l'hypothèse nulle. Rejeter la non-stationnarité.
  • Le 4e élément contient les valeurs critiques
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 valeur p : (0.60)
    • Petite valeur p $\rightarrow$ rejeter l'hypothèse nulle. Rejeter la non-stationnarité.
  • Le 4e élément contient les valeurs critiques
1 https://www.statsmodels.org/dev/generated/statsmodels.tsa.stattools.adfuller.html
Modèles ARIMA en Python

La valeur du traçage

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

La valeur du traçage

Modèles ARIMA en Python

Rendre une série chronologique 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

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

Passons à la pratique !

Modèles ARIMA en Python

Preparing Video For Download...