Quale test Dickey-Fuller per una serie storica modellata con un'intercettazione / deriva e una tendenza lineare?


16

Versione breve:

Ho una serie temporale di dati climatici che sto testando per la stazionarietà. Sulla base di ricerche precedenti, mi aspetto che il modello sottostante (o "generando", per così dire) i dati abbia un termine di intercettazione e una tendenza temporale lineare positiva. Per testare questi dati per la stazionarietà, dovrei usare il test Dickey-Fuller che include una tendenza di intercettazione e tempo, cioè l' equazione # 3 ?

yt=α0+α1t+δyt-1+ut

Oppure, dovrei usare il test DF che include solo un'intercettazione perché la prima differenza dell'equazione che credo sia alla base del modello ha solo un'intercettazione?

Versione lunga:

Come detto sopra, ho una serie temporale di dati climatici che sto testando per la stazionarietà. Sulla base di ricerche precedenti, mi aspetto che il modello alla base dei dati abbia un termine di intercettazione, una tendenza temporale lineare positiva e alcuni termini di errore normalmente distribuiti. In altre parole, mi aspetto che il modello sottostante assomigli a questo:

yt=a0+a1t+βyt1+ut

dove è normalmente distribuito. Dato che suppongo che il modello sottostante abbia sia una intercettazione che una tendenza temporale lineare, ho testato un'unità radice con l' equazione n. 3 del semplice test Dickey-Fuller, come mostrato:ut

yt=α0+α1t+δyt1+ut

Questo test restituisce un valore critico che mi porterebbe a rifiutare l'ipotesi nulla e concludere che il modello sottostante non è stazionario. Tuttavia, mi chiedo se lo sto applicando correttamente, poiché anche se si presume che il modello sottostante abbia un'intercettazione e una tendenza temporale, ciò non implica che lo farà anche la prima differenza . Anzi, al contrario, se la mia matematica è corretta.yt

Il calcolo della prima differenza in base all'equazione del modello sottostante ipotizzato dà: yt=ytyt1=[a0+a1t+βyt1+ut][a0+a1(t1)+βyt2+ut1]

yt=[a0a0]+[un'1t-un't(t-1)]+β[yt-1-yt-2]+[ut-ut-1]

yt=un'1+βyt-1+ut-ut-1

Pertanto, la prima differenza sembra avere solo un'intercettazione, non una tendenza temporale.yt

Penso che la mia domanda sia simile a questa , tranne che non sono sicuro di come applicare quella risposta alla mia domanda.

Dati di esempio:

Ecco alcuni dei dati di temperatura del campione con cui sto lavorando.

64.19749  
65.19011  
64.03281  
64.99111  
65.43837  
65.51817  
65.22061  
65.43191  
65.0221  
65.44038  
64.41756  
64.65764  
64.7486  
65.11544  
64.12437  
64.49148  
64.89215  
64.72688  
64.97553  
64.6361  
64.29038  
65.31076  
64.2114  
65.37864  
65.49637  
65.3289  
65.38394  
65.39384  
65.0984  
65.32695  
65.28  
64.31041  
65.20193  
65.78063  
65.17604  
66.16412  
65.85091  
65.46718  
65.75551  
65.39994  
66.36175  
65.37125  
65.77763  
65.48623  
64.62135  
65.77237  
65.84289  
65.80289  
66.78865  
65.56931  
65.29913  
64.85516  
65.56866  
64.75768  
65.95956  
65.64745  
64.77283  
65.64165  
66.64309  
65.84163  
66.2946  
66.10482  
65.72736  
65.56701  
65.11096  
66.0006  
66.71783  
65.35595  
66.44798  
65.74924  
65.4501  
65.97633  
65.32825  
65.7741  
65.76783  
65.88689  
65.88939  
65.16927  
64.95984  
66.02226  
66.79225  
66.75573  
65.74074  
66.14969  
66.15687  
65.81199  
66.13094  
66.13194  
65.82172  
66.14661  
65.32756  
66.3979  
65.84383  
65.55329  
65.68398  
66.42857  
65.82402  
66.01003  
66.25157  
65.82142  
66.08791  
65.78863  
66.2764  
66.00948  
66.26236  
65.40246  
65.40166  
65.37064  
65.73147  
65.32708  
65.84894  
65.82043  
64.91447  
65.81062  
66.42228  
66.0316  
65.35361  
66.46407  
66.41045  
65.81548  
65.06059  
66.25414  
65.69747  
65.15275  
65.50985  
66.66216  
66.88095  
65.81281  
66.15546  
66.40939  
65.94115  
65.98144  
66.13243  
66.89761  
66.95423  
65.63435  
66.05837  
66.71114 

