Escolar Documentos
Profissional Documentos
Cultura Documentos
Ricardo Lima
Este arquivo ainda encontra-se em fase de construo. Logo, no deve ser citado e nem usado como
2 Comeando os trabalhos 8
2.1 Importando e visualizando os dados . . . . . . . . . . . . . . . . . . . . . . 8
3.3 Defasagens no R . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 23
4 Modelos univariados 26
4.1 Alguns conceitos bsicos . . . . . . . . . . . . . . . . . . . . . . . . . . . . 27
5 Funo de autocorrelao 38
7 Processos ARMA 43
7.1 Estimando modelos ARIMA - Intro . . . . . . . . . . . . . . . . . . . . . . 43
2
8 Testes de estacionaridade 45
8.1 O teste de Dickey-Fuller . . . . . . . . . . . . . . . . . . . . . . . . . . . . 45
11 Modelos multivariados 86
11.1 Modelos dinmicos com variveis estacionrias . . . . . . . . . . . . . . . . 86
11.5.3 Inferncia . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 90
3
11.8 Cointegrao . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 93
de Engle-Granger . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 95
Referncias 105
4
1 Introduo
A idia deste trabalho somente de fornecer uma porta de entrada para alunos com
ele se baseia fortemente no curso de sries temporais, dado no primeiro ano de mestrado
Todo trabalho ser feito no GUI do R chamado RStudio. Para comear voc deve
AT Xutilizando o
produzir documentos L E RStudio recomendo entrar em Preferncias e em
seguida Sweave. Finalmente, alterando a primeira opo disponvel para knitr. Desta
maneira a manipulao do cdigo dentro do arquivo .Rnw ser mais parecido com o
AT X.
prprio L E Para isso ser necessria a instalao do pacote knitr e do programa
MikTeX.
Note que muitos dos pacotes no estaro disponveis no seu RStudio, logo devero
Finalmente, note que voc pode alterar o diretrio de trabalho do RStudio, ou seja,
onde todo o trabalho ser salvo. Isto pode ser feito atravs do RStudio na janela inferior
1
direita ou atravs do seguinte comando :
setwd("C:/Desktop/Nome/R/")
Nosso primeiro contato com econometria na prtica , quase sem exceo, atravs de
Gretl, Stata e Eviews ). Desta maneira, camos acostumados desde o incio a clicar em
5
desao pois alm de aprender uma nova lingua temos que aprender a nos expressar nela
de maneira lgica. esta lgica que na minha opinio o mais difcil de se aprender.
reproduzir processos. bvio que podemos usar um destes programas para estimar 10-
20 variaes de um mesmo modelo, porm quanto tempo isso ir levar ? Como sero
armazenados os resultados ?
Obviamente algum pode ento responder: mas tambm possvel programar e auto-
matizar com estes outros programas! Sim, isto verdade (apesar de muitos no saberem
disso). O problema aqui que em geral a linguagem bastante especca para cada pro-
grama e, em geral, no seguem a lgica das linguagens mais comuns (como por exemplo
Matlab).
De maneira mais direta aqui vai alguns pontos a favor e contra o uso do R:
Usar R
Gratuito;
Automatizar/repetir procedimentos;
2
Facilidade de divulgar/dividar resultados com outros programas e formatos AT X,
(L E
Mercado de trabalho (grandes empresas esto cada vez mais interessados em pros-
No usar R
6
Custo alto de entrada;
Uma srie de tempo uma coleo de variveis aleatrias ordenadas ao longo do tempo.
O PIB brasileiro no intervalo entre 1950 e 2014, por exemplo, pode ser descrito como uma
corte, e a de sries temporais. Com dados de corte temos acesso a N observaes das k
variveis de interesse para um dado instante no tempo, enquanto que no caso de sries de
tempo somente temos 1 observao das k variveis de interesse para um dado instante no
tempo.
Veremos que esta pequena diferena traz grandes consequncias para nosso objetivo
nal que, pelo menos na grande maioria dos casos, fazer inferncias sobre e tentar
Qual seria ento nosso objetivo ao analisar dados de srie de tempo? Basicamente o que
los matematicamente, ou seja, queremos uma equao que nos mostre como a srie de
interesse se comporta.
teorias j estabelecidas. Alm disso, podemos, a partir do nosso conhecimento dos dados,
7
2 Comeando os trabalhos
Existem muitas maneiras de importar dados para o R, sendo que os formatos mais fceis
direito.
Como primeiro exemplo vamos comear com um banco de dados disponvel no prprio
br <-subset(pwt8.0, country=="Brazil",
select=c(rgdpna, avh, xr))
A partir desses dados podemos criar novas variveis. Que tal criarmos uma proxy,
denida como PIB real dividido pela mdia de horas trabalhadas, para produtividade:
Para nalizar, podemos salvar os dados que separamos como um arquivo .txt e visua-
write.table(br, file='dados.txt')
este e, em seguida, visualizar os dados. Note que, na maioria das vezes, temos que avisar
8
ao R sobre o tipo de dados que estamos usando. Logo, neste caso devemos avisar que
Aqui o comando ts est avisando ao R que a matriz dados possui sries temporais que
plot(dados)
dados
rgdpna
2050 500000
avh
1850
3.0
1.5
xr
8000.0
prod
200
Time
Podemos aprimorar um pouco este grco atravs das opes do comando plot, como
pode ser visto abaixo.
plot(dados,
col='blue',
main='Dados brasileiros',
xlab='Ano')
9
Dados brasileiros
rgdpna
2050 500000
avh
1850
3.0
1.5
xr
8000.0
prod
200
Ano
10
3 Fatos estilizados do Ciclo de Negcios
Quais so ento os fatos que devemos buscar entender quando queremos estudar as va-
Que tal vermos o caso brasileiro utilizando os dados do Banco Central do Brasil ?
pelo menos neste contexto, de separar tendncias de crescimento de longo prazo e vari-
Existem muitas maneiras de se tentar eliminar a sazonalidade dos dados, mas para o
nosso caso usaremos o mtodo mais simples, atravs de dummies. Repare que esse mtodo
11
somente remover a parte determinstica da sazonalidade .
3
Assuma agora que temos dados trimestrais, assim podemos fazer a seguinte regresso:
Yt = + 2 D2 + 3 D3 + 4 D4 + t
Repare que incluimos dummies para cada trimestre exceto o primeiro, isto para no
termos problemas de linearidade perfeita. Isto tambm signica que todos os efeitos
senta sazonalidade. Logo, podemos usar t como nossa srie dessazonalizada. Veja porque,
+ 2 D2 + 3 D3 + 4 D4 + t
Yt =
Yt = Yt + t
Logo, temos que a prpria srie menos a parte que capta os efeitos da sazonalidade
t = Yt Yt
Agora vamos para um exemplo prtico. Neste prximo exerccio usaremos o PIB
trimestral (srie 1232 do SGS do Banco Central do Brasil). Como sempre comeamos
12
plot(pib,main='PIB brasileiro',
ylab='Indice', xlab = 'Ano',
bty='l',col='red',lty=1)
grid(col='darkgrey',
lwd=2)
PIB brasileiro
160
140
Indice
120
100
80
Ano
Agora devemos rodar a regresso, para isso devemos criar os dummies sazonais.
Q <- ordered(cycle(pib))
summary(pib.reg)
##
## Call:
## lm(formula = pib ~ Q)
##
## Residuals:
## Min 1Q Median 3Q Max
13
## -38.031 -18.642 -7.356 21.339 46.177
##
## Coefficients:
## Estimate Std. Error t value Pr(>|t|)
## (Intercept) 122.6690 2.7099 45.266 <2e-16 ***
## Q.L 4.4144 5.4199 0.814 0.418
## Q.Q -3.2150 5.4199 -0.593 0.555
## Q.C 0.8823 5.4199 0.163 0.871
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
##
## Residual standard error: 26.27 on 90 degrees of freedom
## Multiple R-squared: 0.01159,Adjusted R-squared: -0.02136
## F-statistic: 0.3516 on 3 and 90 DF, p-value: 0.7881
Como podemos ver, o resumo j nos d o p-valor do teste F que neste caso igual a
4
0.79 . Logo, no rejeitamos a hiptese nula de que no existe sazonalidade. Porm, para
de dessazonalizar os dados.
o componente sazonal.
par(mfrow=c(1,2))
plot(pib.des)
4 Note que nem individualmente, atravs dos testes t nenhum dos componentes sazonais so estatisti-
camente signicativos.
14
plot(pib.hat)
40
124
20
122
pib.des
pib.hat
0
120
20
118
40
Time Time
Como podemos ver, a srie dessazonalizada comea em nveis negativos. Isto acontece
pois ao subtrair Yt da nossa srie original estamos tambm retirando a sua mdia, captada
por
. Logo, devemos normalizar nossa srie adicionando sua mdia.
Agora podemos fazer um grco com a srie original e sua verso dessazonalizada.
par(mfrow=c(1,1))
plot(pib,
main='',
xlab='Ano', ylab='',
col='blue',
bty='l')
par(new=TRUE)
plot(pib.desn,
axes=F, ann=F,
col='red',
15
lty=2)
legend('topleft',
c('PIB', 'PIB dessazonalizado'),
col=c('blue', 'red'), lty=1:2,
bty='n')
grid(col='darkgrey')
PIB
160
PIB dessazonalizado
140
120
100
80
Ano
P IBt = + Anot + t
podemos concluir que a srie em questo no possui uma tendncia linear. Desta forma,
Para este prximo exerccio iremos utilizar a srie 1207 do Banco Central do Brasil
16
que para isso precisamos criar um vetor representando a tendncia linear (por exemplo
##
## Call:
## lm(formula = pibanual ~ ano)
##
## Residuals:
## Min 1Q Median 3Q Max
## -4.194e+11 -3.188e+11 -6.747e+10 2.344e+11 7.142e+11
##
## Coefficients:
## Estimate Std. Error t value Pr(>|t|)
## (Intercept) -4.046e+14 2.020e+13 -20.03 1.29e-15 ***
## ano 2.030e+11 1.009e+10 20.12 1.17e-15 ***
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
##
## Residual standard error: 3.422e+11 on 22 degrees of freedom
## Multiple R-squared: 0.9485,Adjusted R-squared: 0.9461
## F-statistic: 404.8 on 1 and 22 DF, p-value: 1.175e-15
Como podemos ver o p -valor do teste do qual temos interesse igual a 0, logo podemos
rejeitar a hiptese de que a srie no apresenta uma tendncia linear. Isto signica que t
representa nossa srie sem tendncia, enquanto que P[
IBt ser a nossa tendncia linear.
17
4e+12 PIB
Tendncia
PIB sem tendncia linear
2e+12
0e+00
Assuma, por exemplo, que a srie de nosso interesse siga o seguinte processo
yt = + 1 anot + 2 ano2t + t
Filtro Hodrick-Prescott
O ltro Hodrick-Prescott, ou simplesmente ltro HP, um mtodo comumente utilizado
na hora de retirar tendncias de longo prazo de sries macroeconmicas. Este permite
a existncia de uma tendncia mais exvel dado que ele no assume uma tendncia
perfeitamente linear.
Xt = Xtc + Xtg + t
T T
1X g 2 X g 2
= (Xt Xt ) + (Xt+1 Xtg ) (Xtg Xt1
g
)
T t=1 T t=1
18
Note que quanto maior for o valor de maior ser a penalizao no termo de taxa
id <- diag(length(y))
d <- diff(id, d=2)
tendhp <- solve(id+lambda*crossprod(d), y)
tendhp
5
Em geral, os valores recomendados de so aproximadamente 100 para dados anuais,
1600 para dados trimestrais e 14400 para dados mensais.
Agora podemos prosseguir e criar a nossa varivel sem tendncia atravs do uso do
ltro HP.
19
PIB
4e+12
Tendncia
PIBhp
2e+12
0e+00
Ano
Diferenas
Tomar a primeira diferena outra maneira simples de se remover a tendncia de uma
srie de tempo. Mais a frente usaremos muito esta ferramenta, porm neste momento
talvez no seja o jeito mais consistente teoricamente para remover a tendncia de uma
srie. Apesar de alguns ainda utilizarem este mtodo, um mtodo mais popular seria de
No R podemos tomar a primeira de uma srie atravs do comando di. Com esta
funo podemos usar diferenas at maiores, ou seja, podemos tomar a n -sima diferena.
Abaixo esto alguns exemplos de como usar este comando:
A primeira diferena da srie {xt } calculada como xt xt1 t. Para obter isso
A primeira diferena sazonal, no caso em que {xt } representa uma srie trimestral,
simplesmente diff(x,4).
20
Comparao entre os trs mtodos de remoo de tendncia
Agora que estamos um pouco mais familiarizados com estas trs maneiras de retirar
primeira diferena.
dpib
piblin
4e+11
pibhp
0e+00
4e+11
Ano
mando cor(x,y).
cor(piblin, pibhp)
## [1] 0.6934064
21
cor(piblin[-1], dpib)
## [1] 0.3378531
cor(pibhp[-1], dpib)
## [1] 0.3861809
Como podemos ver as trs sries so bastantes distintas entre si, porm isto no
signica que os fatos estilizados das trs sries sejam necessariamente estatisticamente
diferentes. Voc deveria extrair as fatos estilizados utilizando a srie de cada um desses
mtodos e observar a diferena entre eles. Assim, estar estudando o impacto que cada
Como foi mostrado anteriormente, para calcular a correlao contempornea entre duas
interessados na correlao entre duas variveis com uma defasagem maior entre elas.
Neste caso podemos utilizar a funo de correlao cruzada do R chamada ccf, que alm
de calcular as correlaes cruzadas e seus respectivos intervalos de conana tambm nos
22
pibhp & piblin
0.4
ACF
0.0
0.4
Lag
cc
##
## Autocorrelations of series 'X', by lag
##
## -1 0 1
## 0.398 0.693 0.448
Note que a linha azul nos d o intervalo de conana de 95%, ou seja, dentro deste
3.3 Defasagens no R
Para defasar uma srie xt n vezes utilizamos lag(x, k=-n). Da mesma forma, para
avanar uma srie n vezes utilizamos o mesmo comando porm com o positivo de n, ou
seja, lag(x, k=n). De modo a ilustrar podemos fazer um grco com as diferentes sries
onde utilizamos n = 5.
23
grid(col='darkgrey')
legend('topleft',
c(expression(pib[t]), expression(pib[t+5]), expression(pib[t-5])),
col=1:3, lty=1:3,
bty='n', lwd=2)
abline(v=2005, lty=2)
Demonstrando defasagens
pibt
4e+12
pibt+5
pibt5
2e+12
0e+00
Ano
Repare que ao traarmos uma linha vertical no ano de 2005, por exemplo, estaremos
atingindo os valores de 2000, 2005 e 2010, respectivamente. Isto signica que se estiver-
mos interessados em rodar uma regresso do PIB na sua segunda defasagem poderamos
24
6
somente duas maneiras de representar esta volatilidade sero abordadas, a volatilidade
xt tendencia(x)t
volatilidade x = d.p. 100 .
tendencia(x)t
Por outro lado, a volatilidade relativa de x sua volatilidade relativa a uma outra srie.
Por exemplo, a volatilidade de x relativa a uma outra varivel, y , pode ser calculada como
d.p.(lnx)
volatilidade x/y = .
d.p.(lny)
dados da Tabela 1. Para o caso da volatilidade absoluta do PIB, por exemplo, deveramos
7
seguir o cdigo a seguir .
## [1] 2.969671
6 Existem muitas maneiras diferentes de se medir volatilidade, por isso sempre importante ter em
mente qual denio voc est usando e sempre deixar de maneira explicita.
7 Observe que neste exemplo estamos calculando a volatilidade do srie sem nenhum tratamento, ou
seja, ainda no foi dessazonalizada. Logo, o valor pode ser diferente ao da tabela.
25
4 Modelos univariados
Suponha que temos o seguinte modelo geral univariado de sries temporais
Yt = f (Yt1 , Yt2 , . . . , ut )
2. O nmero de defasagens;
A base lgica para a anlise univariada pode ser resumida, de certa forma, nos seguintes
pontos
j nos dizem bastante sobre a natureza do processo por trs dos dados.
3. Modelos tericos com defasagens da varivel dependente podem muitas vezes serem
ct = 0 + 1 yt + 2 ct1 + t (1)
y t = ct + i t (2)
26
it = syt (3)
que
ct = 0 + 1 yt + 2 ct1 + t (4)
yt = ct + syt . (5)
ct
ct = 0 + 1 + 2 ct1 + t
1s
1 1
ct ct = 1 ct = 0 + 2 ct1 + t
1s 1s
ct = 0 + 1 ct1 + ut (6)
Comeamos agora a denir alguns conceitos bsicos que iremos usar extensivamente ao
longo do curso.
Cada Yt uma varivel aleatria (isto , cada Yt uma realizao de um nmero innito de
realidades alternativas). O processo estocstico {Yt }2013
1950 nos ajuda a descrever e inferir
Estacionaridade fraca implica que os dois primeiros momentos (ou seja, a mdia e
a matriz de varincia-covarincia) da distribuio de probabilidade conjunta da varivel
27
E{Yt } = <
(i.e., ela nos permite usar as ferramentas padres de estimao, previso e inferncia).
queremos assumir que os choques nos nossos modelos economtricos so processos pura-
mente aleatrios (obviamente iremos testar se esta hiptese vlida ou no), isto , iremos
assumir que
t N (0, 2 )
outro no estacionrio.
set.seed(22)
TT <- 100
Xt <- ts(rnorm(TT), start=1, freq=1)
Ct <- ts(cumsum(rnorm(TT)), start=1, freq=1)
28
0
5
10
15
20
Xt Estacionrio
Ct No Estacionrio
25
0 20 40 60 80 100
Time
Yt = + t + t1
onde
t N (0, 2 ).
E{Yt } = E{ + t + t1 } = .
= E{2t } + 2 E{2t1 }
= (1 2 )22 .
29
= E{(t + t1 )(t1 + t2 )}
= E{(2t1 )}
= 2
= E{(t + t2 )(t2 + t3 )}
=0
Note que para este processo MA(1), teremos que cov{Yt , Ytk } = 0 k > 1. Dito
P
isto, como ser a matriz varincia-covarincia, , deste processo?
plot(arima.sim(model=list(ma=0.8), n=100),
ylab=expression(Y[t]),
main='',
bty='l')
2
0
Yt
2
4
0 20 40 60 80 100
Time
30
Veremos mais a diante que se || < 1, este processo MA(1) pode ser invertido e
Yt = + t + 1 t1 + 2 t2 + + q tq
t N (0, 2 ).
Yt = + Yt1 + t
t N (0, 2 ).
logo,
E{Yt } = + E{Yt }
(1 )E{Yt } =
E{Yt } = .
1
Se relembrarmos das propriedades de uma P.G. innita podemos ver que esta ltima
31
E{Yt } = (1 + + 2 + + ) || < 1.
= E{(2 yt1
2
2yt1 t + 2t } = 2 E{yt1
2
} + E{2 }
= 2 + 2 E{(yt2 + t2 )2 } = . . .
= 2 (1 + 2 + 4 + + )
2
= .
1 2
Ainda tomando y t = Y t , a autocovarincia pode ser calculada como a seguir
k 2
cov{yt , ytk } = || < 1.
1 2
32
3
2
1
Yt
0
1
2
0 20 40 60 80 100
Time
onde,
t N (0, 2 ).
Propriedades bsicas:
1. L =
2. Lxt = xt1
33
3. L2 xt = L{Lxt } = Lxt1 = xt2
xt = xt1 + t
onde || < 1. Usando as propriedades (1) e (2) do operador de defasagem temos que
xt = Lxt + t = (1 L)xt = t
t
xt =
1 L
O ltimo passo s ser possvel se (1 L) for inversvel. Dado que assumimos que
|| < 1, sabemos que este processo estacionrio. Agora, lembrando novamente das
propriedades de uma srie geomtrica, podemos reescrever esta ltima expresso como
X
xt = k L k t
k=0
ou simplesmente
X
xt = k tk
k=0
Yt = Yt1 + t
34
Como podemos ver, a esperana constante e independe do tempo. Vejamos ento a
varincia
innita. Por isso muitas vezes chamado de um modelo com memria innita.
Raz unitria: Quando temos que =1 aparece o problema de raz unitria que,
Yt = Yt1 + t Yt = t .
Este fato ser amplamente usado ao longo deste texto. Processos como este, que se tornam
Processo estocstico integrado: Um processo estocstico que possa ser feito estaci-
Se um processo se torna estacionrio ao se tomar sua primeira diferena dizemos que este
Usaremos agora o mesmo processo autoregressivo A(1) que antes com uma pequena mu-
Yt = + Yt1 + t
35
de tendncia estocstica. Vejamos agora que nem a esperana e nem a varincia de um
E{YT } = E{ + YT 1 + T } = E{ + + YT 2 + T 1 + T } = . . .
( T T
)
X X
= E Y0 + + t
1 1
= Y0 + T
calculada como
Assim como com o passeio aleatrio anterior, podemos tornar o passeio aleatrio com
Yt Yt1 = + t
Yt = + t
Abaixo simulamos e visualizamos o passeio aleatrio com drift e sua primeira diferen.
TT <- 100
et <- rnorm(TT)
mu <- 0.1
Yt <- ts(cumsum(mu+et))
dYt <- diff(Yt)
36
Yt
Yt
10
Yt , Yt
5
0
0 20 40 60 80 100
Time
Yt = + t + Yt1 + t
+t
E{Yt } =
1
e varincia igual a
2
V {Yt } =
1 2
Podemos tornar esta srie estacionria ao remover, ou subtrair, a tendncia deter-
8
minstica da srie original. Processos como este, que podem ser tornados estacionrios
estacionrios.
8 Note que tendncias H-P, quadrtica, cbica e etc. so tendncias determinsticas, apesar de no
serem lineares.
37
5 Funo de autocorrelao
Assumindo estacionaridade fraca, podemos denir a k -sima ordem de autocovarincia,
k , como
cov{Yt , Ytk } k
k = =
V {Yt } 0
valor observado hoje est correlacionado com os valores observados no passado e como
choques hoje afetam valores futuros da varivel estocstica. Alm de nos ajudar a des-
crever os dados, a ACF tambm nos ajuda a achar razes unitrias, escolher modelos e
2
cov{Yt , Ytk } k 1 2
k = = 2 = k .
V {Yt }
2
1
cov{Yt , Yt1 } 2
1 = = =
V {Yt } (1 + 2 )2 1 + 2
porm,
k = 0 , k > 1.
processos so dados.
TT <- 200
38
AR(1) com =0.9 AR(1) com =0.9
1.0
1.0
0.8
0.5
0.6
0.4
Yt
Yt
0.0
0.2
0.0
0.5
0.2
0 5 10 15 20 0 5 10 15 20
Lag Lag
1.0
0.8
0.5
0.6
0.4
Yt
Yt
0.0
0.2
0.0
0.5
0.2
0 5 10 15 20 0 5 10 15 20
Lag Lag
39
6 Funo de autocorrelao parcial
A funo de autocorrelao parcial (ou comumente PACF, do ingls) nos d correlao
entre a varivel no instante t e uma de suas defasagens, retirado os efeitos das outras
Yt = + 1 Yt1 + 2 Yt2 + t .
TT <- 200
40
AR(1) com =0.9 AR(1) com =0.9
0.2
0.8
0.0
0.6
0.2
0.4
Yt
Yt
0.4
0.2
0.6
0.0
0.2
0.8
5 10 15 20 5 10 15 20
Lag Lag
0.2
0.1 0.2 0.3 0.4
0.1
0.0
Yt
Yt
0.2
0.1
0.4
0.3
5 10 15 20 5 10 15 20
Lag Lag
mveis.
Aps estas duas sees podemos concluir que um processo AR(p) descrito por
41
Mais uma vez deve-se notar que esta estratgia de identicao do processo somente
ser vlido quando se trata de uma srie estacionria. Logo, antes de se comear a
tendncias da srie. Somente aps esta etapa que podemos analisar, de maneira correta,
a ACF e PACF.
42
7 Processos ARMA
Agora que temos uma noo do que so processos autoregressivos e de mdia mveis
podemos juntar os dois, desta forma podemos analisar processos mistos, ou processos
ARMA. Este processo, ARMA(p,q), mais geral pode ser formulado como a seguir
Yt = + 1 Yt1 + + p Ytp + t + 1 t1 + + q tq
onde
iid
t N (0, 2 ).
1. Identicao
2. Estimao
43
(a) Modelos puramente autoregressivos podem ser estimados de maneira consis-
tente
10
por OLS, OLS no linear e por mxima verossimilhana.
(b) Modelos puramente caracterizados por mdias mveis podem ser estimados de
(c) Modelos ARMA podem ser estimados de maneira consistente por OLS no
3. Diagnstico
(b) Autocorrelaes
(c) ARCH
(d) Normalidade
amostras.
44
8 Testes de estacionaridade
Como vimos anteriormente, o segundo passo da metodologia de Box-Jenkins o de deter-
minar a ordem de integrao, d, de uma srie11 . Apresentamos a seguir alguns dos testes
Yt = Yt1 + t
onde
iid
t N (0, 2 ).
uma raz unitria e, portanto, ser no estcionrio. Logo, o teste de raz unitria testa se
Yt = ( 1)Yt1 + t
Yt = Yt1 + t .
12
teste unilateral .
11 Aqui abordamos somente mtodos simples para remover sazonalidade dos dados e, para o nosso
45
Assuma agora que temos em mos uma certa srie, yt , e que queremos determinar sua
plot(yt,
ylab=expression(Y[t]),
main='',
bty='l',
col='blue')
grid(col='darkgrey', lwd=2)
10
5
0
Yt
10
20
Time
ou no, simplesmente olhando para o seu grco basicamente impossvel. Para testar
esta hiptese de maneira mais formal podemos ento seguir as instrues dadas acima.
13
Ou seja, rodamos a regresso da primeira diferena da srie contra sua defasagem.
summary(lm(diff(yt)~lag(yt,-1)[-length(yt)] - 1))
##
13 Note que no cdigo desta passagem adicionamos o 1, este comando fora a regresso atravs da
origem, ou seja, sem intercepto. Alm disso temos que corrigir o tamanho do vetor das observaes da
defasagem.
46
## Call:
## lm(formula = diff(yt) ~ lag(yt, -1)[-length(yt)] - 1)
##
## Residuals:
## Min 1Q Median 3Q Max
## -3.3856 -0.7056 -0.0622 0.6434 2.8990
##
## Coefficients:
## Estimate Std. Error t value Pr(>|t|)
## lag(yt, -1)[-length(yt)] 0.003974 0.008372 0.475 0.636
##
## Residual standard error: 0.9889 on 198 degrees of freedom
## Multiple R-squared: 0.001137,Adjusted R-squared: -0.003908
## F-statistic: 0.2253 on 1 and 198 DF, p-value: 0.6355
Como podemos notar, a estatstica t para a hiptese nula de = 0 igual a 0.47, logo
no rejeitariamos a hiptese nula ao seguir a distribuio padro t. Porm, para testar
de maneira correta esta hiptese, devemos nos guiar pela tabela desenvolvida por Dickey
and Fuller (1979), esta dada por exemplo em Enders (2009). Para o nosso caso temos
que o valor crtico aproximadamente 2.58, logo no podemos rejeitar a hiptese nula.
14
Assim, conclumos que a srie yt no estacionria .
Como veremos agora, o uso de um pacote do R pode facilitar bastante a nossa vida.
Apesar de podermos especicar manualmente as regresses de interesse (e isto contribuir
para criar uma intuio), o trabalho ca muito mais prtico e rpido se tivermos acesso
14 Note que como o teste unilateral temos que | | > crtico no necessariamente signica que rejeitamos
a hiptese nula. Isto pode ser vericado se lembrarmos que a estatstica de teste s ser positiva se valer
47
library(urca)
summary(ur.df(yt, type='none', lags=0))
##
## ###############################################
## # Augmented Dickey-Fuller Test Unit Root Test #
## ###############################################
##
## Test regression none
##
##
## Call:
## lm(formula = z.diff ~ z.lag.1 - 1)
##
## Residuals:
## Min 1Q Median 3Q Max
## -3.3856 -0.7056 -0.0622 0.6434 2.8990
##
## Coefficients:
## Estimate Std. Error t value Pr(>|t|)
## z.lag.1 0.003974 0.008372 0.475 0.636
##
## Residual standard error: 0.9889 on 198 degrees of freedom
## Multiple R-squared: 0.001137,Adjusted R-squared: -0.003908
## F-statistic: 0.2253 on 1 and 198 DF, p-value: 0.6355
##
##
## Value of test-statistic is: 0.4747
##
## Critical values for test statistics:
## 1pct 5pct 10pct
## tau1 -2.58 -1.95 -1.62
48
Como podemos ver, a funo ur.df nos retorna automaticamente os valores crticos
para o nosso teste, logo no precisamos ter a tabela por perto. Agora a nica que resta
fazer comparar o valor de t com o valor crtico . Se t< rejeitamos a hiptese nula,
Neste nosso caso especco, como t > , no rejeitamos a hiptese de que a srie
possui raz unitria. Logo, devemos prosseguir com os nossos testes. Agora devemos
testar para ver se nossa srie I(1), pois acabamos de concluir que ela no I(0). Para
isso diferenciamos a nossa srie, visualizamos o grco dela e, nalmente, fazemos o teste
1
3
Time
##
## ###############################################
## # Augmented Dickey-Fuller Test Unit Root Test #
## ###############################################
##
## Test regression none
##
##
## Call:
49
## lm(formula = z.diff ~ z.lag.1 - 1)
##
## Residuals:
## Min 1Q Median 3Q Max
## -3.3479 -0.6935 -0.0649 0.5995 2.9076
##
## Coefficients:
## Estimate Std. Error t value Pr(>|t|)
## z.lag.1 -0.95564 0.07071 -13.52 <2e-16 ***
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
##
## Residual standard error: 0.9844 on 197 degrees of freedom
## Multiple R-squared: 0.4811,Adjusted R-squared: 0.4785
## F-statistic: 182.6 on 1 and 197 DF, p-value: < 2.2e-16
##
##
## Value of test-statistic is: -13.5146
##
## Critical values for test statistics:
## 1pct 5pct 10pct
## tau1 -2.58 -1.95 -1.62
seja,
Se t< = Rejeita-se H0 : = 0
Desta vez podemos armar com certeza absoluta que o processo yt I(1), pois fomos
ns que criamos ele. Como pode ser visto abaixo no cdigo que utilizamos, a srie yt
um passeio aleatrio.
50
yt = ts(cumsum(rnorm(200)), end=c(2014,12), freq=12)
que diferentes verses deste teste signica o uso de diferentes distribuies de . Estes
diferentes valores tambm esto reportados em Enders (2009) e se referem a testes como
Yt = Yt1 + t ,
Yt = + Yt1 + t ,
Yt = + t + Yt1 + t ,
ou seja, testes DF que incorporam uma constante e tambm termos de tendncia. Sob
A no ser que haja forte razes tericas, devemos sempre comear testando a presena
Quando o valor verdadeiro do nosso parmetro varia muito em relao a nossa hiptese
do tipo II, isto , a probabilidade de se rejeitar a hiptese nula quando ela efetivamente
16
falsa .
O poder dos testes DF e ADF , em geral, pequeno devido a alta persistncia e/ou
vezes tendemos a aceitar a existncia de uma raz unitria quando na verdade deveramos
16 O tamanho do teste a percentagem de vezes que rejeitamos uma hiptese nula que na verdade
deveramos aceitar.
51
rejeita-l. Este problema, ao se incluir um nmero maior de regressores que no esto
17
presentes no processo da srie, somente aumenta .
ter como consequencia estimados inecientes e viesados. Logo, neste caso, a inferncia
s pode ser feita aps garantirmos que os resduos no apresentam autocorrelao. As-
maior de defasagens das diferenas. Isto , podemos utilizar uma regresso do tipo
m
X
Yt = + t + Yt1 + i Yti + t .
i=1
Dado que o poder do teste baixo, queremos utilizar o menor nmero possvel de defasa-
gens que garanta a no autocorrelao dos resduos. Uma maneira de prosseguir seria o de
risco com este ltimo mtodo dado que defasagens posteriores possam ser signicativas,
18
logo estariam sendo omitidas do modelo . Outros mtodos incluem: reduzir o nmero de
defasagens atravs de testes t, determinao por critrios de informao (AIC, BIC, por
exemplo).
52
8.4 O teste de Phillips-Perron
sendo que uma maneira de garantir isso a de incluir defasagens das diferenas da varivel
teste DF com constante e tendncia, porm utiliza o estimador Newey-West para estimar
set.seed(12)
t <- 200
y1 <- ts(cumsum(rnorm(t)))
y2 <- rnorm(t)
O grco das sries dado abaixo, assim como o resultado dos testes.
ts.plot(y1, y2,
ylab='', xlab='Tempo',
main='',
col=c('blue', 'red'),
lwd=2)
grid(col='darkgrey', lwd=2)
53
6
4
2
0
4
Passeio aleatrio
Rudo branco
8
Tempo
PP.test(y1)
PP.test(y2)
srie apresenta raz unitria. Enquanto que no segundo caso rejeitamos a hiptese nula,
Como acabamos de ver, devemos partir da especicao mais geral quando testamos a
m
X
Yt = + t + Yt + i Yti + t .
i=1
54
se mesmo utilizando esta especicao rejeitarmos a hiptese nula podemos concluir que
21
tendncia, ou seja, testar se =0 dado que =0 .
2 )22 , se rejeitarmos podemos concluir que a srie possui raz unitria, caso contrrio,
Aceitando esta hiptese podemos concluir que a srie Yt , no mnimo, I(1). Porm,
para determinar a ordem de integrao da srie ser preciso repetir desde o incio o
processo descrito acima, s que desta vez utilizando a primeira diferena da srie, Yt .
21 Seguindo Pfa (2008), devemos utilizar para este teste o valor crtico de 3 .
22 Ainda seguindo Pfa (2008).
55
2. Estacionria com mdia diferente de zero
56
24
A Figura 6, retirada de Pfa (2008) , mostra o uxograma de decises, testes e
25
concluses que podemos fazer quando utilizamos esta estratgia . Vejamos a seguir um
dados e indicamos para o R que trata-se de dados anuais com incio em 1970. Como o
nosso interesse a renda disponvel (PPDI) iremos extrair somente esta varivel do arquivo.
Feita a importao podemos, como sempre, comear pela visualizao dos dados.
Renda disponvel
22000
18000
$
14000
Ano
57
Como podemos ver, a srie tem uma clara tendncia positiva. Logo, devemos testar
pela presena de um processo de raz unitria. O primeiro passo ser ento estimar o
26
modelo mais completo, isto , com constante e tendncia, e trs diferenas defasadas.
library(urca)
0.0
0.5
0 2 4 6 8 10 12 14
Defasagem
mentar o poder do teste ao retirarmos uma defasagem do teste. Rodamos agora o teste
ADF com somente duas defasagens e analisamos novamente o correlograma dos resduos.
26 Aqui utilizaremos a regra de bolso 3 f requencia para determinar o nmero inicial de defasagens a
58
adf.y <- ur.df(y, type='trend', lags=2)
0.0
0.5
0 2 4 6 8 10 12 14
Defasagem
59
ACF Resduos ADF sem defasagem
1.0
0.5
ACF
0.0
0.5
0 2 4 6 8 10 12 14
Defasagem
Como pode ser visto no grco anterior, continuando com o procedimento iremos con-
cluir que no necessrio incluir nenhuma defasagem no teste. Agora podemos nalmente
comear a testar nossas hipteses. A primeira que =0 e para isso devemos comparar
summary(adf.y)
##
## ###############################################
## # Augmented Dickey-Fuller Test Unit Root Test #
## ###############################################
##
## Test regression trend
##
##
## Call:
## lm(formula = z.diff ~ z.lag.1 + 1 + tt)
##
## Residuals:
## Min 1Q Median 3Q Max
## -417.27 -212.19 10.75 134.86 547.15
##
60
## Coefficients:
## Estimate Std. Error t value Pr(>|t|)
## (Intercept) 4792.8567 2016.7164 2.377 0.0251 *
## z.lag.1 -0.3549 0.1597 -2.222 0.0352 *
## tt 121.6977 53.8866 2.258 0.0325 *
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
##
## Residual standard error: 271.1 on 26 degrees of freedom
## Multiple R-squared: 0.165,Adjusted R-squared: 0.1008
## F-statistic: 2.57 on 2 and 26 DF, p-value: 0.09586
##
##
## Value of test-statistic is: -2.2223 18.5193 2.5696
##
## Critical values for test statistics:
## 1pct 5pct 10pct
## tau3 -4.15 -3.50 -3.18
## phi2 7.02 5.13 4.31
## phi3 9.31 6.73 5.61
procurar aumentar o poder do teste. Para isso podemos testar se a tendncia estatisti-
por 3 que, utilizando um nvel de signicncia de 5%, igual a 6.73. Como estamos que-
que = 0| = 0, logo podemos concluir que o termo da tendncia pode ser retirado para
Agora que a tendncia determinstica foi retirada devemos refazer estes procedimentos
61
adfd.y <- ur.df(y, type='drift', lags=0)
summary(adfd.y)
##
## ###############################################
## # Augmented Dickey-Fuller Test Unit Root Test #
## ###############################################
##
## Test regression drift
##
##
## Call:
## lm(formula = z.diff ~ z.lag.1 + 1)
##
## Residuals:
## Min 1Q Median 3Q Max
## -574.47 -140.23 -7.91 132.03 771.88
##
## Coefficients:
## Estimate Std. Error t value Pr(>|t|)
## (Intercept) 2.955e+02 3.420e+02 0.864 0.395
## z.lag.1 3.516e-03 1.914e-02 0.184 0.856
##
## Residual standard error: 291 on 27 degrees of freedom
## Multiple R-squared: 0.001248,Adjusted R-squared: -0.03574
## F-statistic: 0.03373 on 1 and 27 DF, p-value: 0.8557
##
##
## Value of test-statistic is: 0.1836 21.9026
##
## Critical values for test statistics:
## 1pct 5pct 10pct
62
## tau2 -3.58 -2.93 -2.60
## phi1 7.06 4.86 3.94
Aqui, novamente, no podemos rejeitar a hiptese de raz unitria pois t = 0.18 >
2 = 2.93. Para vericar se podemos aumentar o poder do teste testamos se = 0| =
27
0, comparando a estatstica de teste com seu valor crtico, = 21.90 > 1 = 4.86.
Portanto, podemos rejeitar que = 0| = 0, e conclumos que no devemos retirar o
28
Student. Obviamente, como t = 0.18 > 0, podemos concluir rapidamente que trata-se
Para conrmar que esta srie , de fato, I(1) devemos recomear estes testes utilizando
agora a primeira diferena como varivel independente.
Completar com:
63
9 Estimando modelos ARIMA
Agora que j entendemos um pouco mais sobre os prrequisitos do processo de estimao,
J deve estar bem claro agora que o principal objetivo da anlise economtrica de
branco.
Para este objetivo, iremos utilizar a metodologia apresentada em Dickey and Fuller
1. Identicao
2. Estimao
tente
29
por OLS, OLS no linear e por mxima verossimilhana.
(b) Modelos puramente caracterizados por mdias mveis podem ser estimados de
amostras.
64
(c) Modelos ARMA podem ser estimados de maneira consistente por OLS no
3. Diagnstico
(b) Autocorrelaes
(c) ARCH
(d) Normalidade
Para este exemplo iremos utilizar a srie mensal da variao mensal do IPCA retirada
do SIDRA. A srie tem seu incio em 1980 porm iremos utilizar a srie a partir de
seguir temos o grco da srie original e sua verso ltrada, isto , a variao mensal do
IPCA
0.8
IPCA dessazonalizado
0.6
0.4
0.2
0.0
Ano
Como pode ser visto, a retirada da sazonalidade determinstica teve basicamente zero
65
9.2.1 Ordem de integrao
Para isso, comeamos pelo teste ADF com constante e 36 defasagens
30
, vericando o ACF
dos resduos da regresso.
acf(adf1@res, ci.type='ma',
main='Resduos de teste ADF - 6 defasagens',
xlab='Defasagem')
0.2
0.2
0 5 10 15
Defasagem
Comeando pela regresso de teste com 36 defasagens, podemos concluir, com o uso
dos correlogramas, que podemos aumentar o poder do teste usando somente 6 termos de
summary(adf1)
##
## ###############################################
## # Augmented Dickey-Fuller Test Unit Root Test #
## ###############################################
66
##
## Test regression drift
##
##
## Call:
## lm(formula = z.diff ~ z.lag.1 + 1 + z.diff.lag)
##
## Residuals:
## Min 1Q Median 3Q Max
## -0.37502 -0.10580 -0.01029 0.12128 0.34183
##
## Coefficients:
## Estimate Std. Error t value Pr(>|t|)
## (Intercept) 0.47659 0.08553 5.572 3.37e-07 ***
## z.lag.1 -1.02606 0.18080 -5.675 2.20e-07 ***
## z.diff.lag1 0.57071 0.15813 3.609 0.000537 ***
## z.diff.lag2 0.42860 0.14605 2.935 0.004370 **
## z.diff.lag3 0.47473 0.13354 3.555 0.000642 ***
## z.diff.lag4 0.32352 0.13263 2.439 0.016957 *
## z.diff.lag5 0.24056 0.12129 1.983 0.050814 .
## z.diff.lag6 0.23950 0.11403 2.100 0.038884 *
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
##
## Residual standard error: 0.1725 on 79 degrees of freedom
## Multiple R-squared: 0.348,Adjusted R-squared: 0.2903
## F-statistic: 6.024 on 7 and 79 DF, p-value: 1.212e-05
##
##
## Value of test-statistic is: -5.6751 16.1136
##
## Critical values for test statistics:
67
## 1pct 5pct 10pct
## tau2 -3.51 -2.89 -2.58
## phi1 6.70 4.71 3.86
a existncia de uma raz unitria. Ou seja, podemos concluir que a variao mensal do
9.2.2 Escolhendo p e q
Agora que identicamos que a variao mensal do IPCA estacionria, queremos carac-
terizar esta parte estacionria do processo. Faremos isso utilizando o ACF e PACF de
modo a identicar a ordem de termos ARMA que devemos utilizar. Abaixo temos os
dois correlogramas.
par(mfrow=c(2,1))
acf(ipcad, ci.type='ma', main='IPCA (variao mensal)')
pacf(ipcad, main='')
31 Talvez esta srie tenha sido um exemplo muito fcil para aprendermos o intuito do teste ADF se-
68
IPCA (variao mensal)
0.8
ACF
0.2
0.4
Lag
0.6
Partial ACF
0.2
0.2
Lag
em ambos grcos (bem de leve) sendo que a primeira defasagem do ACF bastante
signicante. Apesar de ser bem difcil identicar a partir dos correlogramas um modelo
ARMA a ser estimado, bem possvel se tratar de algo como um ARMA(1,0). Podemos
comear com algo mais geral, como por exemplo um ARMA(2,2) e retirar termos no
signicantes.
coeftest(arima(ipcad, order=c(2,0,2)))
##
## z test of coefficients:
##
## Estimate Std. Error z value Pr(>|z|)
69
## ar1 0.029864 0.987519 0.0302 0.9759
## ar2 0.205342 0.448281 0.4581 0.6469
## ma1 0.632196 0.983157 0.6430 0.5202
## ma2 0.061693 0.260710 0.2366 0.8129
## intercept 0.454590 0.039221 11.5905 <2e-16 ***
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
coeftest(arima(ipcad, order=c(2,0,1)))
##
## z test of coefficients:
##
## Estimate Std. Error z value Pr(>|z|)
## ar1 0.287620 1.078856 0.2666 0.7898
## ar2 0.093555 0.670168 0.1396 0.8890
## ma1 0.374399 1.060180 0.3531 0.7240
## intercept 0.454544 0.039339 11.5546 <2e-16 ***
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
modelo.
coeftest(arima(ipcad, order=c(1,0,1)))
##
## z test of coefficients:
##
## Estimate Std. Error z value Pr(>|z|)
70
## ar1 0.44348 0.15543 2.8532 0.004328 **
## ma1 0.21866 0.17357 1.2598 0.207745
## intercept 0.45451 0.03881 11.7111 < 2.2e-16 ***
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
coeftest(arima(ipcad, order=c(1,0,0)))
##
## z test of coefficients:
##
## Estimate Std. Error z value Pr(>|z|)
## ar1 0.583238 0.082428 7.0757 1.487e-12 ***
## intercept 0.454794 0.042716 10.6470 < 2.2e-16 ***
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
dado por
32
resduos esto limpos. Devemos analisar as seguintes questes :
32 Note que estas questes que devemos analisar esto diretamente ligadas s hipteses que zemos
para garantir a validade do nosso modelo. Estamos basicamente tentando garantir que podemos fazer
inferncia a partir da nossa estimativa e que o modelo seja vlido para observaes fora da amostra.
71
3. Devemos incluir/exluir regressores ?
como hiptese nula a independncia de uma dada srie de tempo, isto , assume que as
de que no capturamos alguma estrutura fora do modelo e, por isso, estaramos errando
de maneira sistematica. Este teste pode ser feito utilizando a funo Box.test, com a
Box-Ljung test
Note que usamos fitdf=133 , isto feito para corregir o grau de liberdade do teste dado
que a srie testada resultado de uma regresso com 1 termo AR. Como podemos ver a
estatstica de teste igual a 6.6 com p -valor de 0.25, logo no rejeitamos a hiptese nula
e podemos concluir que os resduos so conjuntamente no correlacionados (pelo menos
par(mfrow=c(1,2))
acf(resid(reg.ipca), main='Resduos ARMA(1,0)', ci.type='ma')
pacf(resid(reg.ipca), main='Resduos ARMA(1,0)')
72
Resduos ARMA(1,0) Resduos ARMA(1,0)
1.0
0.2
0.1
0.6
Partial ACF
ACF
0.1
0.2
0.2
0.3
0.0 0.5 1.0 1.5 0.5 1.0 1.5
Lag Lag
temos que o Ljung-Box testa a signicncia conjunta das defasagens de uma srie, logo
s ir testar at a ordem que por ns for especicada. Como pode ser visto pelo grco
anterior, devemos suspeitar de algum padro aps a sexta defasagem. De modo a vericar
essa nossa suspeita podemos realizar outro teste Ljung-Box s que desta vez testando at
a stima defasagem.
Box-Ljung test
Como podemos ver, nossa suspeita no foi em vo. Quais poderiam ser os possveis
73
IPCA por ms e IPCA mdio por ms
0.8
0.6
IPCA (%)
0.4
0.2
IPCA
Mdia
0.0
J F M A M J J A S O N D
como rodar o teste Ljung-Box utilizando a opo lag indo de 1 at n. Que tal criarmos
uma funo?
for (i in 1:lag.final){
74
# Rodar teste Ljung-Box e guardar p-valor no vetor
# 'pvalores'
return(pvalores)
}
shapiro.test(resid(reg.ipca))
##
## Shapiro-Wilk normality test
##
## data: resid(reg.ipca)
## W = 0.9911, p-value = 0.7874
normalmente distribudos.
IPCA mensal, devemos comparar o modelo nal com modelos alternativos. Seria pos-
svel explicar mais da variao do IPCA utilizando mais/menos regressores? Para esta
75
critrios so construdos com base nos resduos das regresses e representam, colocando
de uma maneira bem simples, mdias ponderadas. Logo, quanto menor for o critrio de
De modo a manter esta anlise curta, iremos somente utilizar o critrio de informao
de Akaike, ou AIC. Como o nosso modelo nal um ARMA(1,0), que tal comparar este
com um ARMA(0,1), ARMA(1,1) e ARMA(2,2) ? Abaixo, estimamos estes modelos e
AIC(reg.ipca) # ARMA(1,0)
## [1] -54.34407
## [1] -49.84835
## [1] -53.97261
## [1] -50.0395
Note que aqui utilizamos a funo update que nos permite atualizar um objeto que
34
era resultado de uma funo, algo que facilita bastante nossas operaes . Alm disso,
podemos concluir que nosso modelo ARMA(1,0) de fato o melhor modelo, pelo menos
76
10 Previso com modelos ARIMA
Agora que temos um modelo, o nosso interesse passa a ser o uso dele para fazer previses
YT +h|IT , que minimize o erro quadrtico mdio esperado, ou seja, o problema que queremos
resolver dado por
2
min E YT +h YT +h|T | IT .
Yt = Yt1 + t
= E {(YT + T +1 ) |YT , . . . , YT }
= YT + E {T +1 |YT , . . . , YT }
YT +1|T = YT .
De maneira parecida podemos derivar o preditor timo para dois passos a frente.
= E {(YT +1 + T +2 ) |YT , . . . , YT }
77
= E {YT + T +1 |YT , . . . , YT }
YT +2|T = 2 YT .
Assim, generalizando temos que o preditor timo de um processo AR(1) para h passos
frente dado por
YT +h|T = h YT .
YT +h|T = + h (YT )
Yt = t + t1 .
= E {T +1 + T |YT , . . . , YT }
= E {T |YT , . . . , YT }
YT +1|T = T .
= E {T +2 + T +1 |YT , . . . , YT }
= E {T +1 |YT , . . . , YT }
YT +2|T = 0.
frente, quando h for maior que a ordem do processo de mdia mvel, ser igual a zero.
78
10.2 Prevendo com o R
Dada esta pequena introduo terica, podemos prosseguir e comear a fazer previses.
Para isso, iremos utilizar o modelo estimado anteriormente para o IPCA. Utilizando a
Como podemos ver, a funo predict nos d como resultado as estimativas e seus
respectivos desvios-padro. Podemos utilizar estas sries para fazer um grco mostrando
nossas previses. A seguir duas maneiras de fazer os grcos so expostas, uma mais
par(mfrow=c(1,2))
ts.plot(window(ipca, start=2013),
prev$pred,
prev$pred+1.96*prev$se,
prev$pred-1.96*prev$se,
col=c(1,2,2,2), lty=c(1,1,2,2))
plot(window(ipca, start=2013),
xlim=c(2013, 2015.2),
col='darkblue', lwd=2, bty='l', ylab='IPCA',
main='Previso IPCA - Modelo AR(1)')
lines(ts(c(ipca[length(ipca)],prev$pred+1.96*prev$se),
start=c(2014,10), freq=12),
col='darkred', lwd=2, lty=2)
lines(ts(c(ipca[length(ipca)],prev$pred-1.96*prev$se),
79
start=c(2014,10), freq=12),
col='darkred', lwd=2, lty=2)
0.8
0.6
0.6
IPCA
0.4
0.4
0.2
0.2
0.0
0.0
2013.0 2014.0 2015.0 2013.0 2014.0 2015.0
Time Time
comparar com os valores observados. Como podem notar, este mtodo ir fazer previses
para valores dentro da nossa amostra, enquanto que no primeiro caso zemos previses
par(mfrow=c(1,2))
ts.plot(window(ipca, start=2013),
prev2$pred,
prev2$pred+1.96*prev2$se,
prev2$pred-1.96*prev2$se,
80
col=c(1,2,2,2), lty=c(1,1,2,2))
plot(window(ipca, start=2013),
col='darkblue', lwd=2, bty='l', ylab='IPCA',
main='Previso IPCA - Modelo AR(1)')
lines(ts(prev2$pred+1.96*prev2$se,
start=c(2014,07), freq=12),
col='darkred', lwd=2, lty=2)
lines(ts(prev2$pred-1.96*prev2$se,
start=c(2014,07), freq=12),
col='darkred', lwd=2, lty=2)
0.8
0.6
0.6
IPCA
0.4
0.4
0.2
0.2
0.0
0.0
Time Time
Para qualquer dado modelo temos que a nossa varivel de interesse pode ser descrita como
Yt = Yt + t
81
onde Yt a estimativa de Yt e t um erro. Logo, o erro de previso dado por
t = Yt Yt .
estamos errando, so a raiz quadrada do erro quadrtico mdio (REQM) e o erro absoluto
s
PT
2t
t=1
REQM =
T
PT
t=1 |
t |
EAM = .
T
Note primeiro que as duas medidas esto na mesma unidade que a varivel de inte-
resse, Yt , logo podemos avaliar diretamente o impacto do erro. Em segundo lugar, veja
a stil diferena que existe entre essas duas medidas em relao ao que se busca medir
efetivamente. Preferimos a primeira medida se queremos, em mdia, errar menos (ou ter
uma previso mais centrada no valor observado da varivel). Por outro lado, preferimos a
segunda medida quando buscamos um modelo que tenha, em mdia, valores mais baixos
35
de erro (ou seja, quando erramos no queremos estar muito longe do valor observado) .
Obviamente vale ressaltar que a acurrcia do modelo (segundo estas medidas) pode mudar
Vimos anteriormente que segundo o AIC os dois melhores modelos para o compor-
modelos utilizando estas duas medidas de erro de previso. Para isso precisamos cons-
truir uma srie de erros de previso (de um passo frente). O processo que iremos seguir
dado a seguir.
at dezembro de 2012;
35 No caso do EAM todos os erros recebem o mesmo peso, enquanto que no caso do REQM erros
82
3. Calcular e salvar erro de previso;
Seguindo a lgica descrita acima partimos para a parte prtica. Primeiro construimos
# Modelo 1
for (i in 1:length(erro1)){
predict(
arima(ipcad[1:(length(window(ipcad, end=c(2012, 12)))+i-1)], order=c(1,0,0)),
n.ahead=1)$pred
# Modelo 2
for (i in 1:length(erro1)){
predict(
83
arima(ipcad[1:(length(window(ipcad, end=c(2012, 12)))+i-1)], order=c(1,0,1)),
n.ahead=1)$pred
reqm1
## [1] 0.1973854
reqm2
## [1] 0.1985689
eam1
## [1] 0.1613305
eam2
## [1] 0.1591327
o EAM de 0.161 e 0.159, respectivamente. Logo, temos que pela primeira medida o
Modelo 1 se sai melhor, enquanto que pela segunda medida o Modelo 2 deveria ser o
84
36
escolhido .
Como se trata de medidas usadas comumente, talvez seria interessante criar uma
funo que calcula o REQM e o EAM. Abaixo segue um exemplo de como se poderia
print(reqm)
print(eam)
}
36 claro que estas duas medidas no so as nicas maneiras de se comparar o poder de previso de dois
modelos, porm para o intuito deste curso somente abordaremos esta duas medidas. Os mais interessados
85
11 Modelos multivariados
Nas sees anteriores estudamos modelos onde as variveis de interesse eram explicadas
pelos seus valores passados. Porm, talvez seja de nosso interesse incluir outras variveis
explicativas no modelo. No caso da inao medida pelo IPCA, por exemplo, talvez seria
interessante incluir a taxa de desemprego dado que acreditamos na Lei de Okun. Vejamos
agora o caso de modelos multivariados, onde usamos outras variveis alm de defasagens
da varivel endgena.
Aqui surge mais uma diferena entre a econometria de cross-sections e a de sries tem-
porais, os efeitos que uma varivel tem sobre a outra dinmico e existe diferena entre
efeitos de curto e longo prazo. De forma a ilustrar assuma o processo auto-regressivo com
Yt = + 1 Yt1 + 0 Xt + 1 Xt1 + t .
Este modelo tambm chamado de um modelo ADL(1), dado que a maior ordem das
defasagens 1. Consequentemente, um modelo ADL(p) pode ser escrito como
Obviamente, modelos ADL podem ser extendidos de forma a incluir mais regressores e
tria bsica, o multiplicador de impacto das variveis so dadas pelas derivadas parciais,
dado por
Yt
= 0 .
Xt
Os efeitos de longo prazo, por outro lado, podem ser obtidos de maneira recursiva
como a seguir
86
Yt+1 Yt
= 1 + 1 = 1 0 + 1
Xt Xt
Yt+2 Yt+1
= 1 + 1 = 1 (0 + 1 )
Xt Xt
...
Logo, somando todos esses efeitos teremos que o efeito de longo prazo dado por
X
X
1i 0 + 1i 1 + 1 1
i=0 i=0
0 + 1
=
1 1
Uma maneira alternativa de se obter o multiplicador de longo prazo atravs da
no mesmo nvel no equilbrio. Ou seja, que E(Yt ) = E(Yt1 ) e E(Yt ) = E(Yt1 ). Desta
(1 1 )E(Yt ) = + (0 + 1 )E(Xt )
0 + 1
E(Yt ) = + E(Xt )38
(1 1 ) 1 1
Finalmente, temos que no longo prazo
Yt 0 + 1
= .
Xt 1 1
38 Note que podemos denotar esta equao como Yt = + Xt , onde ter uma interpretao de longo
prazo.
87
11.2 Modelos de correo de erro
erro. Para isso, devemos subtrair Yt1 e 0 Xt1 de ambos os lados, obtendo
Yt = (1 1 )Yt1 + 0 Xt + (0 + 1 )Xt1 + t
ou
Yt = 0 Xt (1 1 )[Yt1 Xt1 ] + t
Modelos ADL simples podem ser estimados de maneira consistente utilizando MQO e aqui
utilizaremos a estratgia de modelar do caso mais geral para um mais especco. Esta
Onde como sempre, os testes de diagnsticos devem incluir testes para autocorrelao
Box-Pierce, Ljung-Box
( e Breusch-Godfrey, por exemplo), heterocedasticidade ( White,
Breusch-Pagan / LM e Ljung-Box nos resduos ao quadrado, por exemplo) e normalidade
Se valores passados de X nos ajudam a prever Y, ento diz-se que X Granger causa Y,
ou simplesmente X Y. Assuma a seguinte equao que descreve a relao entre X e
Y:
n
X n
X
Yt = i Xti + i Yti + 1t .
1 1
88
Pn
Se 1 i 6= 0, ou seja, se todos i so conjuntamente diferentes de zero, ento temos
n
X n
X
Xt = i Xti + i Yti + 2t .
1 1
Pn
Onde, se valer que 1 i 6= 0, poderemos concluir que Y X.
Antes de continuar com a anlise de modelos multivariados, vejamos algumas das hipteses
que devem ser satisfeitas de modo a garantir o bom funcionamento dos estimadores
MQO.
E(t |X) = 0, t = 1, . . . , n.
Note que para H2 valer, t deve ser no correlacionado com Xs mesmo quando s 6= t.
Isto somente valer quando todos os regressores forem estritamente exgenos. Est hip-
tese pode ser bem difcil de garantir e problemas como omisso de variveis e defasagens,
erro de medida, causalidade reversa e at mesmo o caso de um modelo AR(1) violam esta
hiptese.
Se estas hipteses acima so vlidas ento temos que os estimadores MQO sero no
viesados e, consequentemente, = .
E()
seja
89
H5 Ausncia de autocorrelao A correlao dos erros entre dois perodos distintos
dado X zero,
Corr(t , s |X) = 0 t 6= s.
11.5.3 Inferncia
H6 Normalidade Os erros t so independentes de X e
i.i.d.
N (0, 2 ).
Sob as hipteses H1-H6 os estimadores de MQO so normalmente distribuidos dado
E(t |xt ) = 0, t = 1, . . . , n.
Note que aqui a exogeneidade exigida somente contempornea, ou seja, uma hiptese
V ar(t |xt ) = 2 .
H5 Ausncia de autocorrelao
Corr(t , s |xt , xs ) = 0.
90
11.7 Modelos dinmicos com variveis no estacionrias
resultados das regresses no podem ser conados. Vejamos a seguir o problema do uso
de variveis no estacionrias.
Xt = Xt1 + Xt
Yt = Yt1 + Y t
i.i.d.
onde Xt , Y t (0, 1). Se rodarmos a regresso a seguir
Yt = + Xt + t
39
signicante . Ou seja, iremos concluir, erroneamente, que existe uma relao entre essas
duas variveis.
set.seed(3)
x <- cumsum(rnorm(200))
y <- cumsum(rnorm(200))
Como conhecemos o processo que gera as duas sries, temos certeza absoluta de que
summary(lm(y~x))
91
##
## Call:
## lm(formula = y ~ x)
##
## Residuals:
## Min 1Q Median 3Q Max
## -11.2269 -2.8512 -0.1129 2.9624 12.4666
##
## Coefficients:
## Estimate Std. Error t value Pr(>|t|)
## (Intercept) 8.3356 0.3613 23.073 < 2e-16 ***
## x 0.7510 0.0959 7.831 2.88e-13 ***
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
##
## Residual standard error: 5.061 on 198 degrees of freedom
## Multiple R-squared: 0.2365,Adjusted R-squared: 0.2326
## F-statistic: 61.32 on 1 and 198 DF, p-value: 2.883e-13
Agora vamos ver o que acontece quando acrescentamos um drift nas sries
40
.
summary(lm(yd~xd))
40 Note que utilizaremos a mesma semente (ou o mesmo nmero para a opo set.seed) e, portanto,
estaremos analisando as mesmas sries porm com drift.
92
##
## Call:
## lm(formula = yd ~ xd)
##
## Residuals:
## Min 1Q Median 3Q Max
## -7.2085 -1.3834 0.2746 1.4287 7.2029
##
## Coefficients:
## Estimate Std. Error t value Pr(>|t|)
## (Intercept) -5.650790 0.431231 -13.10 <2e-16 ***
## xd 0.207911 0.006627 31.37 <2e-16 ***
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
##
## Residual standard error: 2.591 on 198 degrees of freedom
## Multiple R-squared: 0.8325,Adjusted R-squared: 0.8317
## F-statistic: 984.2 on 1 and 198 DF, p-value: < 2.2e-16
Como podemos ver, a existncia do drift no processo que gera os dados agrava o
11.8 Cointegrao
41
Vamos agora assumir que exista de fato uma relao entre Xt e Yt , como a seguir
Xt = Xt1 + Xt
Yt = Xt + Y t .
A relao entre Xt e Yt linear e pode ser caracterizada pelo vetor [1, ]. Este
vetor comumente chamado de vetor cointegrante, isto porque ele o vetor que gera uma
combinao estacionria de Xt e Yt .
93
Denio As variveis Xt e Yt so ditas cointegradas se existe pelo menos uma com-
binao linear entre elas, Y t = Yt Xt , que gere uma varivel estacionria, ou seja,
I(0).
Este conceito de cointegrao tem uma ligao estreita com o conceito de equilbrio
Yt = + Xt + ut
prosseguir para a parte formal de como distinguir entre uma relao espria entre duas
est nos resduos resultantes da regresso entre as duas variveis de interesse. Logo,
Yt = + Xt + t
42
rejeitar a hiptese de que Xt e Yt so cointegrados .
Yt = 0 + 1 Xt + 2 ut1 + t
42 Note que a maneira mais comum de se testar esta hiptese atravs dos testes ADF, porm neste
94
onde t um rudo branco e
Yt = + Xt + ut .
Se Xt e Yt so I(1) e possuem uma relao de longo prazo, ento algo deve trazer
os erros de equilbrio de volta para zero. Este algo justamente o erro de equilbrio do
C = f (Y ) = Y.
curto prazo menor que a PMC de longo prazo, neste caso, devido a formao de hbito.
as sries.
95
renda <- coint[,2]
par(new=T)
plot(renda, col='black',
ann=F, axes=F, ylim=range(coint))
par(new=F)
grid(col='darkgrey', lwd=2)
Consumo final
Renda disponvel bruta
R$
200000 600000
Assumimos anteriormente que Yt e Xt eram I(1), isto porque no faria sentido buscar
cointegrao entre variveis que so estacionrias. Apesar das sries apresentarem uma
tendncia clara, faremos um teste formal para vericar que ambas as sries so integradas
96
de mesma ordem. Para isto utilizaremos o teste ADF 43 .
ur.df(cons)
##
## ###############################################################
## # Augmented Dickey-Fuller Test Unit Root / Cointegration Test #
## ###############################################################
##
## The value of the test statistic is: 6.1682
ur.df(renda)
##
## ###############################################################
## # Augmented Dickey-Fuller Test Unit Root / Cointegration Test #
## ###############################################################
##
## The value of the test statistic is: 6.7522
ur.df(diff(cons))
##
## ###############################################################
## # Augmented Dickey-Fuller Test Unit Root / Cointegration Test #
## ###############################################################
##
## The value of the test statistic is: -5.3537
ur.df(diff(renda))
##
## ###############################################################
97
## # Augmented Dickey-Fuller Test Unit Root / Cointegration Test #
## ###############################################################
##
## The value of the test statistic is: -4.34
##
## Call:
## lm(formula = cons ~ renda)
##
## Residuals:
## Min 1Q Median 3Q Max
## -40789 -12108 -622 11385 67986
##
## Coefficients:
## Estimate Std. Error t value Pr(>|t|)
## (Intercept) 6.823e+03 4.818e+03 1.416 0.161
## renda 8.326e-01 7.046e-03 118.170 <2e-16 ***
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
##
## Residual standard error: 20590 on 73 degrees of freedom
## Multiple R-squared: 0.9948,Adjusted R-squared: 0.9947
## F-statistic: 1.396e+04 on 1 and 73 DF, p-value: < 2.2e-16
Os resultados preliminares indicam que nossa hiptese sobre a PMC de longo prazo
vlida, ou seja, est entre 0 e 1. Agora devemos descobrir se esta regresso espria ou
se realmente ela nos d algo de valor. Para isso devemos salvar os resduos e vericar se
so estacionrios ou no.
98
ur.df(reg$resid)
##
## ###############################################################
## # Augmented Dickey-Fuller Test Unit Root / Cointegration Test #
## ###############################################################
##
## The value of the test statistic is: -3.7513
Como foi dito anteriormente, apesar de utilizarmos o teste ADF no podemos utilizar
coeciente de valor 0.83, pode ser interpretado como a PMC de longo prazo. Agora,
u <- reg$resid[-length(reg$resid)]
dCons <- diff(cons)
dRenda <- diff(renda)
summary(ecm)
##
## Call:
## lm(formula = dCons ~ dRenda + u)
##
## Residuals:
99
## Min 1Q Median 3Q Max
## -28684 -11416 -2883 11382 60992
##
## Coefficients:
## Estimate Std. Error t value Pr(>|t|)
## (Intercept) -23.03217 2134.84957 -0.011 0.991422
## dRenda 0.83767 0.06075 13.788 < 2e-16 ***
## u -0.39301 0.10030 -3.919 0.000203 ***
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
##
## Residual standard error: 16670 on 71 degrees of freedom
## Multiple R-squared: 0.7855,Adjusted R-squared: 0.7795
## F-statistic: 130 on 2 and 71 DF, p-value: < 2.2e-16
estimado ter o valor de 0.39, ou seja, ele negativo. Isto deve sempre ser verdade,
pois signica que quando existe um erro positivo o modelo ajusta-se para baixo. Ou
seja, o termo de correo de erro est fazendo exatamente o que ele deveria fazer, ajuster
Alm disso, podemos ver que a PMC de curto prazo foi estimada em 0.84, indo contra
se usar dois passos este tipo de estimao torna-se menos eciente, isto , seus estimadores
seguinte equao
100
cCons <- cons[-length(cons)]
cRenda <- renda[-length(renda)]
summary(ecm2)
##
## Call:
## lm(formula = dCons ~ dRenda + cCons + cRenda)
##
## Residuals:
## Min 1Q Median 3Q Max
## -28785 -12032 -2679 10180 59321
##
## Coefficients:
## Estimate Std. Error t value Pr(>|t|)
## (Intercept) 960.69728 4097.08048 0.234 0.815294
## dRenda 0.83410 0.06149 13.565 < 2e-16 ***
## cCons -0.39302 0.10083 -3.898 0.000220 ***
## cRenda 0.33023 0.08416 3.924 0.000201 ***
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
##
## Residual standard error: 16760 on 70 degrees of freedom
## Multiple R-squared: 0.7863,Adjusted R-squared: 0.7771
## F-statistic: 85.86 on 3 and 70 DF, p-value: < 2.2e-16
Como podemos ver, obtemos aproximadamente o mesmo valor para a PMC de curto
prazo, ou seja, 0.83. Alm disso temos que os resduos dessa regresso so estacionrios:
101
ur.df(ecm2$resid)
##
## ###############################################################
## # Augmented Dickey-Fuller Test Unit Root / Cointegration Test #
## ###############################################################
##
## The value of the test statistic is: -7.8055
A PMC de longo prazo pode ser obtido pelo negativo da razo entre os coecientes
0.33
PMC de longo prazo = = 0.84
0.39
No exemplo anterior deveriamos ser capazes de reverter a ordem das variveis, ou seja, co-
locar renda como varivel explicada, e obter os mesmos resultados. Vejamos os resultados
desta regresso.
summary(reg2)
##
## Call:
## lm(formula = renda ~ cons)
##
## Residuals:
## Min 1Q Median 3Q Max
## -77741 -14730 761 15201 49655
##
## Coefficients:
## Estimate Std. Error t value Pr(>|t|)
## (Intercept) -5.058e+03 5.820e+03 -0.869 0.388
102
## cons 1.195e+00 1.011e-02 118.170 <2e-16 ***
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
##
## Residual standard error: 24660 on 73 degrees of freedom
## Multiple R-squared: 0.9948,Adjusted R-squared: 0.9947
## F-statistic: 1.396e+04 on 1 and 73 DF, p-value: < 2.2e-16
coeciente obtido neste caso, tambm se aproxima bastante do valor obtido na primeira
regresso que rodamos, onde no primeiro caso obtemos 0.833 e o inverso do coeciente
integrao so diferentes). Assuma, por exemplo, que yt seja I(0) enquanto que xt e zt
sejam I(1) e que exista a seguinte relao
yt = + xt + zt + t .
no mnimo duas variveis de cada ordem de integrao. Uma varivel I(1), por exemplo,
nunca poder ser cointegrada com uma varivel I(2).
103
A metodologia de Johansen nos diz quantos vetores cointegrantes existem entre n
variveis. Voltaremos a este mais frente aps introduzir o tpico de modelos de vetores
autoregressivos.
104
Referncias
Dickey, D. A. and Fuller, W. A. Distribution of the estimators for autoregressive time
series with a unit root. Journal of the American statistical association, 74(366a):427
431, 1979.
Enders, W. Applied Econometric Times Series. Wiley Series in Probability and Statistics.
Wiley, 2009.
Pfa, B. Analysis of integrated and cointegrated time series with R. Springer, New York,
105