1. 2501.000145-5 TÓPICOS ESPECIAIS EM ECONOMETRIA
C.H.: 68 horas – Turma 2020.1 – sala 2 bloco X
Terça-feira 13h15m a 15h15m e Quinta-feira - 15h25m a 17h25m
Prof. Dr. Adriano Marcos Rodrigues Figueiredo
(UFMS – ESAN – Economia)
E-mail: adriano.figueiredo@ufms.br ou
amrofi@gmail.com
7
**As ideias e opiniões aqui expostas são de responsabilidade do autor e não representam a opinião
da instituição a que pertence.
Esta obra está licenciada com uma Licença Creative Commons Atribuição-CompartilhaIgual 4.0 Internacional.
This work is licensed under a Creative Commons Attribution-ShareAlike 4.0 International License.
2. BUENO, Rodrigo De Losso da
Silveira. Econometria de
Séries Temporais. 2.ed. São
Paulo: Cengage Learning,
2015.
Prof. Adriano M. R. Figueiredo
3. Hyndman e Athanasopoulos
https://otexts.org/fpp2/
e
Hyndman, R.J., &
Athanasopoulos, G. (2019)
Forecasting: principles and
practice, 3rd edition, OTexts:
Melbourne, Australia.
https://otexts.com/fpp3 . Acesso
em 31.03.2020.
Prof. Adriano M. R. Figueiredo
4. FERREIRA, Pedro Costa (org.).
Análise de Séries Temporais em R:
curso introdutório. São Paulo:
FGV/IBRE/Elsevier, 2017.
https://pedroferreira.shinyapps.io/ti
meseries/_w_5835c9d9/livro.pdf
Prof. Adriano M. R. Figueiredo
5. PERLIN, Marcelo S. Analyzing Financial and Economic
Data with R. 2.ed. Porto Alegre: Marcelo S. Perlin
(independent), 2020.
https://www.msperlin.com/afedR/
• Existe a 1ª edição em português!
• Materiais em
https://www.msperlin.com/blog/publicati
on/2020_book-afedr-en/
e
https://cran.r-
project.org/web/packages/pafdR/vignette
s/pafdR-vignette.html
Prof. Adriano M. R. Figueiredo
6. Processo autorregressivo
ARMA (p,q)
Yt = ϕ1Yt-1 + .. + ϕ pYt-p + ut + θ1ut-1 + ... + θ qut-q
– Os termos de ut são o MA(q)
• exemplo de MA(q): Yt = ut + θ1ut-1 + ... + θqut-q
– Os termos de Yt são o AR(p)
• exemplo de AR(p): Yt = ϕ 1Yt-1 + .. + ϕpYt-p + ut
MAS QUAIS OS VALORES DE p e q???
Prof. Adriano M. R. Figueiredo
7. Encontrando o modelo
• Médias móveis: MA(1)
Yt = μ + εt + θεt-1
• Autorregressivo: AR(1)
Yt = c + ΦYt-1 + εt
Em que εt é um ruído branco
Prof. Adriano M. R. Figueiredo
8. Encontrando o modelo
• Bueno (2015)
– Olhar FAC e FACP
– Q de Ljung-Box
– Olhar Critérios de informação AIC, BIC, HQ,
Prof. Adriano M. R. Figueiredo
9. Recordar – ruído branco, white noise,
série bem comportada
Prof. Adriano M. R. Figueiredo
10. Autocovariância e Autocorrelação
• Função de autocorrelação (FAC)
• A FAC é a relação entre a k-ésima
autocovariância de Xt e Xt-k, e a variância da
série.
Prof. Adriano M. R. Figueiredo
11. Função de autocorrelação (FAC)
• Ou seja, 𝜌 𝑘 =
𝛾 𝑘
𝛾0
• Em que 𝜌 𝑘 é a k-ésima autocorrelação; 𝛾 𝑘 é a
k-ésima autocovariância e 𝛾0 é a variância,
para uma janela temporal de k períodos ou
defasagens.
• O gráfico de 𝜌 𝑘 para as k defasagens é o
correlograma.
Prof. Adriano M. R. Figueiredo
12. Autocovariância x ergodicidade
• “Se a autocovariância vai a zero
suficientemente rápido quando k aumenta,
pode-se provar que a série é ergódica”
• “A série é ergódica para a média se a soma das
covariâncias for finita” (BUENO, p.17)
Prof. Adriano M. R. Figueiredo
13. SCRIPT AR TEÓRICO EM R
<arima_simulator.Rproj>
# R source code for generating data from AR(1)
processes.
#set the seed so we all have the same time
series
set.seed(1)
# AR(1) series with phi = 0.1
y.10 <- arima.sim(model=list(ar=0.1), n=100)
# AR(1) series with phi= 0.5
y.50 <- arima.sim(model=list(ar=0.5), n=100)
# AR(1) series with phi= -0.5
y.m50 <- arima.sim(model=list(ar=-0.5), n=100)
# AR(1) series with phi= 0.9
y.90 <- arima.sim(model=list(ar=.9), n=100)
# set up for a 2x2 matrix of graphs
# GRAFICOS
par(mfrow=c(2,2))
plot(y.10)
title("phi=0.1, Stationary AR(1) process")
abline(h=0)
plot(y.50)
title("phi = 0.5, Stationary AR(1) process")
abline(h=0)
plot(y.m50)
title("phi = -0.5, Stationary AR(1) process")
abline(h=0)
plot(y.90)
title("phi = 0.9, Stationary AR(1) process")
abline(h=0)
Prof. Adriano M. R. Figueiredo
15. Ideia inicial para encontrar modelo
Modelo FAC FACP
AR(p)
Decai
exponencialmente
Truncada na
defasagem p
MA(q)
Truncada na
defasagem q
Decai
exponencialmente
ARMA(p,q)
Decai exponencialmente
se j>q
Decai exponencialmente
se j>p
Prof. Adriano M. R. Figueiredo
16. FAC e FACP ou no inglês acf e pacf
• FAC – função de autocorrelação
– Gráfico da autocorrelação contra a defasagem – identificar
ordem q do MA
• FACP – função de autocorrelação parcial
– Gráfico da correlação pura entre duas observações
(eliminando as correlações implícitas - estimadas passo a
passo acrescentando cada defasagem) – identificação do p
do AR
Prof. Adriano M. R. Figueiredo
17. FAC e FACP para White Noise
Prof. Adriano M. R. Figueiredo
18. FAC e FACP para random walk
Prof. Adriano M. R. Figueiredo
20. FAC e FACP para AR(1) simulado
Prof. Adriano M. R. Figueiredo
21. FAC e FACP para AR(1)
Prof. Adriano M. R. Figueiredo
22. Script da FAC e FACP das séries AR
simuladas
# set up for a 4x2 matrix of graphs
par(mfrow=c(4,2))
acf(y.10)
acf(y.10, type="partial")
acf(y.50)
acf(y.50, type="partial")
acf(y.m50)
acf(y.m50, type="partial")
acf(y.90)
acf(y.90, type="partial")
Prof. Adriano M. R. Figueiredo
23. FAC e FACP para séries AR simuladas
Prof. Adriano M. R. Figueiredo
24. FAC e FACP para MA(1)
Prof. Adriano M. R. Figueiredo
25. AR(2) simulado
par(mfrow=c(2,1))
# Simulando AR(2)
y <- arima.sim(model=list(ar=c(-0.5,0.3)), n=100)
acf(y, main="Série AR(2)")
pacf(y, main="Série AR(2)")
Prof. Adriano M. R. Figueiredo
26. Script simulação do MA(1)
# Simulando MA(1)
y.ma1 <- arima.sim(model=list(ma=0.5), n=100)
acf(y.ma1, main="Série MA(1)")
pacf(y.ma1, main="Série MA(1)")
Prof. Adriano M. R. Figueiredo
32. Tabela Resumo do ARIMA(p,d,q)
Modelo FAC FACP
AR(p)
Decai
exponencialmente
Truncada na
defasagem p
MA(q)
Truncada na
defasagem q
Decai
exponencialmente
ARMA(p,q)
Decai exponencialmente
se j>q
Decai exponencialmente
se j>p
Prof. Adriano M. R. Figueiredo
33. Código em R: varejoMS.Rproj
Prof. Adriano M. R. Figueiredo
34. Código em R: varejoMS.Rproj
# Função de Autocorrelação (FAC) e Autocorrelação parcial
(FACp) com defasagem 36
split.screen(c(1,2))
acf(varejo, lag.max=36)
screen(2)
pacf(varejo, lag.max=36)
dvarejo<-diff(varejo)
par(mfrow = c(1, 2), cex = 0.7)
acf(diff(varejo), lag.max=36)
pacf(diff(varejo), lag.max=36 )
Prof. Adriano M. R. Figueiredo
35. FAC e FACP – Varejo MS
em nível
Prof. Adriano M. R. Figueiredo
36. FAC e FACP – Varejo MS
1ª diferença
Prof. Adriano M. R. Figueiredo
37. FAC e FACP – varejo MS
Prof. Adriano M. R. Figueiredo
varejo %>% diff(lag=12) %>% ggtsdisplay(main="primeira diferença sazonal")
38. FAC e FACP 2ª diferença sazonal
Prof. Adriano M. R. Figueiredo
varejo %>% diff(lag=12) %>% diff() %>%
ggtsdisplay(main="segunda diferença sazonal")
39. Identificação dos lags: Dificuldades:
• Inspeção visual nem sempre fácil
– FAC – função de autocorrelação
• Gráfico da autocorrelação contra a defasagem –
identificar ordem q do MA
– FACP – função de autocorrelação parcial
• Gráfico da correlação pura entre duas observações
(eliminando as correlações implícitas (estimadas passo
a passo acrescentando cada defasagem) – identificação
do p do AR
• ARMA(p,q)
Prof. Adriano M. R. Figueiredo
40. Sugestão Enders (2004)
citado por Bueno (2008, p.43)
• Calcular a FACP até j=T/4, em que T é o
tamanho da amostra
• Exemplo: para 200 observações, fazer FACP
até 200/4 = 50 defasagens!
– Para 100 observações, até 25 lags
• Geralmente menos que isso já dá para
perceber algo!
Prof. Adriano M. R. Figueiredo
41. Intervalos de confiança
• Sugestão de Bartlett para cálculo das bandas
• Crítica: o correto é fazer FAC e FACP com
verdadeiros valores das correlações (mas não
se conhecem os verdadeiros valores dos
coeficientes!)
• Para amostras limitadas o procedimento de
Bartlett não é bom
Prof. Adriano M. R. Figueiredo
42. Teste de Q de Ljung-Box-Pierce
• Embora tenhamos calculado alguns forecasts de modelos ARIMA
até o momento, precisamos ainda avaliar a qualidade das
estimações olhando portanto os resíduos. Uma das formas de
fazer isto é calculando o teste de Q de Ljung-Box. Este teste é
uma forma de avaliar os coeficientes de autocorrelação em
conjunto, avaliando se são significativos e diferentes de zero. Por
exemplo, podemos ter alguma autocorrelação específica
pequena em tamanho, mas o conjunto das autocorrelações pode
ser grande. A estatística Q de Ljung-Box-Pierce pode ser usada
para esta investigação, aplicada sobre a série de resíduos de um
modelo estimado.
Prof. Adriano M. R. Figueiredo
43. Alternativas: Estatística de Ljung-Box
autocorrelações são conjuntamente identificadas
• Q de Ljung-Box
• Quero ver se alguma autocorrelação é diferente
de zero até a defasagem k
• A hipótese nula é de que todas as ρk até ordem
k são iguais a zero, ou seja, que a série é
estacionária.
2
kQ
2
1
2
k
j
j
Q T T
T j
Prof. Adriano M. R. Figueiredo
44. Ljung-Box
• H0:
• H1:
• Se uma das autocorrelações for diferente de
zero, há evidência de existência de um
modelo ARMA (p,q) ou ARIMA(p,d,q)
𝜌𝑗 = 0
𝑛
𝑗=1
𝜌𝑗 ≠ 0
𝑛
𝑗=1
Prof. Adriano M. R. Figueiredo
45. Sugestão: Bueno (2015)
• Identificar o modelo por meio da FAC e FACP
• Em seguida, usar a estatística Q de Ljung-Box
sobre os resíduos estimados
• Se não confirmar o modelo como adequado,
adicionar novas defasagens e repetir o
processo de verificação dos resíduos
• Os resíduos não devem mais ter
autocorrelação
Prof. Adriano M. R. Figueiredo
46. Ljung-Box no R
# Ljung-Box test
lj.box<-Box.test(series1,lag=10, fitdf=0, type="Lj")
lj.box
• Testa se alguma autocorrelação é diferente de zero até
a ordem determinada
Prof. Adriano M. R. Figueiredo
47. auto.arima(y, d=NA, D=NA, max.p=5, max.q=5,
max.P=2, max.Q=2, max.order=5, max.d=2, max.D=1,
start.p=2, start.q=2, start.P=1, start.Q=1,
stationary=FALSE, seasonal=TRUE,
ic=c("aicc", "aic", "bic"), stepwise=TRUE, trace=FALSE,
approximation=(length(x)>100 | frequency(x)>12),
truncate=NULL, xreg=NULL,
test=c("kpss","adf","pp"), seasonal.test=c("ocsb","ch"),
allowdrift=TRUE, allowmean=TRUE, lambda=NULL, biasadj=FALSE,
parallel=FALSE, num.cores=2, x=y, ...)
Arguments
y a univariate time series
d Order of first-differencing. If missing, will choose a value based on KPSS
test.
D Order of seasonal-differencing. If missing, will choose a value based on
OCSB test.
max.p Maximum value of p
max.q Maximum value of q
max.P Maximum value of P
max.Q Maximum value of Q
max.order Maximum value of p+q+P+Q if model selection is not stepwise.
Prof. Adriano M. R. Figueiredo
DEFAULT
DA
FUNÇÃO
48. Exemplo: seja um ARIMA estimado
abaixo
# auto.arima {forecast}
fit1 <- auto.arima(varejoms,max.p = 12,max.q = 12,max.P = 2,
max.Q = 2,max.order = 36,max.d = 2,max.D = 1)
plot(forecast(fit1,h=24))
summary(fit1)
# resultado: ARIMA(0,1,1)(0,1,1)[12]
# indica uma diferença sazonal e integrado I(1)
# indica MA(1) e SMA(1)
# fazendo o circulo unitário para raizes unitárias
Prof. Adriano M. R. Figueiredo
49. Ljung-Box test no R
library(FitAR) # pratico para plotar graficos de Q
# LBQPlot(res, lag.max = 30)
### res é a série que temos interesse de realizar os testes
### lag.max é o número de lags que se deseja imprimir o gráfico
LBQPlot(residuals(fit1),36)
1
0: 0
n
j
j
H
Probabilidades altas,
levando a não rejeição de
Prof. Adriano M. R. Figueiredo
50. Resumo:
• Valores das probabilidades menores que 10%,
rejeito H0, alguma autocorrelação diferente
de zero!
• Tenho um ARMA(p,q), no caso de séries
estacionárias
Prof. Adriano M. R. Figueiredo
51. Processo
geral de
estimação
do ARMA
conforme
Hyndman
e
Athanaso
poulos
51
1. Fazer gráfico da série.
Identificar possíveis
padrões e observações
atípicas.
2. Se necessário,
transformar a série para
estabilizar a variância.
Escolher o modelo
pessoalmente
Usar algoritmo
automatizado
Usar auto.arima() para
encontrar o melhor SARIMA
para a série
Testar raiz unitária. Se
necessário, fazer diferença
da série para ficar
estacionária
Plotar ACF, PACF e os dados
para avaliar os lags
Escolher o melhor modelo
por meio do AICc
Checar resíduos e
estabilidade do modelo,
plotar ACF residual e testes
de correlação residual
Residuos são
white noise?
Calcular forecasts
sim
não
52. Exemplo varejo MS pelo fpp2
ver projeto_exemplo.Rproj
Prof. Adriano M. R. Figueiredo
varejoms<-ts(varejoms,start = c(2000,1), frequency = 12)
varejoms %>% stl(s.window='periodic') %>% seasadj -> varadj
autoplot(varadj)
53. ACF e PACF da série ajustada com
diferença sazonal
53
varadj %>% diff %>% ggtsdisplay(main=" Time plot and ACF and PACF p
lots for the differenced seasonally adjusted varejo MS data.")
54. Critérios de Informação
• Ideia: acrescentando lags reduz a soma dos resíduos –
acrescenta informação
• Mas penaliza a adição do regressor
• Olho a truncagem de FAC e FACP e rodo os diferentes
modelos inserindo termos AR e MA e observo os
menores critérios de informação.
• Tenho que adotar mesmo número de observações!
Prof. Adriano M. R. Figueiredo
55. Critérios: 𝑪 = 𝒍𝒏𝝈 𝟐 𝑻 + 𝒄 𝑻 𝝋(𝑻)
• Primeiro termo: variância = deve reduzir com
aumento de variáveis
• Segundo termo: 𝒄 𝑻 é o número de parâmetros
estimados e 𝝋(𝑻) é a ordem do processo que
penaliza o acréscimo de variáveis
• Quanto menor C melhor
• BIC, AIC, AICc ou HQ
Prof. Adriano M. R. Figueiredo
56. Principais Critérios de Informação
• BIC – Bayesian Information Criterion ou SBC –
Schwarz Bayesian Criterion
• AIC – Akaike Information Criterion
• AICc – Akaike corrigido
• HQ –Hannan-Quinn
Prof. Adriano M. R. Figueiredo
57. Resumo: critérios de informação
• Desejo menores valores dos critérios
• BIC é consistente assintoticamente
• AIC e funciona melhor em pequenas amostras mas
pior com mais parâmetros
• HQ é menos forte que o BIC
• O preferido é o AICc!!!
• Para pequenos valores de T, o AIC tende a
selecionar muitos preditores e, assim, uma versão
corrigida do viés do AIC foi desenvolvida = AICc
Prof. Adriano M. R. Figueiredo
58. Rodo modelos com várias alternativas
# auto.arima {forecast}
library(BETS)
varejoms <- BETS.get(1479)
varejo<-ts(varejoms,start = c(2000,1), frequency = 12)
fit2 <- auto.arima(varejo)
summary(fit2)
plot(forecast(fit2,h=20))
#p-values dos coeficientes
pvalues<-(1-pnorm(abs(fit2$coef)/sqrt(diag(fit2$var.coef))))*2
pvalues
Prof. Adriano M. R. Figueiredo
59. MS Varejo – dados até meados de
2017
Prof. Adriano M. R. Figueiredo
61. ARMA(p,q) - Estimação
• ARIMA(p,0,q) – em nível
• Tendo identificado um modelo apropriado
para a série temporal, o passo seguinte
consiste em estimar os parâmetros da função
Prof. Adriano M. R. Figueiredo
62. Recordando:
Processo auto-regressivo ARMA (p,q)
Yt = ϕ1Yt-1 + .. + ϕ pYt-p + ut + θ1ut-1 + ... + θ qut-q
– Os termos de ut são o MA(q)
• exemplo de MA(q): Yt = ut + θ1ut-1 + ... + θqut-q
– Os termos de Yt são o AR(p)
• exemplo de AR(p): Yt = ϕ 1Yt-1 + .. + ϕpYt-p + ut
Prof. Adriano M. R. Figueiredo
63. Estimação ARMA
• Considere um modelo ARIMA(p, d, q), onde
seus parâmetros p+q+1 possam ser
representados por um vetor:
Prof. Adriano M. R. Figueiredo
72. Estimação ARMA – Estimação Exata
Decomposição do erro de previsão
Procedimento Não-Condicional
Prof. Adriano M. R. Figueiredo
73. Estimação ARMA – Estimação Exata
Procedimento Não-Condicional
Prof. Adriano M. R. Figueiredo
74. Estimação ARMA – Estimação Exata
Procedimento Não-Condicional
Prof. Adriano M. R. Figueiredo
75. Estimação ARMA – Estimação Exata
Procedimento Não-Condicional
Prof. Adriano M. R. Figueiredo
76. Diagnóstico do ARMA
• disponíveis:
– roots,
– correlogram, e
– impulse response.
Prof. Adriano M. R. Figueiredo
77. Roots – raízes unitárias?
• Quero todas as raízes dentro do circulo
para ser um processo estacionário
fit2 <- auto.arima(varejo)
plot(forecast(fit2,h=20))
summary(fit2)
plot.Arima(fit2, type=c("both"))
autoplot(fit2)
Prof. Adriano M. R. Figueiredo
80. Correlograma
• Compara a autocorrelação dos resíduos
originais com os do ARMA
• O ‘residual’ e o ‘theorethical’ devem estar
próximos para um bom modelo
Prof. Adriano M. R. Figueiredo
84. Normalidade dos resíduos – JARQUE-
BERA
• Quero probability>0.10 = erros são normais
z=fit1$residuals
# checando a normalidade dos residuos
library(tseries)
jarque.bera.test(residuals.Arima(fit1))
jarque.bera.test(z)
Prof. Adriano M. R. Figueiredo
85. Continua com a parte de unit
root...
Prof. Adriano M. R. Figueiredo