1
Non so se ciò che è contenuto in questo link ( tamino.wordpress.com/2010/03/11/not-a-random-walk ) risponda alla tua domanda, ma ho pensato che probabilmente ti sarebbe comunque interessato.
Matt Albrecht,

@MattAlbrecht Questo è un link molto interessante. Sono ancora confuso su come dovrei applicare il test Dickey-Fuller alle mie serie storiche originali. Ho provato ad aggiungere informazioni più pertinenti nella mia recente modifica.
Ricardo Altamirano,

Mi dispiace, non posso darti una risposta migliore, non sono in cima alla mia analisi delle serie storiche. Tuttavia, potresti anche essere interessato a questa domanda che ho posto di recente ( stats.stackexchange.com/questions/27748 ) che è anche sulle serie temporali climatiche e ha una bella analisi dettagliata sulla temperatura vs CO2 da una serie temporale pro. Potrebbe aiutare gli altri se avessi anche alcuni dati che sei stato in grado di pubblicare?
Matt Albrecht,

@MattAlbrecht Ho aggiunto alcuni dati di esempio. Esiste un formato migliore per includerlo?
Ricardo Altamirano,

Risposte:


19

È necessario considerare la tendenza alla deriva e (parametrica / lineare) nei livelli delle serie temporali al fine di specificare i termini deterministici nella regressione Dickey-Fuller aumentata che è in termini delle prime differenze delle serie temporali. La confusione deriva esattamente dal derivare l'equazione delle prime differenze nel modo in cui hai fatto.

(Aumentato) Modello di regressione Dickey-Fuller

Yt=β0,l+β1,lt+β2,lYt-1+εt
H0:β2,l=1

ΔYt=β1,l+β2,lΔYt-1+Δεt

Yt-1

ΔYt=β0,l+β1,lt+(β2,l-1)Yt-1+εtβ0,d+β1,dt+β2,dYt-1+εt
H0:β2,d=0β2,d

H0:[β2,d,β1,l]'=[0,0]'ur.dfurca

Consideriamo alcuni esempi in dettaglio.

Esempi

1. Utilizzo delle serie di investimenti statunitensi

Il primo esempio utilizza le serie di investimenti statunitensi discusse in Lutkepohl e Kratzig (2005, pag. 9) . Di seguito la trama della serie e la sua prima differenza.

inserisci qui la descrizione dell'immagine

ΔYt=β0,d+β2,dYt-1+Σj=13γjΔYt-j+εt
Nota il punto chiave che ho esaminato i livelli per specificare l'equazione di regressione nelle differenze.

Il codice R per fare ciò è riportato di seguito:

    library(urca)
    library(foreign)
    library(zoo)

    tsInv <- as.zoo(ts(as.data.frame(read.table(
      "http://www.jmulti.de/download/datasets/US_investment.dat", skip=8, header=TRUE)), 
                       frequency=4, start=1947+2/4))
    png("USinvPlot.png", width=6,
        height=7, units="in", res=100)
    par(mfrow=c(2, 1))
    plot(tsInv$USinvestment)
    plot(diff(tsInv$USinvestment))
    dev.off()

    # ADF with intercept
    adfIntercept <- ur.df(tsInv$USinvestment, lags = 3, type= 'drift')
    summary(adfIntercept)

H:[β2,d,β0,l]'=[0,0]'

2. Utilizzo delle serie di consumi tedeschi (log)

Il secondo esempio sta utilizzando le serie temporali trimestrali tedesche destagionalizzate dei consumi (log). Di seguito la trama della serie e le sue differenze.

inserisci qui la descrizione dell'immagine

ΔYt=β0,d+β1,dt+β2,dYt-1+Σj=14γjΔYt-j+εt

Il codice R per fare questo è

# using the (log) consumption series
tsConsump <- zoo(read.dta("http://www.stata-press.com/data/r12/lutkepohl2.dta"), frequency=1)
png("logConsPlot.png", width=6,
    height=7, units="in", res=100)
par(mfrow=c(2, 1))
plot(tsConsump$ln_consump)
plot(diff(tsConsump$ln_consump))
dev.off()

# ADF with trend
adfTrend <- ur.df(tsConsump$ln_consump, lags = 4, type = 'trend')
summary(adfTrend)

H:[β2,d,β1,l]'=[0,0]'

3. Utilizzo dei dati di temperatura forniti

