Qual teste de Dickey-Fuller para uma série temporal modelado com uma interceptação / desvio e uma tendência linear?

16

Versão curta:

Eu tenho uma série temporal de dados climáticos que estou testando quanto à estacionariedade. Com base em pesquisas anteriores, espero que o modelo subjacente (ou "gerador", por assim dizer) dos dados tenha um termo de interceptação e uma tendência temporal linear positiva. Para testar esses dados quanto à estacionariedade, devo usar o teste Dickey-Fuller que inclui uma interceptação e uma tendência temporal, ou seja, a equação nº 3 ?

yt=α0 0+α1 1t+δyt-1 1+vocêt

Ou devo usar o teste DF que inclui apenas uma interceptação porque a primeira diferença da equação que acredito estar subjacente ao modelo tem apenas uma interceptação?

Versão longa:

Como afirmado acima, tenho uma série temporal de dados climáticos que estou testando quanto à estacionariedade. Com base em pesquisas anteriores, espero que o modelo subjacente aos dados tenha um termo de interceptação, uma tendência de tempo linear positiva e algum termo de erro normalmente distribuído. Em outras palavras, espero que o modelo subjacente seja mais ou menos assim:

yt=uma0 0+uma1 1t+βyt-1 1+vocêt

onde vocêt é distribuído normalmente. Como estou assumindo que o modelo subjacente tem uma tendência temporal interceptada e linear, testei para uma raiz unitária com a equação # 3 do teste simples de Dickey-Fuller, conforme mostrado:

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

Esse teste retorna um valor crítico que me levaria a rejeitar a hipótese nula e concluir que o modelo subjacente não é estacionário. No entanto, I pergunta se eu estou aplicando isso corretamente, uma vez que, embora o modelo subjacente é suposto para ter uma intercepção e uma tendência do tempo, isso não implica que a primeira diferença vai bem. Muito pelo contrário, se minha matemática estiver correta.yt

Modelo de cálculo da primeira diferença com base na equação da assumidas subjacentes dá: yt=yt-yt-1 1=[uma0 0+uma1 1t+βyt-1 1+vocêt]-[uma0 0+uma1 1(t-1 1)+βyt-2+vocêt-1 1]

yt=[uma0 0-uma0 0]+[uma1 1t-umat(t-1 1)]+β[yt-1 1-yt-2]+[vocêt-vocêt-1 1]

yt=uma1 1+βyt-1 1+vocêt-vocêt-1 1

Portanto, a primeira diferença aparece apenas para ter uma interceptação, não uma tendência temporal.yt

Acho que minha pergunta é semelhante a esta , exceto que não tenho certeza de como aplicar essa resposta à minha pergunta.

Dados de amostra:

Aqui estão alguns dados de temperatura da amostra com os quais estou trabalhando.

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 
Ricardo Altamirano
fonte
11
Não sei se o conteúdo deste link ( tamino.wordpress.com/2010/03/11/not-a-random-walk ) responde à sua pergunta, mas achei que você provavelmente se interessaria por ela.
Matt Albrecht
@MattAlbrecht Esse é um link muito interessante. Ainda estou confuso sobre como devo aplicar o teste Dickey-Fuller à minha série temporal original. Tentei adicionar informações mais relevantes em minha edição recente.
Ricardo Altamirano
Desculpe, não posso lhe dar uma resposta melhor - não estou no topo da minha análise de séries temporais. No entanto, você também pode estar interessado nesta pergunta que fiz recentemente ( stats.stackexchange.com/questions/27748 ), que também é sobre séries temporais climáticas e tem uma boa análise detalhada sobre temperatura versus CO2 de um profissional de séries temporais. Pode ajudar outras pessoas se você também tiver alguns dados que possa postar?
Matt Albrecht
@MattAlbrecht Adicionei alguns dados de amostra. Existe um formato melhor para incluí-lo?
Ricardo Altamirano

Respostas:

19

Você precisa considerar a tendência de deriva e (paramétrica / linear) nos níveis das séries temporais para especificar os termos determinísticos na regressão Dickey-Fuller aumentada, que é em termos das primeiras diferenças da série temporal. A confusão surge exatamente da derivação da equação das primeiras diferenças da maneira que você fez.

(Aumentado) Modelo de regressão Dickey-Fuller

Suponha que os níveis da série incluam um termo de deriva e tendência A hipótese nula de não estacionariedade neste caso seria H 0

Yt=β0 0,eu+β1 1,eut+β2,euYt-1 1+εt
.H0 0:β2,eu=1 1

Uma equação para as primeiras diferenças implícitas nesse processo de geração de dados [DGP] é a que você derivou No entanto, isso é não a regressão Dickey Fuller (aumentada), conforme usada no teste.

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

