Test Dickey-Fuller augmenté en Python (avec exemple)
Une série temporelle est dite « stationnaire » si elle n’a pas de tendance, présente une variance constante dans le temps et possède une structure d’autocorrélation constante dans le temps.
Une façon de tester si une série chronologique est stationnaire consiste à effectuer un test de Dickey-Fuller augmenté , qui utilise les hypothèses nulles et alternatives suivantes :
H 0 : La série temporelle est non stationnaire. En d’autres termes, sa structure dépend du temps et sa variation n’est pas constante dans le temps.
H A : La série temporelle est stationnaire.
Si la valeur p du test est inférieure à un certain niveau de signification (par exemple α = 0,05), nous pouvons alors rejeter l’hypothèse nulle et conclure que la série chronologique est stationnaire.
L’exemple étape par étape suivant montre comment effectuer un test Dickey-Fuller augmenté en Python pour une série temporelle donnée.
Exemple : test Dickey-Fuller augmenté en Python
Supposons que nous disposions des données de séries chronologiques suivantes en Python :
data = [3, 4, 4, 5, 6, 7, 6, 6, 7, 8, 9, 12, 10]
Avant d’effectuer un test Dickey-Fuller augmenté sur les données, nous pouvons créer un tracé rapide pour visualiser les données :
import matplotlib.pyplot as plt plt.plot(data)
Pour effectuer un test Dickey-Fuller augmenté, nous pouvons utiliser la fonction adfuller() de la bibliothèque statsmodels . Tout d’abord, nous devons installer statsmodels :
pip install statsmodels
Ensuite, nous pouvons utiliser le code suivant pour effectuer le test de Dickey-Fuller augmenté :
from statsmodels.tsa.stattools import adfuller #perform augmented Dickey-Fuller test adfuller(data) (-0.9753836234744063, 0.7621363564361013, 0, 12, {'1%': -4.137829282407408, '5%': -3.1549724074074077, '10%': -2.7144769444444443}, 31.2466098872313)
Voici comment interpréter les valeurs les plus importantes du résultat :
- Statistique de test : -0,97538
- Valeur P : 0,7621
Puisque la valeur p n’est pas inférieure à 0,05, nous ne parvenons pas à rejeter l’hypothèse nulle.
Cela signifie que la série chronologique n’est pas stationnaire. En d’autres termes, sa structure dépend du temps et sa variation n’est pas constante dans le temps.
Ressources additionnelles
Comment tracer une série chronologique dans Matplotlib
Comment tracer plusieurs séries à partir d’un DataFrame Pandas
Comment effectuer un test de tendance Mann-Kendall en Python