Test di Dickey-Fuller, problema
Ciao a tutti.
Devo verificare la stazionarietà di due serie storiche, e per fare questo mi baso sul grafico ACF e sull'utilizzo del test di Dickey-Fuller. Il tutto lo eseguo tramite il software statistico R.
Vi espongo le due serie storiche con questi grafici:
1) questo è il grafico della prima serie storica

Visivamente sembra non esserci stazionarietà (presenza di trend decrescente) e questo è confermato dal grafico ACF che ho ottenuto tramite questo comando in R: acf(mia_serie)

poi sono andato ad eseguire il test ADF con il seguente comando: adf.test(mia_serie) e questo è il risultato
Augmented Dickey-Fuller Test
data: tserie
Dickey-Fuller = -4.5442, Lag order = 6, p-value = 0.01
alternative hypothesis: stationary
Warning message:
In adf.test(tserie) : p-value smaller than printed p-value
In pratica mi rifiuta l'ipotesi H0 e quindi mi dice che è stazionario! p-value = 0.01
Come mai?
2) questa seconda serie il problema è ancora piu evidente:

presenza sia di stagionalità che di trend evidente. Questo è il grafico ACF ottenuto con il solito comando:

e ho eseguito il test ADF con il medesimo comando di prima, ottenendo:
data: tserie
Dickey-Fuller = -7.3186, Lag order = 5, p-value = 0.01
alternative hypothesis: stationary
Warning message:
In adf.test(tserie) : p-value smaller than printed p-value
quindi mi rifiuta di nuovo H0 e mi dice che la serie è stazionaria.
Sbalgio qualcosa? Tra l'altro compare in entrambi i casi un warning.
Grazie a tutti.
Luca
Devo verificare la stazionarietà di due serie storiche, e per fare questo mi baso sul grafico ACF e sull'utilizzo del test di Dickey-Fuller. Il tutto lo eseguo tramite il software statistico R.
Vi espongo le due serie storiche con questi grafici:
1) questo è il grafico della prima serie storica

Visivamente sembra non esserci stazionarietà (presenza di trend decrescente) e questo è confermato dal grafico ACF che ho ottenuto tramite questo comando in R: acf(mia_serie)

poi sono andato ad eseguire il test ADF con il seguente comando: adf.test(mia_serie) e questo è il risultato
Augmented Dickey-Fuller Test
data: tserie
Dickey-Fuller = -4.5442, Lag order = 6, p-value = 0.01
alternative hypothesis: stationary
Warning message:
In adf.test(tserie) : p-value smaller than printed p-value
In pratica mi rifiuta l'ipotesi H0 e quindi mi dice che è stazionario! p-value = 0.01
Come mai?
2) questa seconda serie il problema è ancora piu evidente:

presenza sia di stagionalità che di trend evidente. Questo è il grafico ACF ottenuto con il solito comando:

e ho eseguito il test ADF con il medesimo comando di prima, ottenendo:
data: tserie
Dickey-Fuller = -7.3186, Lag order = 5, p-value = 0.01
alternative hypothesis: stationary
Warning message:
In adf.test(tserie) : p-value smaller than printed p-value
quindi mi rifiuta di nuovo H0 e mi dice che la serie è stazionaria.
Sbalgio qualcosa? Tra l'altro compare in entrambi i casi un warning.
Grazie a tutti.
Luca
Risposte
Ciao Luca,
un paio di idee: so che l'ADF test è molto sensibile al numero di lags che inserisci nella regressione ausiliaria. Se la funzione lo permette, prova ad aumentarli. Inoltre potresti provare ad eseguire anche un test KPSS, per conferma.
un paio di idee: so che l'ADF test è molto sensibile al numero di lags che inserisci nella regressione ausiliaria. Se la funzione lo permette, prova ad aumentarli. Inoltre potresti provare ad eseguire anche un test KPSS, per conferma.
grazie della risposta!
si in effetti è sensibile al numero di lag. La funzione di r che utilizzo mi permettet di impostare un numero di lag che preferisco. Come faccio a sapere che valore di lag inserire? E' sufficiente che sia un numero elevato oppure c'è un modo per calcolare un valore 'ottimale'?
Grazie!
si in effetti è sensibile al numero di lag. La funzione di r che utilizzo mi permettet di impostare un numero di lag che preferisco. Come faccio a sapere che valore di lag inserire? E' sufficiente che sia un numero elevato oppure c'è un modo per calcolare un valore 'ottimale'?
Grazie!
La mia docente suggeriva di usare i criteri di Akaike o Schwartz o di testare la significatività dei lags.
Prima di imbarcarti in queste operazioni, potresti provare con un numero di lags coerente con la serie: se si tratta di dati giornalieri, puoi provare con 7 lags (la settimana), se sono dati mensili provare con 12 e via così.
Prima di imbarcarti in queste operazioni, potresti provare con un numero di lags coerente con la serie: se si tratta di dati giornalieri, puoi provare con 7 lags (la settimana), se sono dati mensili provare con 12 e via così.