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

Aggiungi un commento

Il tuo indirizzo email non sarà pubblicato. I campi obbligatori sono contrassegnati *