Uncategorized

Momento R do Dia – A Função de Autocorrelação Estendida (EACF) e os modelos ARIMA

O pessoal que usa modelos ARIMA gosta de olhar para os correlogramas. Entretanto, alguns autores propuseram uma ferramenta alternativa que é a função de autocorrelação estendida (EACF). A proposta está no artigo em Tsay & Tiao (1984) (cuja referência completa você encontra pesquisando a página do prof. Tsay) e, em português, aparece citada na segunda edição de Morettin & Toloi pela sempre ótima editora Blücher. Em poucas palavras:

The EACF method uses the fact that if the AR part of a mixed ARMA model is known, ‘filtering out’ the autoregression from the observed time series results in a pure MA process that enjoys the cutoff property in its ACF. (Cryer, J.D. & Chan, K-S. Time Series Analysis with applications in R, Springer, 2010, 2nd edition, p.116)

Mas, o quanto esta função nos ajuda a identificar o processos ARMA? O que Tsay e Tiao fazem é propor um método tabular de visualização (os detalhes podem ser encontrados nos textos citados). Vou aproveitar que o pacote TSA do R tem o comando eacf() e fazer alguns exemplos básicos. Para cada processo simulado (n = 500) vou colocar o EACF correspondente, ok?

Primeiramente, os casos simples: AR(1) e MA(1). Para estes, a EACF parece ter o padrão óbvio. Visualmente, você analisa o padrão triangular de “zeros”. No caso do AR(1), ele começa em AR(1) e MA(0). No caso do MA(1), é exatamente o oposto. o padrão triangular começa em AR(0) e MA(1).

eacf_arma1

 

As coisas não ficam muito mais fáceis com um ARMA(1,1).

eacf_arma2

Qual a diferença do caso A para o caso B? Apenas os parâmetros usados na simulação. Para o primeiro, temos um phi = 0.8 e um theta = 0.3. No segundo, fiz phi = theta = 0.8.

No caso dos dois ARMA(2,2) que simulei, a EACF já ajudou um pouco mais, mas não vou reproduzir os resultados aqui.

Outra ferramenta útil para se decidir sobre números de defasagens são os critérios de seleção AIC ou BIC embora a literatura indique o uso destes apenas em modelos autoregressivos puros. O problema é que nem sempre sabemos que modelos temos à nossa frente. Assim, usando o mesmo AR(1) simulado acima, fiz uma busca pelo melhor modelo usando o critério BIC para um range de p= 0 a 6 e q= 0 a 6.

bic_range

As cores mais escuras indicam que o melhor modelo seria um AR(1) com intercepto.

As dicas de R

Forneço algumas dicas para vocês então.

library("astsa")
library("forecast")
library("TSA")
# AR
set.seed(123456)
y <- arima.sim(n = 500, list(ar = 0.6), innov=rnorm(500))
op <- par(no.readonly=TRUE)
layout(matrix(c(1, 1, 2, 3), 2, 2, byrow=TRUE))
plot.ts(y, ylab='')
Acf(y, main='Autocorrelations', ylab='',
    ylim=c(-1, 1), ci.col = "black")
Pacf(y, main='Partial Autocorrelations', ylab='',
     ylim=c(-1, 1), ci.col = "black")
par(op)

# usando o comando eacf de TSA
eacf(y)
# usando o comando armasubsets de TSA, com
# range de p = q = 6
res=armasubsets(y=y, nar=6, nma=6, y.name='test',ar.method='ols')
plot(res)

# agora um ARMA(1,1)
m <- arima.sim(model=list(ar=c(.8),ma=c(.3)), n = 500)
op <- par(no.readonly=TRUE)
layout(matrix(c(1, 1, 2, 3), 2, 2, byrow=TRUE))
plot.ts(m, ylab='')
Acf(m, main='Autocorrelations', ylab='',
    ylim=c(-1, 1), ci.col = "black")
Pacf(m, main='Partial Autocorrelations', ylab='',
     ylim=c(-1, 1), ci.col = "black")
par(op)
eacf(m)

# e um ARMA(2,2)
m2 <- arima.sim(model=list(ar=c(-.1,-.8),ma=c(-.7,.1)), n = 500)
op <- par(no.readonly=TRUE)
layout(matrix(c(1, 1, 2, 3), 2, 2, byrow=TRUE))
plot.ts(m2, ylab='')
Acf(m2, main='Autocorrelations', ylab='',
    ylim=c(-1, 1), ci.col = "black")
Pacf(m2, main='Partial Autocorrelations', ylab='',
     ylim=c(-1, 1), ci.col = "black")
par(op)
# a partir daqui, EACF e o criterio BIC
eacf(m2)
res=armasubsets(y=m2, nar=6, nma=6, y.name='test',ar.method='ols')
plot(res)

Espero que tenha se divertido. Ah sim, não duvido que o leitor mais esperto vá pegar sua série de dados para tentar alguma coisa. Um IPCA ou uma PIM-PF ou alguma taxa de câmbio, sei lá. Só sei que é fácil replicar os comandos. Afinal, você viu primeiro aqui. ^_^

Deixe um comentário

Preencha os seus dados abaixo ou clique em um ícone para log in:

Logotipo do WordPress.com

Você está comentando utilizando sua conta WordPress.com. Sair /  Alterar )

Foto do Google

Você está comentando utilizando sua conta Google. Sair /  Alterar )

Imagem do Twitter

Você está comentando utilizando sua conta Twitter. Sair /  Alterar )

Foto do Facebook

Você está comentando utilizando sua conta Facebook. Sair /  Alterar )

Conectando a %s