Consequências da modelagem de um processo não estacionário usando o ARMA?

23

Entendo que devemos usar o ARIMA para modelar uma série temporal não estacionária. Além disso, tudo o que li diz que o ARMA deve ser usado apenas para séries temporais estacionárias.

O que estou tentando entender é: o que acontece na prática ao classificar incorretamente um modelo e assumir d = 0uma série temporal não estacionária? Por exemplo:

controlData <- arima.sim(list(order = c(1,1,1), ar = .5, ma = .5), n = 44)

os dados de controle são assim:

 [1]   0.0000000   0.1240838  -1.4544087  -3.1943094  -5.6205257
 [6]  -8.5636126 -10.1573548  -9.2822666 -10.0174493 -11.0105225
[11] -11.4726127 -13.8827001 -16.6040541 -19.1966633 -22.0543414
[16] -24.8542959 -25.2883155 -23.6519271 -21.8270981 -21.4351267
[21] -22.6155812 -21.9189036 -20.2064343 -18.2516852 -15.5822178
[26] -13.2248230 -13.4220158 -13.8823855 -14.6122867 -16.4143756
[31] -16.8726071 -15.8499558 -14.0805114 -11.4016515  -9.3330560
[36]  -7.5676563  -6.3691600  -6.8471371  -7.5982880  -8.9692152
[41] -10.6733419 -11.6865440 -12.2503202 -13.5314306 -13.4654890

Supondo que não sabia que eram os dados ARIMA(1,1,1), talvez eu desse uma olhada pacf(controlData).

pacf (controlData)

Então eu uso o Dickey-Fuller para ver se os dados não são estacionários:

require('tseries')
adf.test(controlData)

# Augmented Dickey-Fuller Test
#
# data:  controlData
# Dickey-Fuller = -2.4133, Lag order = 3, p-value = 0.4099
# alternative hypothesis: stationary

adf.test(controlData, k = 1)

# Augmented Dickey-Fuller Test
#
#data:  controlData
# Dickey-Fuller = -3.1469, Lag order = 1, p-value = 0.1188
# alternative hypothesis: stationary

Então, suponho que os dados sejam ARIMA (2,0, *). Em seguida, use auto.arima(controlData)para tentar obter o melhor ajuste?

require('forecast')
naiveFit <- auto.arima(controlData)
naiveFit
# Series: controlData 
# ARIMA(2,0,1) with non-zero mean 
# 
# Coefficients:
#          ar1      ar2     ma1  intercept
#      1.4985  -0.5637  0.6427   -11.8690
# s.e.  0.1508   0.1546  0.1912     3.2647
#
# sigma^2 estimated as 0.8936:  log likelihood=-64.01
# AIC=138.02   AICc=139.56   BIC=147.05

Portanto, mesmo que os dados passados ​​e futuros sejam ARIMA (1,1,1), posso ficar tentado a classificá-los como ARIMA (2,0,1). tsdata(auto.arima(controlData))parece ser bom também.

Aqui está o que um modelador informado encontraria:

informedFit <- arima(controlData, order = c(1,1,1))
# informedFit
# Series: controlData 
# ARIMA(1,1,1)                    
#
# Coefficients:
#          ar1     ma1
#       0.4936  0.6859
# s.e.  0.1564  0.1764
#
# sigma^2 estimated as 0.9571:  log likelihood=-62.22
# AIC=130.44   AICc=131.04   BIC=135.79

1) Por que esses critérios de informação são melhores que o modelo selecionado por auto.arima(controlData)?

Agora, apenas comparo graficamente os dados reais e os 2 modelos:

plot(controlData)
lines(fitted(naiveFit), col = "red")
lines(fitted(informedFit), col = "blue")

tsPlots

2) No papel de advogado do diabo, que tipo de consequências eu pagaria usando um ARIMA (2, 0, 1) como modelo? Quais são os riscos desse erro?

3) Estou mais preocupado com quaisquer implicações para previsões futuras de vários períodos. Eu suponho que eles seriam menos precisos? Só estou procurando alguma prova.

4) Você sugeriria um método alternativo para a seleção de modelos? Há algum problema com o meu raciocínio como modelador "desinformado"?

Estou realmente curioso para saber quais são as outras conseqüências desse tipo de classificação incorreta. Estive procurando por algumas fontes e simplesmente não consegui encontrar nada. Toda a literatura que pude encontrar apenas detalhes sobre esse assunto, apenas afirmando que os dados devem estar estacionários antes de executar o ARMA e, se não estacionários, precisam ser diferenciados d vezes.

Obrigado!

Clark Henry
fonte
Minha impressão é que é análoga à suposição "erros ortogonais" na regressão transversal (isto é, influencia os erros padrão, mas não os coeficientes), mas estou realmente interessado em ouvir a resposta real.
shadowtalker

Respostas:

11

Minha impressão é que essa pergunta não tem uma resposta única e totalmente geral; portanto, explorarei apenas o caso mais simples e de uma maneira um pouco informal.