Ora possiamo valutare le proprietà dei tuoi dati. Di seguito sono riportati i soliti grafici in livelli e prime differenze.

inserisci qui la descrizione dell'immagine

Questi indicano che i tuoi dati hanno un'intercettazione e una tendenza, quindi eseguiamo il test ADF (senza termini di prima differenza ritardati), utilizzando il seguente codice R

# using the given data
tsTemp <- read.table(textConnection("temp 
64.19749  
65.19011  
64.03281  
64.99111  
65.43837  
65.51817  
65.22061  
65.43191  
65.0221  
65.44038  
64.41756  
64.65764  
64.7486  
65.11544  
64.12437  
64.49148  
64.89215  
64.72688  
64.97553  
64.6361  
64.29038  
65.31076  
64.2114  
65.37864  
65.49637  
65.3289  
65.38394  
65.39384  
65.0984  
65.32695  
65.28  
64.31041  
65.20193  
65.78063  
65.17604  
66.16412  
65.85091  
65.46718  
65.75551  
65.39994  
66.36175  
65.37125  
65.77763  
65.48623  
64.62135  
65.77237  
65.84289  
65.80289  
66.78865  
65.56931  
65.29913  
64.85516  
65.56866  
64.75768  
65.95956  
65.64745  
64.77283  
65.64165  
66.64309  
65.84163  
66.2946  
66.10482  
65.72736  
65.56701  
65.11096  
66.0006  
66.71783  
65.35595  
66.44798  
65.74924  
65.4501  
65.97633  
65.32825  
65.7741  
65.76783  
65.88689  
65.88939  
65.16927  
64.95984  
66.02226  
66.79225  
66.75573  
65.74074  
66.14969  
66.15687  
65.81199  
66.13094  
66.13194  
65.82172  
66.14661  
65.32756  
66.3979  
65.84383  
65.55329  
65.68398  
66.42857  
65.82402  
66.01003  
66.25157  
65.82142  
66.08791  
65.78863  
66.2764  
66.00948  
66.26236  
65.40246  
65.40166  
65.37064  
65.73147  
65.32708  
65.84894  
65.82043  
64.91447  
65.81062  
66.42228  
66.0316  
65.35361  
66.46407  
66.41045  
65.81548  
65.06059  
66.25414  
65.69747  
65.15275  
65.50985  
66.66216  
66.88095  
65.81281  
66.15546  
66.40939  
65.94115  
65.98144  
66.13243  
66.89761  
66.95423  
65.63435  
66.05837  
66.71114"), header=T)
tsTemp <- as.zoo(ts(tsTemp, frequency=1))

png("tempPlot.png", width=6,
    height=7, units="in", res=100)
par(mfrow=c(2, 1))
plot(tsTemp$temp)
plot(diff(tsTemp$temp))
dev.off()

# ADF with trend
adfTrend <- ur.df(tsTemp$temp, type = 'trend')
summary(adfTrend)

I risultati sia per il test t che per il test F indicano che il valore nullo di non stazionarietà può essere rifiutato per le serie di temperature. Spero che chiarisca un po 'la questione.


5
Questa è una delle risposte più chiare e utili che ho ricevuto sulla rete Stack Exchange e raddrizza la mia confusione sui test di DF. Grazie.
Ricardo Altamirano,

@RicardoAltamirano Prego. Sono contento di aver potuto aiutare.
tchakravarty,

2
D'accordo, questa è un'ottima risposta.
RAH,

0

L'ipotesi nulla nel test Dickey-Fuller è che ci sia una radice unitaria in un processo. Quindi, quando si rifiuta il nulla, si ottiene che il processo è stazionario (con le solite avvertenze del test di ipotesi).

yt=α0+α1t+δyt-1+ut

ytytyt-1yt-1yt-1


0

Le risposte precedenti erano eccellenti.

Di solito si prende la decisione su quale test implementare in base alla trama. In questo caso, i dati sembrano avere un'intercettazione e una tendenza.

Se esegui il test di un'unità-radice in livelli, utilizzerai un modello di intercettazione e tendenza. Se si esegue il test in differenze, verrà utilizzato solo un modello di intercettazione.

Ho appena risposto a questa domanda perché devo raccomandarti di usare test stagionali su questi dati. Questi test sono davvero complessi (lavorare con la stagionalità non è facile). Tuttavia, la natura dei dati (temperatura) e perché nella trama è possibile osservare alcuni comportamenti stagionali. Quindi, dovresti ricercare il test HEGY e implementarlo se vuoi che le tue stime siano solide.

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.