Test dickey-fuller aumentato in python (con esempio)
Una serie storica si dice “stazionaria” se non ha trend, presenta una varianza costante nel tempo e ha una struttura di autocorrelazione costante nel tempo.
Un modo per verificare se una serie temporale è stazionaria è eseguire un test Dickey-Fuller aumentato , che utilizza le seguenti ipotesi nulle e alternative:
H 0 : la serie temporale non è stazionaria. In altre parole, la sua struttura dipende dal tempo e la sua variazione non è costante nel tempo.
H A : La serie temporale è stazionaria.
Se il valore p del test è inferiore a un certo livello di significatività (ad esempio α = 0,05), allora possiamo rifiutare l’ipotesi nulla e concludere che la serie temporale è stazionaria.
Il seguente esempio passo passo mostra come eseguire un test Dickey-Fuller aumentato in Python per una determinata serie temporale.
Esempio: test Dickey-Fuller aumentato in Python
Supponiamo di avere i seguenti dati di serie temporali in Python:
data = [3, 4, 4, 5, 6, 7, 6, 6, 7, 8, 9, 12, 10]
Prima di eseguire un test Dickey-Fuller aumentato sui dati, possiamo creare un rapido grafico per visualizzare i dati:
import matplotlib. pyplot as plt plt. plot (data)
Per eseguire un test Dickey-Fuller aumentato, possiamo utilizzare la funzione adfuller() dalla libreria statsmodels . Innanzitutto, dobbiamo installare statsmodels:
pip install statsmodels
Quindi possiamo utilizzare il seguente codice per eseguire il test Dickey-Fuller aumentato:
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)
Ecco come interpretare i valori più importanti del risultato:
- Statistica del test: -0,97538
- Valore P: 0,7621
Poiché il valore p non è inferiore a 0,05, non riusciamo a rifiutare l’ipotesi nulla.
Ciò significa che la serie storica non è stazionaria. In altre parole, la sua struttura dipende dal tempo e la sua variazione non è costante nel tempo.
Risorse addizionali
Come tracciare una serie temporale in Matplotlib
Come tracciare più serie da un Pandas DataFrame
Come eseguire un test di tendenza di Mann-Kendall in Python