(1)yt=yt-1+vocêt,t=1,...,T,y0 0=0 0
vocêtE(vocêt2)=σvocê2

2)yt=Eu=1tvocêEu

UMA

(3)yt=βyt-1+vocêt,t=1,...,T,y0 0=0 0

β^β (vamos discutir o método de estimação somente se necessidade surge).

k

4)y^T+k=β^kyT

e seu MSE será

MSEUMA[y^T+k]=E(β^kyT-yT+k)2

(5)=E[(β^k-1)yT-Eu=T+1T+kvocêEu]2=E[(β^k-1)2yT2]+kσvocê2

(o termo do meio da praça desaparece, bem como os produtos cruzados de erros futuros).

B

6)Δyt=γΔyt-1+vocêt

γ^

(7)yt=yt-1+γ(yt-1-yt-2)+vocêt

prevendo o nível do processo, teremos

y^T+1=yT+γ^(yT-yT-1)

que, na realidade, dado o verdadeiro DGP, será

(8)y^T+1=yT+γ^vocêT

B

y^T+k=yT+(γ^+γ^2+...+γ^k)vocêT

|γ^|<10 0

(9)y^T+k=yT+γ^-γ^k+11-γ^vocêT

e entao

(10)MSEB[y^T+k]=E[(γ^-γ^k+11-γ^)2vocêT2]+kσvocê2

enquanto repito por conveniência

(5)MSEUMA[y^T+k]=E[(β^k-1)2yT2]+kσvocê2

Portanto, para que o modelo diferenciado tenha melhor desempenho em termos de previsão MSE, queremos

MSEB[y^T+k]MSEUMA[y^T+k]

E[(γ^-γ^k+11-γ^)2vocêT2]E[(β^k-1)2yT2]

BUMAβ^

β^>1kkBUMA .

UMAβ^<1k

E[(γ^1-γ^)2vocêT2]E[yT2]=Tσvocê2??

kk ).

(γ^1-γ^)20 0B

γ^vocêT

Cov[(γ^1-γ^)2,vocêT2]+E[(γ^1-γ^)2]σvocê2Tσvocê2??

Cov[(γ^1-γ^)2,vocêT2](T-E[(γ^1-γ^)2])σvocê2??

γ^Tγ^(0 0,1)

Portanto, sem discutir qualquer método específico de estimativa, acredito que fomos capazes de mostrar informalmente que se espera que o modelo diferenciado tenha melhor desempenho em termos de previsão MSE.

Alecos Papadopoulos
fonte
1

Essa é uma boa pergunta.

Pelo que sei, você acabou de considerar o pacf, mas isso não é suficiente. ACF e PACF são necessários para selecionar o melhor modelo.

Por outro lado, testes estacionários são fracos e sensíveis e precisam de uma grande quantidade de defasagens para serem testados.

Além disso, é preferível deixar séries temporais estacionárias antes de aplicar qualquer modelo. Grosso modo, os modelos ARIMA consideram apenas um caso especial de não-estacionário (preferencialmente na tendência).

Sobre suas perguntas, não tenho certeza sobre a função auto.arima, mas tenho certeza de que o número de pontos de dados no seu exemplo é pequeno. A simulação do modelo usando um grande número de pontos de dados responderia bem às suas perguntas. Além disso, aconselho a considerar o ACF das séries temporais e o PACF. Sobre a seleção de modelos, a regra geral é escolher o modelo mais simples (observe que o modelo mais simples após tornar a série temporal estacionária).

Refiro-lhe esta referência. Este livro não responde a todas as suas perguntas, mas fornece algumas pistas.

----- seção complementar ------- @nsw considerando uma tendência em seus dados. Se você considerar um modelo estacionário, ele resultará em uma previsão para cima / para baixo, mas, na verdade, os modelos ARMA são projetados para prever dados simples. Alterei seu código para refletir essa diferença:

require ('forecast')

require ('tseries')

controlData <- arima.sim (lista (ordem = c (1,1,1), ar = 0,5, ma = 0,5), n = 1000 )

acf (controlData)

ts.plot (controlData)

naiveFit <- arima (controlData, order = c (2,0,1))

trueFit <- arima (controlData, order = c (1,1,1))

PrnaiveFit <-forecast.Arima (naiveFit, 10)

PrtrueFit <- forecast.Arima (trueFit, 10)

Matplot (cbind (PrnaiveFit $ mean, PrtrueFit $ mean), tipo = 'b', col = c ('vermelho', 'verde'), ylab = c ('previsão'), pch = c ('n', 't'))

TPArrow
fonte
1
A pergunta pergunta por que é preferível "tornar estacionárias as séries temporais". Isso realmente não responde a essa pergunta.
Shadowtalker
@ssdecontrol Você está certo em geral. Estou realmente mais preocupado com as consequências implícitas na previsão após a especificação incorreta. Mas não quero bater muito no Hamed.HM. Ele ainda abordou minha última pergunta sobre "essa é a maneira correta de selecionar um modelo?" Mas só para reiterar, essa é a menor preocupação aqui.
Clark Henry