Em vez disso, a versão correta pode ser obtida subtraindo de ambos os lados da primeira equação, resultando em Δ Y tYt1 Essaé a regressão Dickey-Fuller (aumentada) e a versão equivalente da hipótese nula de não estacionariedade é o testeH0

ΔYt=β0,l+β1,lt+(β2,l1)Yt1+εtβ0,d+β1,dt+β2,dYt1+εt
que é apenas um teste t usando a estimativa OLS de β 2 , d na regressão acima. Observe que a deriva e a tendência chegam a essa especificação inalterada.H0:β2,d=0β2,d

Um ponto adicional a ser observado é que, se você não tiver certeza da presença da tendência linear nos níveis das séries temporais, poderá testar conjuntamente a tendência linear e a raiz unitária, ou seja, H0:[β2,d,β1,l]=[0,0]ur.dfurca

Vamos considerar alguns exemplos em detalhes.

Exemplos

1. Usando a série de investimentos nos EUA

O primeiro exemplo usa a série de investimentos dos EUA, discutida em Lutkepohl e Kratzig (2005, pág. 9) . O enredo da série e sua primeira diferença são apresentados abaixo.

insira a descrição da imagem aqui

ΔYt=β0,d+β2,dYt1+j=13γjΔYtj+εt
Note the key point that I have looked at the levels to specify the regression equation in differences.

The R code to do this is given below:

    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)

The results indicate that the the null hypothesis of nonstationarity can be rejected for this series using the t-test based on the estimated coefficient. The joint F-test of the intercept and the slope coefficient (H:[β2,d,β0,l]=[0,0]) also rejects the null hypothesis that there is a unit root in the series.

2. Using German (log) consumption series

The second example is using the German quarterly seasonally adjusted time series of (log) consumption. The plot of the series and its differences are given below.

insira a descrição da imagem aqui

A partir dos níveis da série, fica claro que a série tem uma tendência; portanto, incluímos a tendência na regressão Dickey-Fuller aumentada, juntamente com quatro defasagens das primeiras diferenças para explicar a correlação serial, ou seja,

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

O código R para fazer isso é

# 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)

Os resultados indicam que o nulo de não-estacionariedade não pode ser rejeitado usando o teste t com base no coeficiente estimado. O teste F conjunto do coeficiente de tendência linear e do coeficiente de inclinação (H:[β2,d,β1 1,eu]=[0 0,0 0]) também indica que o nulo de não-estacionariedade não pode ser rejeitado.

3. Usando dados de temperatura fornecidos

Agora podemos avaliar as propriedades dos seus dados. Os gráficos usuais nos níveis e primeiras diferenças são apresentados abaixo.

insira a descrição da imagem aqui

Isso indica que seus dados têm uma interceptação e uma tendência; portanto, realizamos o teste do ADF (sem termos de primeira diferença defasados), usando o seguinte código 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)

Os resultados para o teste t e o teste F indicam que o nulo de não estacionariedade pode ser rejeitado para a série de temperaturas. Espero que isso esclareça um pouco a questão.

tchakravarty
fonte
5
Essa é uma das respostas mais claras e úteis que recebi na rede Stack Exchange e realmente esclarece minha confusão sobre os testes de DF. Obrigado.
Ricardo Altamirano
@RicardoAltamirano De nada. Ainda bem que pude ajudar.
Tchakravarty
2
Concorde que esta é uma resposta muito boa.
RAH #
0

A hipótese nula no teste de Dickey-Fuller é que existe uma raiz unitária em um processo. Portanto, quando você rejeita o nulo, percebe que seu processo é estacionário (com as ressalvas usuais do teste de hipóteses).

Em relação à sua matemática, a expressão

yt=α0 0+α1 1t+δyt-1 1+vocêt

não significa que yttem uma tendência. Para dizer que o processo tem uma tendência, sua definição deve incluir apenas esse processo. Na equação anterior você temyt de um lado e yt-1 1por outro. Quando você expressayt-1 1 em termos de yt-1 1 você chegou corretamente à conclusão de que não há tendência no processo diferenciado, se o processo inicial for estacionário.

mpiktas
fonte
0

As respostas anteriores foram excelentes.

Você geralmente decide qual teste implementar com base na plotagem. Nesse caso, os dados parecem ter uma interceptação e tendência.

Se você testar uma Raiz-unidade em níveis, usará um modelo de interceptação e tendência. Se você executar o teste de diferenças, usará apenas um modelo de interceptação.

Acabei de responder a esta pergunta porque devo recomendar que você use testes sazonais nesses dados. Esses testes são realmente complexos (trabalhar com sazonalidade não é fácil). No entanto, a natureza dos dados (temperatura) e porque no gráfico é possível observar algum comportamento sazonal. Então, você deve pesquisar o teste HEGY e implementá-lo se quiser que suas estimativas sejam robustas.

egodial
fonte