See discussions, stats, and author profiles for this publication at: https://www.researchgate.net/publication/303382166
Análise de Séries Temporais em R: um curso introdutório Book · May 2016 DOI: 10.13140/RG.2.1.1787.2246
CITATIONS
READS
0
1,035
1 author:
Pedro Ferreira Getulio Vargas Foundation, Rio de Janeiro, Brazil 13 PUBLICATIONS 53 CITATIONS
SEE PROFILE
All content following this page was uploaded by Pedro Ferreira on 20 May 2016. The user has requested enhancement of the downloaded file.
An´ alise de S´ eries Temporais em
R
Um curso introdut´orio
Autor e Organizador Pedro Costa Ferreira Autores Daiane Marcolino de Mattos Diego Camillo Vilela de Almeida Ingrid Christyne Luquett de Oliveira Rafael Jorge Pereira
2
An´alise de S´eries Temporais em R Um curso introdut´orio
2
Conte´ udo
I
Introdu¸c˜ ao ao R, Estat´ıstica Descritiva + Gr´ aficos
9
1 Introdu¸c˜ ao ao R 1.1
11
O que ´e o R e RStudio? . . . . . . . . . . .
...........
.........
12
1.1.1
O que ´e o RStudio . . . . . . . . . .
...........
.........
12
1.1.2
Como baixar o R e o RStudio . . . . . . . . . . . . . . .
1.2 Iniciando o R . . . . . . . . . . . . . . . . . . .
...........
......... .......
1.2.1
Primeiros Passos . . . . . . . . . . . . . . . . . . . .
1.2.2
Como criar um diret´orio de trabalho . . . . . . . . . . . . . . .
1.2.3
Como criar um script . . . . . . . . . . . .
...........
1.2.4
Como instalar e carregar pacotes ( packages ) . . . . . . . . . . .
1.2.5
Leitura de dados . . . . . . . . . . .
1.2.6
Salvar dados . . . . . . . . . . .
...........
........... ...........
1.3 Descobrindo Informa¸co˜es sobre o Objeto . . . . . . . 1.4 Maneiras f´aceis de aprender o R
13 13 13
..... .....
......... ...........
............
30
.....
31
33 34 ...
35
. . . . . . . . . . . . . . . . . . . . . . . . . . 39
2 Estat´ıstica Descritiva e Gr´ aficos 2.1
29
Estat´ıstica Descritiva . . . . . . . . . . . .
43 .............
........
44
´ CONTEUDO
4 2.1.1
Popula¸c˜ao e amostra . . . . . . . . .
2.1.2
Vari´aveis . . . . . . . . . . .
...........
...........
...........
II 3
44
. . 44
2.1.3
Tabela de Frequˆ encias . . . . . . . . . . . . . . . . . . . . .
2.1.4
Medidas de Posi¸c˜ao . . . . . . . . . . .
.......
2.1.5
Medidas de Dispers˜ao . . . . . . . . . . . .
2.1.6
Covariˆancia e Correla¸c˜ao . . . . . . . . . . . . . . . . . . . . . . . . . . 54
2.1.7
Medidas calculadas por grupos . . . . . . . . . .
...........
.......
...........
45 46
.....
...........
2.2 Criando Gr´aficos com o R . . . . . . . . . . . . . . . . .
2.3
.........
51
. . 55
...........
. . 58
2.2.1
Histograma . . . . . . . . . . . . . . . . . . .
............
2.2.2
Boxplot . . . . . . . . . .
2.2.3
Gr´afico de Pontos ou Gr´afico de Dispers˜ao . . . . . . . . . .
2.2.4
Gr´afico de Setores ou de Pizza
2.2.5
Gr´afico de Barras . . . . . . . . . . . .
2.2.6
Outros gr´aficos . . . . . . . . . . . . . . . . . .
2.2.7
Adicionando elementos ao gr´afico . . . . . . . . . . . . . . . . . . . . . 83
2.2.8
M´ultiplos Gr´aficos . . . . . . . . . .
...........
...
............
..........
...
60 66
.......
............
.............
......
...........
...........
...
69
. 72 76 80
.........
92
Exerc´ıcios: Introdu¸c˜ao ao R e Estat´ıstica Descritiva . . . . . . . . . . . . . . . 95
An´ alise de S´ eries Temporais: Modelos Univariados
101 103
NAIVE, M´ edias M´ oveis e Modelo de Amortecimento Exponencial
3.1 Modelo NAIVE 3.2
............
M´ edia M´ ovel . . . . . . . . . . . .
............. .............
..........1 ............1
04 10
3.3 Modelos de suaviza¸ca˜o exponencial . . . . . . . . . . . . . . . . . . . . . . . . . 1 16 3.3.1
Modelos para s´eries localmente constantes . . . . . . . . . . . . . . . . . 1 16
3.3.2
Modelos para s´ eries com tendˆ encia . . . . . . . . . . . . . . . . . . . . . 1 20
3.3.3 Modelos para s´eries sazonais . . . . . . . . . . . . ............1 24 3.4 Carga de Energia . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1 29 3.5 Considera¸c˜oes finais . . . . . . . . . . . .
.............
........1
39
´ CONTEUDO
5
4 Processos N˜ ao-estacion´ arios
141
4.1 Introdu¸c˜ao . . . . . . . . . . . . .
.............
............1
42
4.2 Tipos de n˜ao-estacionariedade . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1 44 4.3 Diferencia¸c˜ao e Remo¸c˜ao de Tendˆ encia . . . . . . 4.4 Testes Formais . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . 1 47
.............
..........1
4.4.1
Augmented Dickey-Fuller (ADF) . . . . . . . . . . . . . . . . . . . . . . 1 52
4.4.2
KPSS . . . . . . . . . . . . . . . . . . . . . . . . .
4.4.3
Phillips-Perron . . . . .
4.4.4
Dickey Fuller-GLS (ERS) . . . . . . . . . . . . . . . . . . . . . . . . . . 156
4.4.5
Zivot-Andrews . . . . .
.... .... .....
.... .... .....
. . . . . . . . . . . . 1 54 . . . . . . . . . . . . . . 1 55
. . . . . . . . . . . . . . 1 57
4.5 Quebras Estruturais . . . . . . . . . . . . . . . . . . . . .
5
51
. . . . . . . . . . . . 1 59
4.5.1
Principais Testes para Quebras Estruturais . . . . . . . . . . . . . . . . 1 60
4.5.2
Decomposi¸ca˜o de Hodrick-Prescott (Filtro HP) . . . . . . . . . . . . . . 1 65 169
Modelos SARIMA ( p, d , q)(P, D, Q)12
5.1 Introdu¸c˜ao . . . . . . . . . . . . .
.............
............1
70
5.2 Preliminares . . . . . . . . . . . . .
.... .... .....
. . . . . . . . . . . . 1 71
5.2.1
Defini¸c˜ao do diret´orio . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1 71
5.2.2
Instala¸c˜ao dos pacotes necess´arios . . . . . . . . . . . . . . . . . . . . . 1 71
5.3 An´alise Explorat´oria da ST AirPassengers . . . . . . . . . . . . . . . . . . . . . 1 72 5.3.1
Leitura da ST no R . . . . . . . . . . . .
.............
. . . . 172
5.3.2
Uma an´alise um pouco mais profunda da sazonalidade . . . . . . . . . . 1 73
5.3.3
Decomposi¸ca˜o da ST . . . . . . .
. . . . . . . . . . . . . . . . . . . . . . 1 74
5.4 Conhecendo a ST ante s de iniciar a mode lagem BJ . . . . . . . . . . . . . . . . 1 76 5.4.1
Testando a estacionariedade da parte n˜ao sazonal . . . . . . . . . . . . . 176
5.4.2
Avaliando a estacionariedade da parte sazonal . . . . . . . . . . . . . . 1 83
5.5 Modelando a ST . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 185 5.5.1 Identifica¸ca˜o . . . . . . . . . . . . ............. . . . . . . . . 1 86 5.5.2
Estima¸c˜ao . . . . . . .
.....
.... .....
.... .... .....
. 187
´ CONTEUDO
6 5.5.3
Diagn´ostico . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . 1 90
5.5.4
Previs˜ao . . . . . .
. . . . . . . . . . . . 1 94
.....
5.6 Extraindo as Previs˜oes . . . . .
.... .... ..... .... .... .....
5.7 Considera¸c˜oes finais . . . . . . . . . . . .
.... .... .....
.............
. 196
........1
96
6 Ajuste Sazonal utilizando modelos X-13 A RIMA-SEATS 6.1 Introdu¸c˜ao . . . . . . . . . . . . .
.............
199
............2
00
6.2
Breve resumo sobre o X-13ARIMA-SEATS . . . . . . . . . . . . . . . . . . . . 2 01
6.3
Pr´ e-algoritmo . . . . . . . . . . . .
.... .... .....
. . . . . . . . . . . . 2 02
6.4 Algoritmo de ajuste sazonal usando o R . . . . . . . . . . . . . . . . . . . . . . 204 6.5 Ajuste sazonal no ´Indice de Produ¸c˜ao Industrial . . . . . . . . . . . . . . . . . 2 07 6.6 Considera¸c˜oes Finais . . . . . . . . . . . . . . . . . . .
III
. . . . . . . . . . . . . . 2 18
An´ alise de S´ eries Temporais: Modelos Multivariados
221
7 Modelo de Box & Jenk ins com fu n¸c˜ ao de transferˆ encia 7.1 Introdu¸c˜ao . . . . . . . . . . . . . 7.2 Defini¸c˜ao . . . . . . . . . . . .
............. .............
223
............2 ............
24
. . 224
7.3 Dados e pacotes necess´arios . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2 25 7.4 Metodologia . . . . . .
.... .....
.... .....
.... .... .....
. 227
7.4.1
Calcular a fun¸c˜ao de correla¸c˜ao cruzada entre Y e X . . . . . . . . . . . 227
7.4.2
Identificar r, s e b . . . . . . . . . . . . .
7.4.3
Estimar o modelo BJ com FT . . . . . . . . . . . . . . . . . . . . . . . . 2 32
7.4.4
Verificar se o modelo ´e adequado . . . . . . . . . . . . . . . . . . . . . . 2 34
7.5 Considera¸c˜oes finais . . . . . . . . . . . .
.............
.............
. . . . 231
........2
36
8 Regress˜ ao Dinˆ amica
237
8.1 Introdu¸c˜ao . . . . . . . . . . . . . ............. ............2 38 8.2 Modelo Cl´assico de Regress˜ao Linear . . . . . . . . . . . . . . . . . . . . . . . . 2 38 8.3 Correla¸c˜ao Serial . . . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . 2 41
´ CONTEUDO
8.4
7
8.3.1
Testando a Correla¸c˜ao Serial . . . . . . . . . . . . . . . . . . . . . . . . 2 41
8.3.2
Corrigindo a correla¸c˜ao serial . . . . . . . . . . . . . . . . . . . . . . . . 2 43
8.3.3
Exemplo com dados artificiais . . . . . . . . . . . . . . . . . . . . . . . . 2 46
Modelos Autoregressivos com Defasagens Distribu´ıdas . . . . . . . . . . . . . . 250
8.5 Modelo de Corre¸c˜ao de Erros . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2 53 8.6 Aplica¸c˜ao `a Expectativa de Infla¸c˜ao dos Consumidores . . . . . . . . . . . . . . 2 56 8.7 Resumo dos modelos . . . . . . . . . . . . . . . . . . . . . . .
.... .....
. 263
9 Vetor Auto-Regressivo (VAR) 9.1 Introdu¸c˜ao . . . . . . . . . . . . .
265 .............
............2 .... .... .....
66
9.2 VAR(p) . . . . . . . . . . . . .
.... .... .....
9.3 VAR Estrutural . . . . . . . .
. . . . . . . . . . . . . . . . . . . . . . . . . . . . 2 69
. 267
9.3.1
Impulso Resposta . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2 70
9.3.2
Previs˜ao dos Erros de Decomposi¸ca˜o da Variˆancia . . . . . . . . . . . . 2 72
9.4 Modelo Vetorial de Corre¸ca˜o de Erros (VECM) . . . . . . . . . . . . . . . . . . 2 74 9.4.1 9.5
Teste de Cointegra¸c˜ao de Johansen . . . . . .
. . . . . . . . . . . . . . . 2 77
Modelo Threshold Autoregressive (TAR) . . . . . . . . . . . . . . . . . . . . . . 278
9.6 Estima¸ca˜o do VAR( p) usando R para o Canad´a . . . . . . . . . . . . . . . . . . 2 79 9.7 Causalidade de Granger . . . . . . . . . . . . . . . . . Referˆ encias Bibliogr´ aficas
. . . . . . . . . . . . . . 2 89 290
´ CONTEUDO
8 Apresenta¸ c˜ ao
Como atividade complementar ao livro recomenda-se visitar o aplicativo de s´ eries temporais desenvolvido pelos autores que est´a dispon´ıvel na URL: “https://pedroferreira.shinyapps.io/SeriesTemporais”
[Em constru¸c˜ao]
Parte I
Introdu¸ c˜ ao ao R, Estat´ıstica Descritiva + Gr´ aficos
9
Introdu¸ c˜ ao ao R Daiane Marcolino de Mattos Pedro Costa Ferreira Diego Camillo Vilela de Almeida
˜ AO R CAP´ITULO 1. INTRODU C ¸ AO
12
Introdu¸ c˜ ao: O que ´ e oR e
RStudio?
Nesse primeiro cap´ıtulo vamos introduzir o software R e RStudio. Esses softwares ser˜ ao utilizados durante todo o livro e ir˜ao proporcionar uma formar muito agrad´avel e pr´atica de aprender Estat´ıstica. O R e´ uma linguagem e um ambiente de desenvolvimento integrado, para c´alculos estat´ısticos e gr´ aficos. Foi criado srcin almente por Ross Ihaka e por Robert Gentleman no departamento de Estat´ıstica da universidade de Auckland, Nova Zelˆandia, e foi desenvolvido por um esfor¸co colaborativo de pessoas em v´arios locais do mundo. A linguagem R e´ largamente usada entre estat´ısticos e data miners para desenvolver software de estat´ıstica e an´alise de dados. O R e´ bastante utilizado por profissionais que usam ferramentas estat´ısticas no seu dia-a-dia. O programa permit e realizar opera¸c˜ oes matem´aticas simples e fun¸c˜oes mais complexas como, por exemplo, an´ alises e manipula¸c˜oes de dados, an´alises de s´eries temporais, modelagens lineares e n˜ao lineares, testes estat´ısticos, t´ecnicas de amostragem, elabora¸ c˜ao de gr´aficos, simula¸c˜ oes de redes neurais, entre outras coisas. Funciona nas vers˜oes de sistemas operacionais: Unix, Windows e Macintosh. ´ um software gratuito livre sob uma licen¸ ca referida no Cran e est´ a dispon´ıvel em E http://cran.r-project.org/. Nesse site tamb´ em ´e poss´ıvel encontrar dicas para a utiliza¸ c˜ ao do programa e um f´orum onde vocˆe pode tirar suas d´uvidas fazendo perguntas ou analisando d´uvidas de outros usu´arios j´a respondidas.
O que ´ e o RStudio O RStudio e´ um ambiente de desenvolvimento integrado (IDE, sigla em inglˆes) para R, que funciona com a vers˜ao padr˜ao do R. O RStudio inclui uma ampla gama de recursos, o que permite aumentar a produtividade e ´e executado em todas as principais plataformas. Sua interface facilita o uso do R. A fim de executar RStudio e´ preciso j´a ter instalado o R de vers˜ao 2.11.1 ou superior.
1.2. INICIANDO O R
Como baixar o
R
eo
13 RStudio
Ap´ os acessar o site http://cran.r-project.org/, escolha o sistema operacional de seu computador: Linux, (Mac) OS X ou Windows e clique na op¸c˜ao “base” ou “install
R
for first
time ”. Em seguida, baixe o arquivo em sua vers ˜ao mais atu alizada. Ap´os a instala¸c˜ao do programa, inicie o R em seu computador. Assim que vocˆe visualizar o s´ımbolo “>” em vermelho no console indica que o programa est´ a pronto para o uso e j´ a pode receber suas linhas de comando. A fim de aprimorar a produtividade e facilitar o uso do
R, indicamos que vocˆ e baixe o
RStudio. Para isso, acesse o site http://www.rstudio.com/ e clique na op¸c˜ ao “Download Now ”.
Importante: vocˆe pode assistir os v´ıdeos produzidos pelo N´ ucleo de M´etodos Estat´ısticos e Computacionais (E.g como baixar e instalar R e RStudio acessando o canal da FGV no YouTube).
Iniciando o
R
Primeiros Passos 1.2.1.1 Opera¸c˜ oes Aritm´ eticas O R pode ser utilizado como uma calculadora de grande capacidade para realizar diferentes opera¸c˜oes com n´umeros, vetores ou matrizes. Veja a tabela a seguir com alguns dos principais operadores e fun¸co˜es.
˜ AO R CAP´ITULO 1. INTRODU C ¸ AO
14
Opera¸c˜ao Comando no R Soma + Subtra¸c˜ao Multiplica¸c˜ao * Divis˜ ao / Quociente da divis˜ao %/% Resto da divis˜ao %% Potencia¸c˜ao ∧ Potencia¸c˜ao ** Raiz quadrada Logaritmo Exponencial Fatorial Combina¸c˜ao
> 5+2 > 5-2 > 5*2 > 5/2 > 5^2 > 5**2 > sqrt(5) > exp(5)
sqrt() log(x,base) exp() factorial(x) choose(n,x)
# soma: + # subtra¸ c~ ao: # multiplica¸ c~ ao: * # divis~ ao: / # pot^ encia: ^ # pot^ encia: ** # raiz quadrada # exponencial
> log(5,base = 2) # logaritmo > factorial(5) # fatorial > choose(5,2) # combina¸c~ ao de 5, 2 a 2
Dica: O s´ımbolo “#” ´e usado para fazer coment´ arios no R. N˜ao influencia na execu¸c˜ao dos comandos.
1.2.1.2 Criando objetos Um objeto pode ser criado com a opera¸c˜ao de atribui¸c˜ao: <- ou =. Assim, um resultado pode ser “guardado” para poder ser utilizado novamente. Exemplo:
1.2. INICIANDO O R > x <- 5 > x
15
# objeto x re cebe valor 5
[1] 5
Importante: o R diferencia letras mai´ usculas de min´ usculas. Nomes de objetos precisam iniciar com letras. Vocˆe pode criar um objeto e, ao mesmo tempo, observar o resultado sem ter que digitar o nome do objeto novamente. Para isso coloque parˆenteses no in´ıcio e no final da linha de comando. Exemplo:
> (a <- 5 + 27^2)
# cria o objeto a e o mostra em seguida
[1] 734 •
Listando objetos A fun¸ca˜o ls() mostra os objetos criados por vocˆe e que est˜ao, por enquanto, armazenados na mem´oria do R. > ls()
# lista os objetos criados
[1] "a" "x" •
Removendo objetos Caso vocˆ e queira excluir objetos, use a fun¸c˜ao remove() ou rm(). Exemplo: > a <- 1; b <- 6; c <- 9 # cria os objetos a,b,c > ls() # lista os obj etos exi stentes [1] "a" "b" "c" > rm(b) # remove o objeto b > ls() # lista os obj etos exi stentes
˜ AO R CAP´ITULO 1. INTRODU C ¸ AO
16 [1] "a" "c"
Dica: use ; (ponto e v´ırgula) para digitar v´arios comandos em uma s´o linha.
1.2.1.3 Criando vetores Vetores s˜ao objetos que armazenam mais de um valor. O R usa a fun¸ca˜o c() para criar vetores.
> vetor1 <- c(1,2,5,6,7,25,0,-3) # vetor com n´umeros > vetor2 <- c("verde","amarelo") # vetor com textos > vetor1; vetor2
[1] 1 2 5 6 7 25 0 -3
[1] "verde"
•
"amarelo"
Gerando sequˆ encias e n´umeros aleat´orios Com o R e´ poss´ ıvel gerar sequˆencias e n´ umeros aleat´orios. Abaixo seguem exemplos de como gerar diversas sequˆ encias. > # sequ^encia de 1 a 30 > (a <- 1:3 0) [1] 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 [26] 26 27 28 29 30 > # sequ^encia de 1 a 35 de 2 em 2 > (b <- seq(from = 1, to = 35, by = 2)) [1] 1 3 5 7 9 1 1 1 3 1 5 1 7 1 9 2 1 2 3 2 5 2 7 2 9 3 1 3 3 3 5 > # sequ^encia de tamanho 9 > (c <- seq(length = 9, from = 1, to = 5))
1.2. INICIANDO O R
17
[1] 1.0 1.5 2.0 2.5 3.0 3.5 4.0 4.5 5.0 > rep(1,15)
# repete o n
º
1 15 vezes
[1] 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 > sequence(3)
# gera a sequ^encia 123
[1] 1 2 3 > sequence(c(3,5)) # executa duas sequ^encias ao mesmo tempo, neste caso, 123 e 12345 [1] 1 2 3 1 2 3 4 5 > sequence(1:5) # executa cinco sequ^encias ao mesmo tempo, neste caso, 1, 12, 123, 1234 e 12345 [1] 1 1 2 1 2 3 1 2 3 4 1 2 3 4 5
1.2.1.4 Criando matrizes Para criar matrizes utilize a fun¸c˜ao matrix(). Veja os exe mplos a seguir: o primeiro refere-se a uma matriz quadrada de ordem trˆes composta apenas por zeros. Em seguida, vemos a matriz sendo pre enchida de duas manei ras: por linha e por colun a. E por ´ultimo ´e criada uma matriz 2x3 que ´e preenchida automaticamente por linhas utilizando o argumento l´ogico byrow.
Exemplo: uma matriz quadrada de ordem trˆes composta s´o por zeros. > # criando uma matriz de zeros 3x3 > A <- ma trix(0, nrow = 3, nco l = 3) > A
[1,] [2,] [3,]
[,1] [,2] [,3] 0 0 0 0 0 0 0 0 0
˜ AO R CAP´ITULO 1. INTRODU C ¸ AO
18 Exemplo: preenchendo a matriz A por linhas.
> > > > >
# preenchendo a matriz por linh a A[1,] <- c(1,2,3) A[2,] <- c(7,8,9) A[3,] <- c(-10,-4,-6) A
[,1] [,2] [,3] [1,] 1 2 3 [2,] 7 8 9 [3,] -10 -4 -6
Exemplo: preenchendo a matriz A por colunas.
> > > > >
# preenchendo a matriz por coluna A[,1] <- c(1,2,3) A[,2] <- c(7,8,9) A[,3] <- c(-10,-4,-6) A
[1,] [2,] [3,]
[,1] [,2] [,3] 1 7 -10 2 8 -4 3 9 -6
Exemplo: criando uma matriz B 2x3 preenchida.
> # criando uma matriz preenchida > B <- matrix(c(1,2,3,8,9,10), nrow = 2, ncol=3, byrow = T) > B
[1,] [2,]
[,1] [,2] [,3] 1 2 3 8 9 10
Caso o argumento l´ogico byrow = F , a matriz seria composta por coluna e ficaria da seguinte forma:
1.2. INICIANDO O R
19
> # criando uma matriz preenchida > (B <- matrix(c(1,2,3,8,9,10), nrow = 2, ncol=3, byrow = F))
[1,] [2,]
[,1] [,2] [,3] 1 3 9 2 8 10
1.2.1.5 Criando data frame Data frames s˜ao objetos usados para guardar tabelas de dados. mais utilizada, principalmente por ser esse o formato que o
´ a classe de objeto E
R lˆ e para as tabelas importadas
de outros softwares. Para criar um data frame no R, utilize a fun¸c˜ao data.frame().
Exemplo: Vamos criar um data frame com duas colunas (Nome e Idade) e com trˆ es elementos em cada uma delas. > # criando um data frame > tabela <- data.frame(Nome = c("Andr´e","Jo~ ao","Tiago"), + Idade = c(20,58,22)) > tabela Nome Idade 1 Andr´ e 20 2 Jo~ao 58 3 Tiago 22
Caso vocˆe queira criar uma nova coluna, basta apenas digitar o nome do objeto seguido de $ e o nome da sua nova coluna. Exemplo: Vamos criar uma coluna chamada Sal´ario. > # adicionando uma nova coluna ao data frame > tabela$Sal´ ario <- c(1200,5700,800) > tabela
Nome Idade Sal´ ario 1 Andr´ e 20 1200 2 Jo~ao 58 5700 3 Tiago 22 800
˜ AO R CAP´ITULO 1. INTRODU C ¸ AO
20
Veja, abaixo, outra op¸ c˜ao de como adicionar mais valores ao
data frame usando as
fun¸c˜oes cbind e rbind que agregam por coluna e linha, respectivamente.
> tabela <- data.frame(Nome = c("Andr´e","Jo~ ao","Tiago"), Idade = c(20,58,22)) > tabela
Nome Idade 1 Andr´ e 2 Jo~ao 3 Tiago
20 58 22
> tabela <- cbind(tabela, data.frame(Salario=c(1200,5700,800))) > tabela
Nome Idade Salario 1 Andr´ e 20 1200 2 Jo~ao 58 5700 3 Tiago 22 800
> tabela <- rbind(tabela, data.frame(Nome="Joana", Idade=30, Salario=3100)) > tabela
1 2 3 4
Nome Idade Salario Andr´ e 20 1200 Jo~ao 58 5700 Tiago 22 800 Joana 30 3100
Como usar a fun¸c˜ ao reshape() Os dados costumam vir em dois tipos de formatos amplo ou longo. No formato amplo, h´a uma linha para cada observa¸ c˜ ao e em cada coluna uma vari´ avel. J´a no formato longo, tem mais de uma linha para cada observa¸c˜ ao e uma coluna para v´arias vari´aveis. A fun¸ca˜o reshape() muda o formato dos dados, por exemplo, se vocˆe tem os dados no formato longo
(long ) e quer eles no formato amplo ( wide ), ou vice-versa. Os principais argumentos da fun¸c˜ao reshape() s˜ao:
1.2. INICIANDO O R
21
•
data - um data frame ;
•
direction - formato da base de dados que podem ser “wide” (amplo) ou “long” (longo);
•
idvar - nomes da vari´avel ou das vari´aveis que identificam o individuo;
•
timevar - vari´avel ou vari´aveis que diferencia v´arios registro do mesmo individuo;
•
v.names - nome da vari´avel no formato longo que corresponde as v´arias vari´aveis do formato amplo;
•
varying - nomes dos conjuntos de vari´aveis no formato amplo que corresponde a timevar do formato longo;
•
time - valores do r´ecem criado timevar.
Exemplo: Vamos utili zar os dados de Indometh que ´e um a data frame que tem 66 linhas e 3 colunas de dados sobre a farmacocin´etica de indometacina que j´a est˜ao no R. As seis primeiras linhas de Indometh s˜ao:
1 2
Subject time conc 1 0.25 1.50 1 0.50 0.94
3 4 5 6
1 1 1 1
0.75 1.00 1.25 2.00
0.78 0.48 0.37 0.19
Como nossos dados j´a se encontram no formato longo, vamos supor que ele estaria melhor no formato amplo. Ent˜ao ter´ıamos que escolher Subject como a vari´avel de identifica¸co˜es (“idvar”) , uma ou mais vari´aveis de medi¸c˜ao que diferencia v´arios registros do mesmo idvar(“timevar”), uma vari´ avel que deseja mudar do formato longo para o amplo (“ v.names”)
e o formato que queremos os dados(“ direction”) que nesse caso e wide (amplo).
> wide <- reshape(Indometh, + + + > wide
timevar = "time", idvar = "Subject", direction = "wide")
˜ AO R CAP´ITULO 1. INTRODU C ¸ AO
22
1 12 23 34 45 56
Subject conc.0.25 conc.0.5 conc.0.75 conc.1 conc.1.25 conc.2 conc.3 conc.4 1 1.50 0.94 0.78 0.48 0.37 0 .19 0.12 0.11 2 2.03 1.63 0.71 0 .70 0.64 0 .36 0 .32 0 .20 3 2.72 1.49 1.16 0 .80 0.80 0 .39 0 .22 0 .12 4 1.85 1.39 1.02 0 .89 0.59 0 .40 0 .16 0 .11 5 2.05 1.04 0.81 0 .39 0.30 0 .23 0 .13 0 .11 6 2.31 1.44 1.03 0 .84 0.64 0 .42 0 .24 0 .17 conc.5 conc.6 conc.8
1 12 23 34 45 56
0.08 0.25 0.11 0.10 0.08 0.13
0.07 0.12 0.08 0.07 0.10 0.10
0.05 0.08 0.08 0.07 0.06 0.09
Agora temos apenas uma linha para cada indiv´ıduo e uma coluna dos Subject e mais uma coluna para cada tempo. Mas se fosse ao contr´ario, se j´a tivessemos os dados no formato amplo e quissesemos no formato longo. Seria basicamente a mesma coisa s´ o mudaria o formato. Para exemplo utilizamos os dados anteriores que ficaram no formato amplo e voltaremos para o formato longo. > long <- reshape(wide, + varying = names(wide[2:12]), + idvar = "Subject", + timevar = "time", + time = c("0.25", "0.5", "0.75","1", "1.25", "2", "3", "4", "5", "6", "8"), + v.names = "conc", + new.row.names = 1:66, + direction = "long") > head(long)
1 2 3 4 5 6
Subject time conc 1 0.25 1.50 2 0.25 2.03 3 4 5 6
0.25 0.25 0.25 0.25
2.72 1.85 2.05 2.31
1.2. INICIANDO O R
23
1.2.1.6 Estruturas de condi¸c˜ ao As estruturas de condi¸c˜ao tem por objetivo executar uma a¸c˜ao se determinada condi¸ca˜o for satisfeita. A seguir s˜ao listadas trˆes estruturas de repeti¸co˜es bastante ´uteis. 1. if : Executa diversos comandos se a condi¸c˜ao inicial for verdadeira.
Sintaxe: if(condi¸c˜ao){ comando 1 comando 2 ... comando n
} 2. if ... else : Executa diversos comandos se a condi¸c˜ao inicial for verdadeira, caso contr´ario executa outros comandos.
Sintaxe:if(condi¸ca˜o){ comando 1 comando 2 ... comando n
}else{ comando 1 comando 2 ... comando n
} 3. ifelse: Bem parecida com a anterior, por´em executa apenas uma linha de comando se a condi¸ca˜o inicial for verdadeira, caso contr´ario executa outro comando.
˜ AO R CAP´ITULO 1. INTRODU C ¸ AO
24
Sintaxe:ifelse(condi¸c˜ao, se verdadeira, se falsa)
Exemplo: Suponha dois n´umeros a e b e informe o maior dentre os dois.
> # Dois objetos > a <- 2 > b <- 5 > # Estrutura de > if(a > b){ + cat("O maior + }else{ + cat("O maior + }
O maior ´e:
num´ericos
condi¸c~ ao ´e: ",a) ´e: ",b)
5
Importante: A fun¸c˜ao cat() ´e u ´ til para informar frases e objetos.
1.2.1.7 Estruturas de repeti¸c˜ ao As estruturas de repeti¸c˜ao s˜ao u ´teis para repetir uma s´erie de opera¸co˜es. Podem ser opera¸c˜oes com vetores, matrizes e tabelas, por exemplo. Tamb´ em s˜ao u ´ teis para repetir um mesmo processamento at´e que uma condi¸ c˜ao seja conclu´ ıda. Como exemplo para executar essas estruturas de repeti¸ c˜ ao, vamos criar um data frame que possui informa¸c˜ oes sobre o sal´ario de 10 pessoas.
> # data frame de sal´arios de 10 indiv´ıduos de uma empresa > dados <- data.frame( individuo = c("A", "B", "C", "D", "E", "F", "G", "H", + "I", "J"), + salario = c( 1250, 800, 8500, 900, 2010, 2200, 3600, 7580, 5100 , 9400)) > dados
1.2. INICIANDO O R
1 2 3 4 5 6 7 8 9 10
individuo A B C D E F G H I J
•
25
salario 1250 800 8500 900 2010 2200 3600 7580 5100 9400
Estrutura de repeti¸c˜ao: for(). A fun¸c˜ao for() percorre todos os elementos de um objeto (por exemplo: vetor, matriz ou data frame ) e executa os comandos escolhidos.
Sintaxe: for(i in a:b) { comando 1 comando 2 ... comando n } Para ficar claro o uso da fun¸ c˜ao for(), suponha que se deseja saber quantas pessoas da empresa recebe m menos de R$ 3000,0 0. Vamos cria r um objeto que conte o n´umero de pessoas que satisfazem essa condi¸c˜ ao. Primeiro ´e necess´ ario inicializar o objeto.
> > > > + +
# criando um contador contador <- 0 # estrutura FOR for (i in 1:10){ if(dados[i,2] < 3000){contador <- contador + 1} }
> contador [1] 5
#N´umero de funcion´ ario que recebem menos de R$ 3000,00
˜ AO R CAP´ITULO 1. INTRODU C ¸ AO
26
Inicialmente, o contador come¸ca recebendo o valor zero. Se a condi¸c˜ao de sal´ario for satisfeita (menor do que 3000), o contador recebe +1. E isso ser´ a feito para todas as i linhas do data frame . Por fim, se r´a retornado o valor final do contador. Veja a seguir mais um exemplo.
Exemplo: Suponha tamb´ em que seja necess´ ario criar a soma acumulada dos sal´arios dos indiv´ıduos da empresa e armazen´ a-la numa nova coluna do data frame . Ent˜ao, ser´a criada uma nova coluna no data frame e a primeira linha da nova coluna ser´a o pr´oprio sal´ario do indiv´ ıduo A; a segunda linha ser´ a a soma do sal´ario do indiv´ıduo A e do indiv´ıduo B; a terceira linha ser´a a soma dos sal´arios dos indiv´ıduos A, B e C. Assim, seguindo o racioc´ınio, a ultima ´ linha ´e a soma de todos os sal´arios. Veja como fazer isso a seguir.
> # nova coluna para preencher com a soma acumulada > dados$salario_acum <- 0 > dados
1 2 3 4 5 6 7 8 9 10
individuo salario salario_acum A 1250 0 B 800 0 C 8500 0 D 900 0 E 2010 0 F 2200 0 G 3600 0 H 7580 0 I 5100 0 J 9400 0
> # o sal´ ario acumulado 1 ´e o primeiro sal´ario > dados[1,3] <- dados[1,2] > dados
1 2 3
individuo salario salario_acum A 1250 1250 B 800 0 C 8500 0
1.2. INICIANDO O R 4 5 6 7 8 9 10
> > + + >
D E F G H I J
900 2010 2200 3600 7580 5100 9400
27 0 0 0 0 0 0 0
# estrutura de repeti¸cao ~ para as somas acumuladas for (i in 2:10){ dados[i,3] <- dados[i-1,3] + dados[i,2] } dados
1 2 3 4 5 6 7 8 9
individuo salario salario_acum A 1250 1250 B 800 2050 C 8500 10550 D 900 11450 E 2010 13460 F 2200 15660 G 3600 19260 H 7580 26840 I 5100 31940
10
J
9400
41340
1.2.1.8 Como criar fun¸c˜ oes O R permite que vocˆ e crie fun¸c˜oes que atendam as diferentes demandas. Para criar uma fun¸c˜ao utiliza-se a fun¸c˜ao function().
Sintaxe: nomefuncao <- function(argumento1, ..., argumento n){ comando1 comando2 ... comandoN
}
˜ AO R CAP´ITULO 1. INTRODU C ¸ AO
28
Exemplo: Suponha que se queir a calcular a ´area de um triˆangulo dado sua base e altura, como na figura 1.1. E sabe-se que a ´area ´e dada por: (base×altura)/2.
´ Figura 1.1: Area do triˆangulo
Vamos criar uma fun¸c˜ao que calcule a ´area de um triˆangulo. Nesse caso, preci sa-se de dois argumentos para calcular a ´area: a base e a altura.
> # Criando uma fun¸c~ ao que calcula a ´area de um tri^angulo > area <- function(b,h){ + A <- (b * h)/2 + + > >
return(A) } ´rea de um tri^angulo de base 5 e altura 3 # A area(5,3)
[1] 7.5
> area(h = 3, b = 5)
[1] 7.5
1.2.1.9 Outras fun¸c˜ oes interessantes Segue uma lista de algumas fun¸c˜oes que podem ser ´uteis para vocˆ e.
1.2. INICIANDO O R
29
A¸ c˜ ao Comando sair do programa q() arredonda o n´umero para o inteiro mais pr´oximo round(x) arredonda o n´umero para n casas decimais round(x,n) arredonda o n´umero para cima ceiling(x) trunca o n´umero trunc(x) arredonda o n´umero para n casas decimais signif(x,n) produt´orio prod(x)
Como criar um diret´orio de trabalho O local padr˜ao onde s˜ao salvos os arquivos ou os comandos digitados no console do
R
(caso vocˆ e queira salv´ a-los) ´e na pasta Documentos. Vocˆe pode vˆ e-lo digitando o comando abaixo.
> getwd() #visualizar diret´ orio de trabalho
Para alterar o local padr˜ao, que chamamos de diret´orio, para um de sua preferˆ encia use a fun¸c˜ao setwd(). Exemplo:
> setwd("F:/meu_dir") #altera o diret´ orio para "meu_dir"
Esse comando altera o diret´orio para a pasta meu dir que se encontra na unidade F. Sugerimos que mude seu diret´orio para o local onde est˜ ao os arquivos que iremos utilizar durante todo o livro. Vocˆ e tamb´ em pode alterar o diret´ orio utilizando as teclas de atalho Ctrl+Shift+H.
Obs: Quando for colocar o caminho do diret´ orio, deve-se usar ou uma barra simples “/” ou duas contra-barras “\\”.
Salvando o hist´orico Os comandos digitados anteriormente no console podem ser salvos em um novo arquivo de texto caso vocˆ e queira us´ a-los posteriormente.
˜ AO R CAP´ITULO 1. INTRODU C ¸ AO
30
Use as fun¸c˜oes savehistory() e loadhistory() para salvar e carregar o hist´ orico, respectivamente. Esse arquivo ´e salvo automaticamente no diret´ orio de trabalho do R.
> > > >
#salvar savehistory(file = "nomedoarquivo.txt") #carregar loadhistory(file = "nomedoarquivo.txt")
Caso vocˆ e queira salvar o hist´orico em outro local, especifique o caminho do arquivo, por exemplo:
> #salvar hist´ orico em outro local > savehistory(file = "V:/novo_dir/nomedoarquivo.txt")
Como criar um script ´ bastante pr´atico e facilita a O script no RStudio funciona como um editor de texto. E altera¸c˜ao de sua programa¸c˜ ao. Veja a figura 1.2 e descubra como criar um script.
Figura 1.2: Como criar um script
1.2. INICIANDO O R
31
Veja um exemplo de script na figura 1.3.
Figura 1.3: Exemplo de script Para enviar as linhas de comando digitadas no script para o console, selecione as linhas desejadas e clique em Run ou apenas use o atalho Ctrl+Enter.
Como instalar e carregar pacotes ( packages) Todas as fun¸c˜oes do R pertencem a algum pacote. As fun¸c˜oes que apresentamos at´e agora pertencem aos pacotes que foram instalados e carregados quando instalamos o
R no
computador. Para utilizar outras fun¸co˜es e tornar sua experiˆencia mais rica no R e´ necess´ario instalar e carregar pacotes. H´a duas formas principai s de instalar pacotes. A primeira ´e utilizando a fun¸c˜ ao install.packages():
Sintaxe: install.packages(“nome do pacote”) A segunda ´e utilizando a op¸c˜ao Install Packages que est´a na aba Packages no canto direito inferior na tela do RStudio. Ap´os clicar nesta op¸c˜ao, digite o nome do pacote.
˜ AO R CAP´ITULO 1. INTRODU C ¸ AO
32
Figura 1.4: Como istalar pacotes Depois de instalar o pacote, ´e necess´ ario carreg´a-lo para que vocˆ e consiga utilizar as fun¸c˜oes que este disponibi liza. Para carreg´a-lo, vocˆ e pode selecionar o pacote instalado anteriormente na aba Packages do RStudio (atrav´ es do “checklist ”) ou, tamb´ em pode usar as fun¸c˜oes require() e library().
Sintaxe: require(nome do pacote) library(nome do pacote) Exemplo: Vamos instalar um pacote que permite que arquivos de extens˜ ao .xlsx sejam importados para o R. O nome do pacote ´e xlsx(Dragulescu et al. (2012)).
> # O pacote xlsx permite a importa¸c~ ao de arquivos .xlsx > install.packages("xlsx") # instalar pacote > require(xlsx) # carregar pacote
Ap´ os a instala¸c˜ao e o carregamento do pacote, as fun¸c˜oes disponibilizadas por ele podem ser usadas.
Dica: digite library() e search() para ver, respectivamente, os pacotes que j´a est˜ao instalados e os pacotes carregados no momento.
1.2. INICIANDO O R
33
Leitura de dados Ler dados nos formatos de texto, tais como .txt e .csv dentre outros, ´e uma fun¸ca˜o indispens´avel para qualquer software de estat´ıstica. A fun¸c˜ ao read.table() lˆ e arquivos no formato tabela de texto em um data.frame. Cada coluna tem uma classe pr´opria automaticamente determinada pela fun¸ca˜o read.table(). Os principais argumentos s˜ao: •
file – nome do arquivo / caminho e nome do arquivo;
•
header – determina se o arquivo tem cabe¸ calho ou n˜ao, default TRUE; no caso de FALSE a fun¸c˜ao cria nomes para as colunas
•
sep – separador da coluna ( default tab);
•
dec – separador decimal ( default ponto); Embora a fun¸c˜ao read.table() seja provavelmente a fun¸c˜ ao mais utilizada para ler
dados, existem outras vers˜oes dessa com pequenas varia¸c˜oes nos defaults que podem ser ´uteis. Veja: read.csv(), read.csv2(), read.delim() e read.delim2(). Exemplo: Vamos ler um arquivo de extens˜ao .txt, chamado meu arquivo que se encontra no diret´orio de trabalho.
> dados <- read.table("meu_arquivo.txt", header = T,sep = "\t", dec = ".")
Para visualizar o arquivo anterior no R, digite dados. A seguir algumas fun¸c˜ oes interessantes que a judam a visualizar como ´e composto seu arquivo de dados. •
head(dados) – mostra as 6 primeiras linhas de um data frame ou as 6 primeiras posi¸co˜es de um vetor.
•
tail(dados) - mostra as 6 ´ultimas linhas de um data frame ou as 6 ´ultimas posi¸c˜oes de um vetor.
•
View(dados) – Mostra os dados no formato de uma tabela.
•
edit(dados) – Al´em de visualizar, ´e poss´ıvel editar de uma maneira mais simples seu arquivo de dados.
˜ AO R CAP´ITULO 1. INTRODU C ¸ AO
34 Importando arquivos de extens˜ao .xlsx
Para importar planilhas do Excel no formato .xlsx e´ necess´ario instalar um novo pacote uma vez que read.table() e sua fam´ ılia n˜ao est˜ao aptos para realizar tal fun¸c˜ao. O pacote xlsx(Dragulescu et al. (2012)) permite importar e exportar arquivos de exten´ importante saber que esse s˜ao .xlsx. Para essa finali dade utilize a fun¸c˜ao read.xlsx(). E pacote n˜ao importa arquivos de formato .xls tampouco exporta. Os principais argumentos da fun¸c˜ao read.xlsx() s˜ ao: •
file – nome do arquivo / caminho e nome do arquivo;
•
header – determina se o arquivo tem cabe¸ calho ou n˜ao, default TRUE; no caso de FALSE a fun¸c˜ao cria nomes para as colunas;
•
sheetIndex – ´ındice da aba que deve ser lida;
•
sheetName – nome da aba que dever ser lida ( default NULL);
•
rowIndex – ´ındices das linhas que devem ser lidas (default NULL);
•
colIndex – ´ındices das colunas que devem ser lidas (default NULL). Exemplo: Importando a primeira planilha de um arquivo de extens˜ ao .xlsx.
> tabela1 <- read.xlsx("arquivo.xlsx", sheetName="Plan1")
Salvar dados Escrever dados nos formatos de texto .txt, .csv, entre outros, ´e outra fun¸ c˜ao indispens´avel para um software de estat´ıstica. A fun¸c˜ao write.table() salva arquivos de formatos formatos .txt e .csv no diret´ orio padr˜ao ou especificado. Os principais argumentos dessa fun¸c˜ao s˜ao: •
x – matriz ou data frame que ser´a salva;
•
file – nome do arquivo / caminho e nome do arquivo;
•
append – se TRUE, a sa´ıda ser´a anexada a um arquivo j´ a existente. Se FALSE, se houver algum arquivo com o mesmo nome, este ser´ a substitu´ıdo pelo novo. •
quote – ´e um valor num´ erico ou l´ ogico;
˜ 1.3. DESCOBRINDO INFORMA¸COES SOBRE O OBJETO •
35
sep – separador da coluna ( default espa¸co);
•
dec – separador decimal ( default ponto);
•
row.names – nome das linhas;
•
col.names – nome das colunas. Embora a fun¸c˜ao write.table() seja provavelmente a fun¸ c˜ao mais utilizada para salvar
dados, existem outras vers˜oes dessa com pequenas varia¸c˜oes nos defaults que podem ser ´uteis.. Veja: write.csv() e write.csv2(). Exemplo: Vamos criar um objeto data frame e salv´a-lo como um arquivo de formato .txt.
> > + + >
# criando um data frame de idades idades <- data.frame(Nome = c("Tabi", "Gabi", "Andressa", "Vanessa", "Nat´ alia", "Natasha"), Idades = c(36, 25, 33, 48, 21, 24)) idades
Nome Idades 1 Tabi 36 2 Gabi 25 3 Andressa 33 4 Vanessa 48 5 Nat´alia 21 6 Natasha 24
> # salvando o objeto idades em formato .txt > write.table(idades, "idades.txt", quote = F, sep = "\t", row.names = F, + col.names = T)
Descobrindo Informa¸c˜ oes sobre o Objeto Neste livro utilizaremos como base de dados a Pesquisa de Or¸ camentos Familiares do IBGE, a POF( IBGE (2015a)). O prop´osito da POF ´e tra¸car um perfil dos h´abitos das fam´ılias brasileiras. Para isso, s˜ao coletados dados gerais sobre os domic´ılios e sobre as fam´ılias e pessoas contidas nele. S˜ ao
˜ AO R CAP´ITULO 1. INTRODU C ¸ AO
36
informa¸c˜oes referentes a gastos, consumos e rendimentos. Por exemplo, condi¸c˜oes do entorno e acesso `a coleta de lixo em rela¸ c˜ao aos domic´ılios; idade, religi˜ao e posi¸ca˜o de ocupa¸ca˜o em rela¸ca˜o `as pessoas e, despesas com sa´ude e viagens em rela¸c˜ao `a fam´ılia. A pesquisa abrange as zonas urbanas e rurais de todo o territ´orio brasileiro e tem dura¸ca˜o de 12 meses, assim recolhe informa¸c˜oes durante todas as ´epocas do ano para um estudo mais eficaz. E atrav´ es dela ´e poss´ıvel conhecer os bens consumidos e servi¸cos utilizados pelas fam´ılias. O que pode ser ´util para cria¸c˜ao de pol´ıticas p´ ublicas que auxiliam no combate `a pobreza e na melhoria da sa´ude. Nosso arquivo n˜ao cont´em todos os dados da pesquisa. Somente est˜ao inclu´ ıdas nele 6 unidades de federa¸c˜ao (UF) que s˜ao representadas, apenas, por suas respectivas capitais. S˜ao elas: C´ odigo da UF UF Capital 29 BA Salvador 31 MG Belo Horizonte 33 RJ Rio de Janeiro 35 SP Sao Paulo 43 RS Porto Alegre 53 DF Bras´ılia
˜ 1.3. DESCOBRINDO INFORMA¸COES SOBRE O OBJETO Vamos ler a tabela da POF no
37
R, que est´a em formato .csv, e guard´ a-la num objeto
chamado dados.
> # Ler a base de dados da POF > dados <- read.csv2("POF_capitais.csv")
Algumas fun¸c˜oes s˜ao utilizadas para descobrir mais informa¸c˜oes acerca do objeto de dados. Exemplo: tipo (texto, num´erico, l´ogico...), tamanho (n´umero de linhas ou colunas), entre outras coisas. Apresentaremos algumas fun¸c˜ oes a seguir. Fun¸ c˜ ao str() A fun¸c˜ao str() mostra um resumo estrutural de um objeto: classe, n´ umero de linhas e colunas, nome das colunas e o tipo (inteiro, num´erico, etc). Exemplo: Vamos ver um resumo estrutural para a base de dados da POF.
> # resumo estrutural para a base de dados da POF > str(dados)
'
'
data.frame : 3504 obs. of 31 variables: $ TIPO.DE.REGISTRO : int 1 1 1 1 1 1 1 1 1 1 ... $ C´ ODIGO.DA.UF : int 33 33 33 33 33 33 33 33 33 33 ... $ N´ UMERO.SEQUENCIAL : int 1 1 1 1 1 1 1 1 1 1 ... $ DV.DO.SEQUENCIAL : int 9 9 9 9 9 9 9 9 9 9 ... $ N´ UMERO.DO.DOMIC´ ILIO : int 1 10 11 12 13 3 5 6 7 8 ... $ ESTRATO.GEOGR´ AFICO : int 1 1 1 1 1 1 1 1 1 1 ... $ FATOR.DE.EXPANS~ AO.2..AJUSTADO.P..ESTIMATIVAS.: num 1887 1887 1887 1887 1887 ... $ PER ´ IODO.REAL.DA.COLETA : int 1 10 11 12 14 4 5 6 7 9 ... $ QUANTIDADE.DE.MORADORES : int 4 5 3 4 3 2 1 3 3 4 ... $ QUANTIDADE.DE.UC : int 1 1 1 1 1 1 1 1 1 1 ... $ QUANTIDADE.DE.FAM´ ILIAS : int 1 1 1 1 1 1 1 1 1 1 ... $ TIPO.DE.DOMICILIO : int 2 1 2 2 2 2 1 2 2 2 ... $ MATERIAL.QUE.PREDOMINA.NAS.PAREDES.EXTERNAS : int 1 1 1 1 1 1 1 1 1 1 ... $ MATERIAL.QUE.PREDOMINA.NA.COBERTURA : int 2 2 2 2 2 2 1 2 2 2 ... $ MATERIAL.QUE.PREDOMINA.NO.PISO : int 2 2 2 6 4 2 4 2 2 3 ... $ $ $ $
QUANTIDADE.DE.C^ OMODOS C^ OMODOS.SERVINDO.DE.DORMIT ´ ORIO EXIST ^ ENCIA.DE.´ AGUA.CANALIZADA PROVENI^ ENCIA.DA.´ AGUA
: int 8 7 8 6 8 8 5 8 8 8 ... : int 3 2 3 3 3 2 1 3 2 3 ... : int 1 1 1 1 1 1 1 1 1 1 ... : int 1 1 1 1 1 1 1 1 1 1 ...
˜ AO R CAP´ITULO 1. INTRODU C ¸ AO
38 $ QUANTIDADE.DE.BANHEIROS $ ESCOADOURO.SANIT´ ARIO $ CONDI¸ C~ AO.DE.OCUPA¸ C~ AO $ TEMPO.DE.ALUGUEL $ TIPO.DE.CONTRATO.DE.ALUGUEL $ EXIST ^ ENCIA.DE.PAVIMENTA¸ C~ AO.NA.RUA $ IMPUTA¸ C~ AO...QUANTIDADE.DE.C ^ OMODOS $ IMPUTA¸ C~ AO...QUANTIDADE.DE.BANHEIROS $ IMPUTA¸ C~ AO...ESCOADOURO.SANIT ´ ARIO $ RENDA.MONET´ ARIA.MENSAL.DO.DOMIC´ ILIO $ RENDA.N~ AO.MONET´ ARIA.MENSAL.DO.DOMIC ´ ILIO $ RENDA.TOTAL.MENSAL.DO.DOMIC´ ILIO
: int 2 2 2 1 2 2 1 2 2 2 ... : int 1 1 1 1 1 1 1 1 1 1 ... : int 1 6 1 1 6 1 1 2 1 1 ... : int 0 2 0 0 2 0 0 0 0 0 ... : int 0 3 0 0 2 0 0 0 0 0 ... : int 1 1 1 1 1 1 1 1 1 1 ... : int 0 0 0 0 0 0 0 0 0 0 ... : int 0 0 0 0 0 0 0 0 0 0 ... : int 0 0 0 0 0 0 0 0 0 0 ... : num 2496 2112 8400 4046 1142 ... : num 848 0 587 416 0 ... : num 3344 2112 8987 4462 1142 ...
A imagem anterior mostra que o objeto dados ´e um data.frame com 3504 linhas (ob´ poss´ıvel ver o nome e o tipo de dado que cada coluna serva¸ c˜oes) e 31 colunas (vari´aveis). E recebe. Para mostrar na tela apenas uma colun a do objeto dados, vocˆe pode utilizar os comandos abaixo.
> > > >
# As duas formas abaixo mostram a segunda coluna do # objeto dados ´DIGO.DA.UF dados$CO dados[ ,2]
Fun¸ c˜ oes dim() e names() Outras fun¸c˜oes ´uteis s˜ao as fun¸c˜ oes dim() e names(). A fun¸c˜ ao dim() mostra a dimens˜ao do objeto. O objeto de dados ´e um data frame , ent˜ ao esta fun¸c˜ao retornar´a o n´umero de linhas e colunas. ´ bem ´util para localizar A fun¸ca˜o names() mostra o nome de cada coluna do objeto. E o n´umero de alguma coluna desejada. Exemplo:
> #dimens~ ao: n´ umero de linhas e colunas > dim(dados) [1] 3504
31
´ 1.4. MANEIRAS FACEIS DE APRENDER O R
39
O arquivo dados possui 3504 linhas e 31 colunas. > #nome de cada coluna > names(dados) [1] "TIPO.DE.REGISTRO" [2] "C ´ ODIGO.DA.UF" [3] "N ´ UMERO.SEQUENCIAL" [4] [5] [6] [7] [8] [9] [10] [11] [12] [13] [14] [15] [16] [17] [18] [19] [20] [21] [22] [23] [24] [25] [26] [27] [28] [29] [30] [31]
"DV.DO.SEQUENCIAL" ´ "N UMERO.DO.DOMIC´ ILIO" "ESTRATO.GEOGR´ AFICO" "FATOR.DE.EXPANS~ AO.2..AJUSTADO.P..ESTIMATIVAS." "PER´ IODO.REAL.DA.COLETA" "QUANTIDADE.DE.MORADORES" "QUANTIDADE.DE.UC" "QUANTIDADE.DE.FAM´ ILIAS" "TIPO.DE.DOMICILIO" "MATERIAL.QUE.PREDOMINA.NAS.PAREDES.EXTERNAS" "MATERIAL.QUE.PREDOMINA.NA.COBERTURA" "MATERIAL.QUE.PREDOMINA.NO.PISO" "QUANTIDADE.DE.C^ OMODOS" "C ^ OMODOS.SERVINDO.DE.DORMIT ´ ORIO" "EXIST ^ ENCIA.DE.´ AGUA.CANALIZADA" "PROVENI^ ENCIA.DA.´ AGUA" "QUANTIDADE.DE.BANHEIROS" "ESCOADOURO.SANIT´ ARIO" "CONDI¸ C~ AO.DE.OCUPA¸ C~ AO" "TEMPO.DE.ALUGUEL" "TIPO.DE.CONTRATO.DE.ALUGUEL" "EXIST ^ ENCIA.DE.PAVIMENTA¸ C~ AO.NA.RUA" "IMPUTA¸ C~ AO...QUANTIDADE.DE.C^ OMODOS" "IMPUTA¸ C~ AO...QUANTIDADE.DE.BANHEIROS" "IMPUTA¸ C~ AO...ESCOADOURO.SANIT´ ARIO" "RENDA.MONET´ ARIA.MENSAL.DO.DOMIC ´ ILIO" "RENDA.N~ AO.MONET´ ARIA.MENSAL.DO.DOMIC´ ILIO" "RENDA.TOTAL.MENSAL.DO.DOMIC´ ILIO"
Maneiras f´ aceis de aprender o
R
Como sempre nos deparamos com algo novo no R, logo ´e fundamental saber como aprender a usar novas fun¸c˜oes, para isso iremos apresentar algumas formas de enfrentar o desconhecido.
˜ AO R CAP´ITULO 1. INTRODU C ¸ AO
40
Fun¸ c˜ ao apropos() Quando queremos procurar um objeto e n˜ao lembramos o nome completo dele, podemos usar a fun¸c˜ ao apropos(), ela funciona como um filtro que possibilita encontrar os objetos que tenha o peda¸co do nome que vocˆe lembra. Por exemplo :
> apropos("air")
[1] [4] [7] [10] [13]
"airmiles" "as.pairlist" "HairEyeColor" "pairs" "pairwise.t.test"
"AirPassengers" "cairo_pdf" "is.pairlist" "pairs.default" "pairwise.table"
"airquality" "cairo_ps" "pairlist" "pairwise.prop.test" "pairwise.wilcox.test"
Mostra uma lista de 15 nomes de ob jetos que cont´ em o texto “air” no nome.
Fun¸ c˜ ao help() ou ? Quando queremos saber de mais detalhes do objeto, vocˆ e pode pedir ajuda ao R com o help(nome_do_objeto) ou ?nome do objeto.
Por exemplo :
> help(AirPassengers) > ?AirPassengers
#ou
Uma janela abrir´a no help com a descri¸c˜ao dos dados da s´ erie temporal AirPassengers.
Fun¸ c˜ ao example() Essa fun¸c˜ao ´e muito util ´ para mostrar algumas possibilidade.
> example(plot)
Dar alguns exemplos de gr´aficos usando a fun¸c˜ ao plot().
´ 1.4. MANEIRAS FACEIS DE APRENDER O R
41
Suponha que devemos criar um gr´afico de barras, mas nunca vimos alguma fun¸c˜ao que fa¸ca isso. Primeiro vamos buscar nomes de objetos que tenha “ bar ” (barra em inglˆes) no nome. Para isso utilizamos a fun¸c˜ ao apropos().
> apropos("bar")
[1] [4] [7] [10]
"barplot" "barplot.default" "bartlett.test" "getTxtProgressBar" "getWinProgressBar" "setStatusBar" "setTxtProgressBar" "setWinProgressBar" "txtProgressBar" "winProgressBar"
O R retornou 10 nomes de objetos, dentre ele apareceu o
barplot que ´ e uma candidata
a fun¸c˜ao para criar gr´afico de barra. Agora vamos pedir ajuda para o R sobre barplot() para ter mais detalhes da fun¸c˜ao.
> help(barplot) > ?barplot
# ou
E ainda podemos pedir alguns exemplos de barplot() com a fun¸c˜ ao example(). > example(barplot)
Ele mostra alguns gr´aficos de barras.
42
˜ AO R CAP´ITULO 1. INTRODU C ¸ AO
Estat´ıstica Descritiva e Gr´ aficos Daiane Marcolino de Mattos Pedro Costa Ferreira Diego Camillo Vilela de Almeida
´ CAP´ITULO 2. ESTAT´ISTICA DESCRITIVA E GRAFICOS
44
Estat´ıstica Descritiva Estat´ıstica descritiva e´ a area ´ da estat´ıstica que descreve e resume informa¸ c˜oes sobre os dados. O R disponibiliza uma variedade de fun¸c˜oes que permitem fazer isso. Por´ em, antes de come¸car a programar, vamos entender alguns conceitos fundamentais.
Popula¸ c˜ ao e amostra Os dados que trabalhamos em estat´ıstica descritiva s˜ao provenientes de uma amostra ou popula¸c˜ao. Popula¸c˜ao ´e um conjunto de todas as unidades que tem uma caracter´ıstica em comum na qual estamos intere ssados. Por exemplo, todos os funcion´arios da Funda¸c˜ ao Get´ulio Vargas no estado do RJ. Como, geralmente, fazer uma pesquisa que envolva o conjunto inteiro da popula¸c˜ao requer bastante tempo, dinheiro e, em alguns casos, o experimento pode ser destrutivo, utiliza-se uma amostra. Ou seja, uma parte da popula¸c˜ ao. Para selecionar uma amostra que represente de fato a popula¸ c˜ ao, h´a diversas metodologias poss´ıveis.
Vari´ aveis Al´em da quantidade de unidades na amostra existem as vari´ aveis que s˜ao as caracter´ ısticas nas quais estamos interessados em descobrir e podem mudar de acordo com cada unidade amostral. Por exemplo, a idade, o sexo, o grau de escolarida de e o sal´ario de cada funcion´ario. As vari´aveis podem ser classificadas em qualitativas e quantitativas. As vari´aveis qualitativas, tamb´ em conhecidas como categ´oricas, s˜ao aquelas que assumem atributos ou qualidades. S˜ao divididas em ordinais e nominais. As ordinais s˜ ao aquelas que podem ser ordenadas de alguma forma, por exemplo, o grau de escolaridade de um funcion´ario (fundamental, m´edio e superior). As nominais s˜ao aquelas em que n˜ao faz sentido alguma ordena¸c˜ao, por exemplo, o sexo do funcion´ario (masculino ou feminino). As vari´aveis quantitativas s˜ao aquelas que podem ser medidas j´a que apresentam valores num´ ericos. S˜ ao classificadas em discretas e cont´ınuas. As vari´ aveis quantitativas discretas podem assumir apenas um n´ umero finito ou infinito cont´avel de valores e, assim, somente
2.1. ESTAT´ISTICA DESCRITIVA
45
fazem sentido valores inteiros. Geralmente s˜ao resultados de contagens. Por exemplo: n´umero de filhos do funcion´ario. As vari´aveis quantitativas cont´ınuas s˜ ao aquelas que assumem valores num´ericos (toda a reta real) e em geral resultantes de mensura¸ c˜oes. Por exemplo: a idade, a altura, o peso e o sal´ario do funcion´ario. Ap´ os a coleta dos dados, utilizamos ferramentas da estat´ıstica descritiva para analisar e resumir informa¸co˜es sobre eles.
Tabela de Frequˆ encias Quando se tem uma grande quantidade de dados uma boa forma de resumi-los ´e criando uma tabela de frequˆ encias. A tabela de frequˆ encias mostra os tipos de valores que uma vari´ avel assume e a quantidade de vezes que os mesmos ocorrem. Para cri´a-la utilize a fun¸c˜ao table(). Exemplo: Vamos criar uma tabela de frequˆencia sobre o material que predomina na cobertura (telhado) dos domic´ılios (coluna 14 do arquivo da POF (IBGE (2015a))). > # Ler a base de dados da POF > dados <- read.csv2("POF_capitais.csv") > # Criando um tabela de frequ^encias > table(dados[ ,14])
123457 1678 1789 14
3
2
18
A primeira linha indica os n´ umeros observados na pesquisa. Cada n´umero representa um tipo de material diferente: 1. Telha qualquer; 2. Laje de concreto; 3. Madeira para constru¸ca˜o; 4. Chapa met´alica; 5. Madeira aproveitada; 6. Palha;
´ CAP´ITULO 2. ESTAT´ISTICA DESCRITIVA E GRAFICOS
46 7. Outro material.
A segunda linha representa a frequˆ encia com que os n´ umeros ocorrem, ou seja, quantas vezes cada tipo se repete. Pelo resultado acima, vemos que a maioria dos domic´ılios p ossui cobertura de telha qualquer (1) ou laje de concreto (2). O n´umero 6 (cobertura de palha) foi omitido j´a que n˜ao apresenta frequˆencia.
Medidas de Posi¸c˜ ao Al´em da cria¸ ca˜o de tabelas, ´e poss´ıvel resumir dados a partir de simples valores num´ ericos. Medidas de posi¸c˜ao s˜ao assim chamadas, pois retornam um ponto (ou valor) no qual est˜ao concentrados os outros valores observados. M´ edia A m´edia ´e a medida de posi¸ c˜ao mais conhecida para resumir dados. n
∑ yi y=
i=1
(2.1)
n
Para calcul´a-la precisamos da soma da vari´avel e do n´umero de unidades que a vari´avel possui. Para calcu lar a soma de uma vari´avel quantitativa podemos usar a fun¸c˜ao sum() e para saber o n´umero de elementos que a vari´avel possui podemos usar a fun¸c˜ ao length().
Exemplo: Vamos calcular a m´edia de moradores por domic´ılio (coluna 9). > # somat´orio da coluna 9 > soma <- sum(dados[,9]) > # n´umero de unidades na coluna 9 > n <- length(dados[,9]) > # c´alculo da m´ edia de moradores > media <- soma/n > media [1] 3.134989
2.1. ESTAT´ISTICA DESCRITIVA
47
Podemos calcular a m´edia, tamb´ em, utilizando a fun¸ ca˜o mean() do R.
Sintaxe: mean(x, ...) Exemplo: Para o exemplo anterior, vamos calcular a m´edia utilizando a fun¸c˜ao mean().
> # calcula a m´ edia da coluna 9 > mean(dados[,9])
[1] 3.134989
Mediana A mediana ´e a medida que divide os dados ordenados exatamente ao meio, ou seja, o valor que separa os 50% menores dos 50% maiores valores.
( )=
md X
,se n e´ ´ımpar
x( n+1 ) 2
x( n ) +x( n +1) 2
2
2
,se n e´ par
Exemplo: Vamos encontrar a mediana para a quantidade de moradores no domic´ılio (coluna 9). Antes de usar a f´ormula acima, precisamos ordenar os dados. Para isso utilizamos a fun¸c˜ao sort().
> > > > > + + +
# ordenando os dados ordem <- sort(dados[,9]) n <- length(ordem) # calculando a mediana if(n%%2 == 0){ med <- ( ord em[n/2] + ordem[n/2 + 1] )/2 }else{ med <- ordem[(n+1)/2] }
> med [1] 3
´ CAP´ITULO 2. ESTAT´ISTICA DESCRITIVA E GRAFICOS
48
Podemos calcular a mediana, tamb´ em, utilizando a fun¸c˜ao median() do R:
Sintaxe: median(x, ...)
> # calcula a mediana da quantidade de moradores > median(dados[,9]) [1] 3
Importante: Para calcular a mediana com a fun¸c˜ao median() n˜ao ´e necess´ ario ordenar os dados, o R faz isso automaticamente.
M´ aximo e M´ ınimo O R possui duas fun¸c˜oes que retornam o maior e o menor valor observado no conjunto de dados: min() e max(). Exemplo: Vamos encontrar o menor e o maior valor observado para a quantidade de moradores no domic´ılio.
> #retorna o menor valor > min(dados[, 9])
[1] 1
> #retorna o maior valor > max(dados[, 9])
[1] 15
Caso quis´ essemos identificar quais domic´ılios possuem uma ou quinze pessoas, poder´ıamos usar a fun¸c˜ao which().
2.1. ESTAT´ISTICA DESCRITIVA
49
Sintaxe: which(condi¸ca˜o) A fun¸c˜ao which() retornar´a quais as linhas que satisfazem determinada condi¸ c˜ao. Exemplo: Retornar quais domic´ılios na base de dados possui a quantidade de moradores igual a 1.
> # Fun¸c~ ao which > which(dados[,9]==1)
Quantis Quantil ´e uma medida de posi¸c˜ao que corresponde a uma propor¸c˜ao. O quantil de a% (0 < a < 1) representa o valor que separa os a% menores valores dos (1-a)% maiores valores no conjunto de dados ordenados. Para entender melhor, veja os exemplos a seguir. A mediana ´e o quantil de 50%; O quantil de 20% representa o valor que separa os 20% menores dos 80% maiores. O quantil de 35% representa o valor que separa os 35% dos 65% maiores no conjunto de dados ordenados. E assim sucessivamente. Para calcular os quantis, assim como a mediana, ´e necess´ ario que os dados estejam ordenados, por´em, o R j´a faz isso automaticamente usando a fun¸c˜ao quantile().
Sintaxe: quantile(x, probs = vetor de quantis) Exemplo: Vamos enco ntrar os quantis de 10%, 25%, 50%, 75%, 90% para a vari´avel Renda Total Mensal do Domic´ılio (coluna 31).
> # Encontrando os quantis > quantile( dados[,31], probs = c(0.10, 0.25, 0.50, 0.75, 0.90))
´ CAP´ITULO 2. ESTAT´ISTICA DESCRITIVA E GRAFICOS
50
10% 25% 50% 75% 90% 756.9295 1217.9387 2218.8527 4481.7586 9186.2312
Podemos interpretar esses n´umeros da seguinte forma: 10% dos domic´ılios possuem renda inferior a R$ 756,93. 75% dos domic´ılios possuem renda inferior a $4481,76. Moda Podemos descobrir qual ´e o n´ umero mais comum de moradores em um domic´ılio. Uma maneira de fazˆ e-lo ´e criar uma tabela de frequˆ encias (subse¸ c˜ao 2.1.3) e descobrir o n´umero que mais se repete. Em estat´ıstica descritiva, chamamos isso de moda. Para criar uma tabela de frequˆ encias use a fun¸ c˜ao table(). Exemplo: Vamos encontrar a quantidade mais comum de moradores em um domic´ılio.
> #cria uma tabela de frequ^encias > table(dados[,9])
1 2 3 4 5 6 7 8 9 10 11 15 488 839 873 746 316 145 52 23 11 6
4
1
A primeira linha, na tabela acima, representa o n´umero de moradores em um domic´ılio observados na pesquisa. A segunda linha correspond e `a frequˆ encia dele. Ou seja, h´a apenas um domic´ılio com 15 moradores enquanto h´a quatro domic´ılios com 11. A maior frequˆ encia observada ´e 873, que corresponde ao n´ umero de trˆes moradores. Portanto, trˆ es ´e a moda de moradores na pesquisa. Fun¸ c˜ ao summary A fun¸ca˜o summary() retorna v´arias medidas de posi¸c˜oes de uma s´o vez: a m´edia, a mediana, o primeiro e o terceiro quartis, e o menor e o maior valor da vari´ avel em estudo.
Sintaxe: summary(x)
2.1. ESTAT´ISTICA DESCRITIVA
51
onde x ´e a vari´ avel ou o conjunto de vari´aveis em estudo. Caso a vari´avel seja categ´orica, essa fun¸c˜ao retornar´a apenas a frequˆ encia de cada categoria. Exemplo: Vamos obter, ent˜ao, um resumo de informa¸c˜ oes sobre a Quantidade de Moradores (coluna 9) e para Renda Total Mensal do Domic´ılio (coluna 31). > # estat´ısticas para a quantidade de moradores > summary(dados[,9]) Min. 1st Qu. Median 1.000 2.000 3.000
Mean 3rd Qu. 3.135 4.000
Max. 15.000
Conclu´ ımos que o menor n´ umero de moradores em um domic´ılio, nessa pesquisa, ´e um e o maior ´e quinze. E que, em m´edia, h´ a 3,135 moradores em um domic´ılio. > # estat´ısticas para a renda > summary(dados[,31]) Min. 50.78
1st Qu. 1218.00
Median 2219.00
Mean 3rd Qu. Max. 4082.00 4482.00 117200.00
Observe a m´a distribui¸c˜ao de ren da do Bras il. H´a domic´ılios que recebem R$50,78 e outros que recebem R$117200,00. E a m´ edia da renda ´e de R$4082,00. A m´edia ´e uma medida que ´e influenciada por outliers (valores at´ıpicos). Assim, dependendo do comportamento dos dados (muito dispersos ou n˜ao), esta pode n˜ao ser uma boa medida para representar os dados.
Medidas de Dispers˜ao Medidas de dispers˜ao s˜ao u ´ teis para verificar se os dados s˜ao homogˆeneos ou heterogˆeneos. A seguir ser˜ao apresentadas as fun¸c˜ oes mais utilizadas para quantificar a variabilidade dos dados. Variˆ ancia Amostral: n 2
s =
n
2
2
2
∑ (yi − y)
∑ yi − ny
i=1
i=1
n−1
=
n−1
´ CAP´ITULO 2. ESTAT´ISTICA DESCRITIVA E GRAFICOS
52
Exemplo: Vamos calcular a variˆancia amostral para os dados da coluna 9 (quantidade de moradores). Usaremos a fun¸c˜ao var().
> var(dados[,9])
[1] 2.437668
Desvio - Padr˜ ao A variˆancia por ser uma medida quadr´atica, diferente da ordem de grandeza dos dados observados, po de, `as vezes, dificultar a interpreta¸c˜ ao. Como alternativa, utilizamos a raiz da variˆ ancia, o desvio padr˜ao, para compreender melhor. Quanto maior o desvio padr˜ao mais dispersos est˜ao os dados.
∑( = n
s
yi − y)2
i=1
n−1
Podemos calcul´a-lo apenas tirando raiz da variˆancia ou usando a fun¸ca˜o sd(). Exemplo: Vamos calcular o desvio padr˜ao para o exemplo anterior. > # raiz da vari^ancia > sqrt( var(dados[,9]) )
[1] 1.561303
> # desvio - padr~ao > sd(dados[, 9])
[1] 1.561303
Percebe-se que o desvio padr˜ao n˜ao ´e grande em rela¸ca˜o `a m´edia. E isso significa que n˜ao h´a uma dispers˜ao t˜ao forte entre o n´umero de pessoas que moram em cada domic´ılio. Isso pode ser visualizado de forma melhor com a elabora¸ c˜ ao de gr´aficos (se¸c˜ao 2.2).
2.1. ESTAT´ISTICA DESCRITIVA
53
Amplitude Total e Amplitude Interquartil Amplitude total ´e a diferen¸ca entre o maior (m´aximo) e o menor (m´ınimo) valor observado. Por´ em, se por acaso no conjunto de dados houver valores at´ıpicos/outliers (valores extremamente pequenos ou grandes), essa medida pode n˜ ao representar bem o conjunto de dados. Portanto, n˜ao ´e uma boa medida de dispers˜ao.
´ prefer´ıvel Amplitude interquartil´ıca ´e a diferen¸ ca entre o terceiro e o primeiro quartis. E em rela¸ca˜o `a amplitude total por n˜ao ser afetada por valores extremos. O R utiliza a fun¸ c˜ ao IQR() para essa finalidade.
Vamos calcular as amplitudes total e interquartil´ıca para a coluna 31 do arquivo de dados (renda total mensal do domic´ılio). > # calculando a amplitude total > ampt <- max(dados[,31])-min(dados[,31]) > ampt
[1] 117168.4 > # calculando a amplitude interquartil > IQR(dados[,31]) [1] 3263.82
Coeficiente de Varia¸c˜ ao O coeficiente de varia¸ ca˜o ´e uma medida de dispers˜ao u ´ til para comparar dois ou mais conjuntos de dados quando estes est˜ao em unidades de medidas diferentes, caso contr´ ario ´ uma medida relativa resultante da divis˜ao poderiam ser comparados pelo desvio padr˜ao. E do desvio padr˜ao pela m´edia.
CV =
s × 100 x
´ CAP´ITULO 2. ESTAT´ISTICA DESCRITIVA E GRAFICOS
54
Quanto menor for o coeficiente de varia¸ca˜o menor ser´a a dispers˜ao dos dados em torno da m´edia, ou seja, os dados s˜ ao homogˆeneos. Um CV maior do que 30% sugere que os dados s˜ao heterogˆ eneos, ou seja, est˜ ao dispersos em torno da m´edia. H´ a quem diga isso para CV maior do que 25% ou 50%, tornando mais dif´ıcil haver um valor padr˜ ao de compara¸c˜ao. Por´ em, ao comparar diversos conjuntos de dados, aquele que possuir o menor CV ´e o mais homogˆeneo. Abaixo o CV da Renda Monet´aria Mensal do Domic´ılio (coluna 29).
> # calculando o coef. de varia¸c~ ao > sd(dados[,31])/mean(dados[,31])*100
[1] 147.3442
Como se observa, o CV ´e igual a 147,34%, indicando que os dados s˜ao muito heterogˆ eneos, ou seja, dispersos em rela¸c˜ao `a m´edia. Assim, a m´edia n˜ ao ´e uma medida que representa t˜ao bem esse conjunto de dados, principalmente por ela ser afetada pelas rendas muito altas que representam uma minoria de observa¸co˜es.
Covariˆ ancia e Correla¸c˜ ao Covariˆ ancia e correla¸c˜ao medem a dependˆencia linear de duas vari´ aveis quantitativas. Por´ em, a covariˆ ancia n˜ao ´e uma medida padronizada. Sendo assim, a correla¸c˜ao mais f´acil de interpretar. A correla¸c˜ao varia entre -1 e 1. Quanto mais perto de -1 ou 1 significa que as vari´ aveis possuem uma forte associa¸c˜ao linear. Quanto mais pr´oximo de zero significa que as vari´aveis possuem fraca associa¸c˜ao linear. Sinal positivo indica que quando uma vari´ avel cresce (diminui) a outra vari´avel tamb´ em cresce (diminui). J´ a o sinal negativo indica que quando uma vari´ avel cresce, a outra diminui e vice-versa. A seguir est˜ao as f´ormulas de como calcular a covariˆ ancia e a correla¸c˜ ao. n
n
∑ (xi − x)(yi − y) cov(x, y) =
i=1
n−1
∑ (xi yi − nxy) =
i=1
n−1
2.1. ESTAT´ISTICA DESCRITIVA
55
ρ (x, y) =
cov(x, y) sx sy
Como exemplo, vamos calcular essas medidas para quantificar a associa¸c˜ ao linear entre a Quantidade de Banheiros (coluna 20) e a Renda Total Mensal do Domic´ılio (coluna 31). A covariˆancia e a correla¸c˜ao podem ser calculadas diretamente pelas fun¸ c˜oes cov() e cor(), respectivamente.
> cov(dados[, 20], dados[, 31])
[1] 3221.584
> #correla¸ c~ ao > cor(dados[, 20], dados[, 31])
[1] 0.5807561
A correla¸c˜ao entre as vari´aveis resultou em 0,5807 indicando que h´a uma associa¸c˜ ao linear positiva entre elas, ou seja, quanto maior o n´ umero de banheiros, maior ´e a renda do domic´ılio. Mas como o n´ umero n˜ao est´a t˜ao pr´oximo de um, provavelmente, h´a outra vari´avel que influencie na renda do domic´ılio. Lembrando que nem sempre h´a rela¸c˜ao de causa e efeito, portanto ter um grande n´umero de banheiros n˜ao significa maior renda.
Medidas calculadas por grupos Muitas vezes estamos interessados em calcular a m´edia, ou outras medidas, de uma vari´ avel de acordo com os grupos de outra vari´avel. A fun¸c˜ao tapply() e´ simples e u ´ til para essa finalidade.
Sintaxe: tapply(x, INDEX, FUN)
´ CAP´ITULO 2. ESTAT´ISTICA DESCRITIVA E GRAFICOS
56
onde x ´e a vari´ avel principal, INDEX ´e o grupo ( a outra vari´avel) e FUN ´e a medida a ser calculada: m´edia, variˆ ancia, etc.
Exemplo: imagine que queremos descobrir a renda m´edia de domic´ılio por Unidade de Federa¸ ca˜o.
> # Calculando a renda m´edia do domic´ ılio por UF > tapply(dados[,31], dados[,2], mean)
29 31 33 35 43 53 2659.425 4799.979 4485.673 4188.369 3862.561 4081.720
Assim, temos a renda m´edia de acordo com a UF. Verifica-se que a maior renda m´edia ´e a de Minas Gerais enquanto a menor ´e a da Bahia.
Exemplo: Podemos descobrir tamb´em a dispers˜ao da renda por UF.
> # Calculando a dispers~ao da renda do domic´ılio por UF > tapply(dados[, 31], dados[, 2], sd)
29 31 33 35 43 53 4125.793 8319.749 6352.097 4710.368 5296.013 5546.274
Minas Gerais tamb´ em apresentou a maior dispers˜ao de renda, por´em, o coeficiente de varia¸ c˜ao seria mais eficaz para comparar a dispers˜ao entre as UF’s.
Para facilitar a visualiza¸ca˜o ´e poss´ıvel combinar esses dois resultados.
> media <- tapply(dados[, 31], dados[, 2], mean) > > > >
desvio <- tapply(dados[, 31], dados[, 2], sd) # visualizar em data frame UF <- data.frame(media,desvio) UF
2.1. ESTAT´ISTICA DESCRITIVA
29 31 33 35 43 53
media 2659.425 4799.979 4485.673 4188.369 3862.561 4081.720
57
desvio 4125.793 8319.749 6352.097 4710.368 5296.013 5546.274
Vamos calcular o coeficiente de varia¸c˜ao para esses dados tamb´ em.
> # coeficiente de varia¸cao ~ > UF$CV <- UF$desvio/UF$media*100 > UF
29 31 33 35 43 53
media 2659.425 4799.979 4485.673 4188.369 3862.561 4081.720
desvio 4125.793 8319.749 6352.097 4710.368 5296.013 5546.274
CV 155.1385 173.3289 141.6086 112.4631 137.1114 135.8808
Em todas as Unidades de Federa¸c˜ao, o coeficiente de varia¸c˜ao ´e extenso, ou seja, h´a uma dispers˜ao grande na renda nos estados.
Caso vocˆe queira descobrir alguma medida para mais de uma vari´avel de uma s´o vez, utilize a fun¸c˜ ao agregate().
Sintaxe: aggregate(vari´ aveis, list(grupo), medida) Exemplo: Descobrir, de acordo com a UF, as m´edias da renda e do n´ umero de moradores ao mesmo tempo.
> # vari´aveis: renda e n´umero de moradores > variaveis <- data.frame(dados[,9],dados[,31]) > # m´edia das vari´ aveis por UF
´ CAP´ITULO 2. ESTAT´ISTICA DESCRITIVA E GRAFICOS
58 > > > >
medias <- aggregate(variaveis, list(dados[,2]), mean) # editando o nome das colunas colnames(medias) <- c("UF", "Moradores", "Renda") medias
1 2 3 4 5 6
UF Moradores Renda 29 3.316699 26 59.425 31 2.994056 47 99.979 33 3.015050 44 85.673 35 3.196629 41 88.369 43 2.753731 38 62.561 53 3.312842 40 81.720
Assim obtivemos a m´edia das vari´ aveis de renda e de quantidade de moradores ao mesmo tempo.
Criando Gr´aficos com o
R
Muitas vezes um gr´afico bem feito torna mais f´acil de entender o comportamento de um conjunto de dados. Nesta se¸c˜ ao ser˜ao vistos os principais gr´aficos utilizados para descrever dados, s˜ao eles: histograma, boxplot, gr´afico de dispers˜ao ou de pontos, gr´afico de pizza e gr´afico de barras. Abaixo, podem ser vistos alguns exemplos dos gr´ aficos anteriores.
Figura 2.1
´ 2.2. CRIANDO GR AFICOS COM O R
59
Figura 2.2
Figura 2.3 No R, existem alguns pacotes que permitem a cria¸ c˜ao de gr´aficos bem elaborados com diversas op¸c˜oes de edi¸c˜ao. Aqui, utilizaremos o pacote graphics(R Core Team (2015a)) que foi instalado junto com o pr´ oprio R, ou seja, n˜ ao ´e necess´ ario nenhum outro pacote para executar a cria¸c˜ao dos gr´aficos nessa se¸c˜ao.
Cada gr´afico que faremos possui sua pr´opria fun¸c˜ao no R. Por´ em, h´ a alguns argumentos que s˜ao comuns em cada uma das fun¸c˜oes. S˜ao eles:
•
main – t´ıtulo do gr´afico;
• •
xlab – texto do eixo x; ylab – texto do eixo y;
•
col – cor do gr´afico;
´ CAP´ITULO 2. ESTAT´ISTICA DESCRITIVA E GRAFICOS
60
Com esses quatro argumentos vocˆe cria um gr´afico com o m´ınimo de informa¸c˜oes necess´ arias para o entendimento do mesmo. A seguir, veremos detalhadamente as fun¸co˜es que criam os tipos de gr´aficos apresentados anteriormente.
Histograma ´ u O histograma ´e a representa¸ c˜ao gr´afica de uma distribui¸c˜ao de frequˆencias. E ´ til para visualizar como os dados se comportam, os valores mais e menos frequentes. O histograma pode mostrar a propor¸c˜ao dos dados ao inv´ es da frequˆ encia absoluta em cada classe. No R, utilizamos a fun¸c˜ao hist() para esbo¸car um histograma.
Sintaxe: hist(x, ...) Os argumentos mais utilizados nesta fun¸c˜ao s˜ao: • •
x – vetor de dados (necess´ario); main – t´ıtulo do gr´afico;
•
xlab – texto do eixo x;
•
ylab – texto do eixo y;
•
xlim – limite do eixo x;
•
ylim – limite do eixo y;
•
col – cor do preenchimento do histograma;
•
border – cor da linha/borda do histograma. Exemplo: Vamos utilizar uma base de dados chamada galton, para fazer o histograma.
Esta base cont´em 928 medidas de altura de pais e de seus respectivos filhos. A altura dos pais foi calculada como uma m´edia entre as alturas da m˜ ae e do pai. H´a, na base, pais que possuem mais de um filho, portanto existem alturas de pais repetidas. A unidade de medida ´e dada em polegadas, portanto, para um melhor entendimento, vamos converter para cent´ımetros.
´ 2.2. CRIANDO GR AFICOS COM O R
61
Para ler a base ´e necess´ ario instalar o pacote UsingR(Verzani et al. (2015)).
> > > >
# lendo a base install.packages("UsingR") require(UsingR) head(galton)
1 2 3 4 5 6
child parent 61.7 70.5 61.7 68.5 61.7 65.5 61.7 64.5 61.7 64.0 62.2 67.5
> # Convertendo de polegadas para cent´ımetros (1 polegada ´e aproximadamente 2,54 cm) > galton <- 2.54 * galton > head(galton)
child parent 1 156.718 179.07 2 3 4 5 6
156.718 156.718 156.718 156.718 157.988
173.99 166.37 163.83 162.56 171.45
Vamos esbo¸car um histograma para a altura dos filhos.
> # esbo¸cando o histograma > hist(galton$child, main = "Distribui¸ cao ~ das alturas dos filhos", + xlab = "Altura (cm)")
Podemos ver atrav´ es do gr´ afico que as maiores frequˆ encias est˜ ao por volta de 170 cm e 175 cm de altura. Caso queira acrescentar alguma cor ao gr´afico, utilize os argumentos col e border. Nas referˆ encias desse documento ´e poss´ıvel encontrar uma lista de cores que podem ser usadas.
´ CAP´ITULO 2. ESTAT´ISTICA DESCRITIVA E GRAFICOS
62
Distribuição das alturas dos filhos
0 5 1
y c n e u q e r F
0 0 1
0 5
0
155
160
165
170
175
180
185
Altura (cm)
Figura 2.4 > # esbo¸cando o histograma > hist(galton$child, main = "Distribui¸ cao ~ das alturas dos filhos", + xlab = "Alturas (cm)", col = "darkgray", + border = "black")
´ 2.2. CRIANDO GR AFICOS COM O R
63
Distribuição das alturas dos filhos
0 5 1
y c n e u q e r F
0 0 1
0 5
0
155
160
165
170
175
180
185
Alturas (cm)
Figura 2.5 Agora, vamos a outro exemplo: Vamos esbo¸car um histograma para a Renda Total Mensal do Domic´ılio (coluna 31) da POF.
> # criando o gr´afico > hist(dados[, 31], main = "Distribui¸cao ~ da Renda nos Domic´ılios", + xlab = "Renda Total Mensal do Domic´ılio", col = "lightsteelblue3")
´ CAP´ITULO 2. ESTAT´ISTICA DESCRITIVA E GRAFICOS
64
Distribuição da Renda nos Domicílios
0 0 0 3
0 0 5 2
0 0 0 2 y c n e u q e r F
0 0 5 1
0 0 0 1
0 0 5
0
0
20000
40000
60000
80000
100000
120000
Renda Total Mensal do Domicílio
Figura 2.6 Pelo histograma, conclu´ımos que um pouco mais do que 3000 domic´ılios possuem renda entre 0 e 10 mil reais, lembrando que temos 3504 domic´ılios na amostra. E uma minor ia (menos de 500 domic´ılios) possui renda superior a 10 mil reais. Para ver uma melhor distribui¸c˜ ao daqueles que possuem renda inferior a 10 mil reais, podemos filtrar os dados e fazer outro histograma s´ o para eles. Para isso, usa mos a fun¸c˜ ao subset().
Sintaxe: subset(x, condi¸c˜ao de x) A condi¸ca˜o, nesse caso, ser´a os x menor do que dez mil reais:
´ 2.2. CRIANDO GR AFICOS COM O R
65
> # filtrando os dados > menorq10 <- subset(dados[,31], dados[,31]< 10000)
Ap´ os guardar os dados na condi¸c˜ ao que escolhemos, podemos fazer o histograma.
> # criando o gr´afico > hist(menorq10, main = "Distribui¸ c~ ao dos domic´ ılios com renda + inferior a R$10.000,00", xlab = "Renda Total Mensal do Domic´ılio", + col = "lightskyblue") Distribuição dos domicílios com renda inferior a R$10.000,00 0 0 0 1
0 0 8
y c n e u q e r F
0 0 6
0 0 4
0 0 2
0
0
2000
4000
6000
8000
10000
Renda Total Mensal do Domicílio
Figura 2.7 Agora, est´a mais f´acil visualizar o comportamento da maioria dos domic´ılios. Percebe-se que h´a uma grande concentra¸c˜ao entre zero e trˆes mil reais, que representam aproximadamente 2200 domic´ılios (600+1000+ 600). E, a partir de 2 mil reais, o n´umero de domic´ılios come¸ca a decrescer.
´ CAP´ITULO 2. ESTAT´ISTICA DESCRITIVA E GRAFICOS
66
´ assim que vemos que a distribui¸c˜ao dos dados ´e assim´etrica, pois h´ E a uma concentra¸ca˜o maior em um lado e a cauda do gr´ afico se encontra em outro. Podemos calcular o coeficiente de assimetria para essa distribui¸c˜ao, para quantificar o qu˜ao assim´etrica ´e a distribui¸ c˜ao dos dados. Classifica¸ca˜o do coeficiente de assimetria: Sim´ etrica
0,15 1 | Assim´ etrica moderada
| Assim´ etrica Forte
´ necess´aria a instala¸c˜ao do pacote moments(Komsta e Novomestky (2015)) para calcuE lar o coeficiente.
> > > > >
# instalando e carregando o pacote moments install.packages("moments") require(moments) # calcular assimetria com a f´ormula skewness(menorq10)
[1] 1.355681
O coeficiente de assimetria igual 1,355 diz que a distribui¸ c˜ ao ´e assim´etrica forte. Essa distribui¸c˜ao ´e assim´etrica a` direita, j´a que a cauda est´a a direita. Gr´aficos de renda ´ poss´ıvel ver assimetrias atrav´ geralmente s˜ao classificados assim. E es de boxplots, tamb´ em.
Boxplot O boxplot ´e um gr´ afico constru´ ıdo com base no resumo de cinco n´ umeros: limite inferior, 1º quartil, mediana, 3 º quartil e limite superior. O gr´afico tem um formato de caixa cuja sua largura ´e representada pelos 1 º e 3º quartis. Portanto, 50% das observa¸c˜oes est˜ao conce ntradas dentro da caixa. Os limite s inferior e superior s˜ao representados por linhas fora da caixa. O boxplot ´e muito u ´til para descobrir se h´ a outliers no conjunto de dados, ou seja, valores afastados da maioria das observa¸c˜oes. Esses valores aparecem, no gr´afico, fora dos
´ 2.2. CRIANDO GR AFICOS COM O R
67
limites inferior e superior.
Figura 2.8: Exemplo de boxplot
Para esbo¸car um boxplot, utilizamos a fun¸c˜ao boxplot().
Sintaxe: boxplot(x, ...) Os argumentos mais utilizados nesta fun¸c˜ao s˜ao: •
x – vetor de dados (necess´ario);
•
main – t´ıtulo do gr´afico;
•
xlab – texto do eixo x;
•
ylab – texto do eixo y;
•
col – cor do preenchimento da caixa;
•
border – cor da linha/borda da caixa;
•
horizontal – se TRUE, a caixa aparece no formato horizontal, se FALSE (default), aparece no formato vertical. Exemplo: Ainda com a base galton, fa¸camos um boxplot para a altura dos pais (coluna
´ CAP´ITULO 2. ESTAT´ISTICA DESCRITIVA E GRAFICOS
68 2).
> boxplot(galton$parent, main = "Boxplot para a altura dos pais", + ylab = "Altura (cm)", col = "seagreen3")
Boxplot para a altura dos pais 5 8 1
0 8 1
) m c ( a r u lt A
5 7 1
0 7 1
5 6 1
Figura 2.9 O gr´afico indicou dois valores outliers e os dados se distribuem de forma sim´ etrica.
Exemplo: Vamos criar um boxplot para a renda dos domic´ılios que possuem renda inferior a dez mil reais (objeto criado anteriormente).
> #criando o boxplot > boxplot(menorq10, horizontal = T, col = "gold", + xlab="Renda Total Mensal do Domic´ ılio", main = "Boxplot da Renda dos Domic´ılios")
´ 2.2. CRIANDO GR AFICOS COM O R
69
Boxplot da Renda dos Domicílios
0
2000
4000
6000
8000
10000
Renda Total Mensal do Domicílio
Figura 2.10 Repare que existem muitos dados acima do limite superior. Esses s˜ ao considerados outliers ou valores at´ıpicos, valores distantes da maioria dos dados. Atrav´ es do boxplot tamb´ em ´e poss´ıvel ver a assimetria da distribui¸ c˜ao dos dados, assim como foi visto no histograma.
Gr´ afico de Pontos ou Gr´ afico de Dispers˜ao Gr´afico de pontos ´e u´til quando se tem dados pareados (x,y) e se quer descobrir se h´ a alguma rela¸c˜ao entre eles. No R, utilizamos a fun¸c˜ao plot() para esbo¸car esse tipo de gr´afico.
Sintaxe: plot(x,y, ...)
´ CAP´ITULO 2. ESTAT´ISTICA DESCRITIVA E GRAFICOS
70
Os principais argumentos desta fun¸c˜ ao est˜ao a seguir. •
x – vetor de dados;
•
y – vetor de dados;
•
main – t´ıtulo do gr´afico;
•
xlab – texto do eixo x;
•
ylab – texto do eixo y;
•
col – cor dos pontos;
•
pch – formato dos pontos;
•
xlim – limites do eixo x;
•
ylim – limites do eixo y;
•
type – tipo de linha que liga os pontos (default: sem linha);
•
lty – formato da linha que liga os pontos;
•
lwd – espessura dos pontos. Exemplo: Vamos utilizar outra base de dados do pacote UsingR: kid.weights. Essa
base representa uma amostra sobre 250 crian¸cas. Cont´em a idade, o peso, a altura e o sexo da crian¸ca. Fa¸camos um gr´afico de pontos para verificar se h´a rela¸c˜ao entre o peso (coluna 2) e a altura (coluna 3) das crian¸cas. > # base a ser utilizada > head(kid.weights)
age weight height 1 58 38 38 2103 87 43 3 87 50 48 4138 98 61 5 82 47 47 6 52 30 24
> > + +
gender M M M M F F
# criando o gr´afico plot(kid.weights$weight, kid.weights$height, main = "Rela¸c~ ao entre o peso e altura das crian¸cas", xlab = "Peso", ylab = "Altura")
´ 2.2. CRIANDO GR AFICOS COM O R
71
Relação entre o peso e altura das crianças
0 6
0 5
a r tu l A
0 4
0 3
0 2
0 1
20
40
60
80
100
120
140
Peso
Figura 2.11 Podemos observar que h´a uma rela¸c˜ ao positiva entre o peso e a altura das crian¸ cas (quanto maior uma, maior a outra). Veja outro exemplo a seguir.
Exemplo: Vamos utilizar os dados da POF para esbo¸car um gr´afico de pontos que mostra se h´a alguma rela¸c˜ao entre a quantidade de banheiros (coluna 20) e cˆ omodos (coluna 16) em um domic´ılio.
> > + +
# criando o gr´afico plot(dados[,16], dados[,20], main = "Banheiros x C^omodos", pch = 19, col = "dodgerblue3", xlab = "Quantidade de C^omodos no Domic´ ılio", ylab = "Quantidade de Banheiros no Domic´ılio")
´ CAP´ITULO 2. ESTAT´ISTICA DESCRITIVA E GRAFICOS
72
Banheiros x Cômodos
8
o lií c i m o D o n s o ir e h n a B e d e d a d ti n a u Q
6
4
2
0
5
10
15
20
25
Quantidade de Cômodos no Domicílio
Figura 2.12 Parece haver alguma rela¸ca˜o positiva entre a quantidade de cˆomodos e de banheiros no domic´ılio: a` medida que o n´umero de cˆomodos cresce, o n´umero de banheiros aumenta. Testes estat´ısticos podem confirmar essa rela¸ca˜o.
Gr´ afico de Setores ou de Pizza O gr´afico de setores, mais conhecido como gr´afico de pizza ´e bastante usado para representar categorias de uma vari´avel de acordo com suas propor¸c˜oes. N˜ao ´e indicado quando se tem muitas categorias, nesse caso, ´e prefer´ıvel utilizar um gr´ afico de barras. No R, utiliza-se a fun¸c˜ao pie() para criar um gr´afico de pizza.
´ 2.2. CRIANDO GR AFICOS COM O R
73
Sintaxe: pie(x, ...) Os principais argumentos da fun¸c˜ao s˜ao: •
x – vetor com as frequˆ encias ou propor¸c˜oes de cada fatia;
•
main – t´ıtulo do gr´afico;
•
labels – vetor de texto para cada fatia;
•
col – vetor de cores para cada fatia. Um gr´afico com diversas categorias necessita de uma legenda para o entendimento do
leitor. Para criar uma legenda no R, utiliza-se a fun¸c˜ao legend().
Sintaxe: legend(x, ...) Os principais argumentos dessa fun¸c˜ao s˜ao mostrados a seguir. •
legend – vetor de texto para cada fatia;
•
x – posi¸c˜ao da legenda: “ bottomright”, “bottom”, “bottomleft”, “left”, “topleft”, “top”, “topright”, “right”e “center”.
•
fill – vetor de cores de cada fatia;
•
cex – tamanho da legenda. Exemplo: Ainda utilizando a base kid.weights vamos criar um gr´afico de pizza que
mostre a propor¸c˜ ao de meninos e meninas na amostra (coluna 4).
> # tabela de frequ^encia das categorias > prop <- table(kid.weights[,4]) > prop
F M 129 121
> # esbo¸cando o gr´afico > pie(prop, main = "Composi¸cao ~ por sexo", + labels = c("51.6%", "48.4%"),
´ CAP´ITULO 2. ESTAT´ISTICA DESCRITIVA E GRAFICOS
74
+ col = c("palevioletred2", "dodgerblue3")) > # adicionando a legenda > legend(x = "topright", + legend = c("Feminino", "Masculino"), + fill = c("palevioletred2", "dodgerblue3"), cex = 0.8)
Composição por sexo Feminino Masculino
51.6%
48.4%
Figura 2.13 Vemos que a amostra ´e composta de um pouco mais meninas do que meninos. Veja a seguir outro exemplo. Exemplo: Agora, utilizando a POF, va mos esbo¸car um gr´afico de pizza para que representa as propor¸c˜ oes dos tipos de domic´ılios da amostra: casa, apartamento ou cˆomodo (corti¸co). > # tabela de frequ^encia das categorias > setores <- table(dados[,12])
´ 2.2. CRIANDO GR AFICOS COM O R
75
> # c´alculo da porcentagem de cada categoria > valores <- signif(setores/sum(setores)*100, 3) > # constru¸ cao ~ do gr´afico > pie(setores, + labels = paste(valores,"%",sep=""), + col = c("steelblue1","olivedrab3","orange"), + main = "Tipo de Domic´ılio") > # criando a legenda > texto <- c("Casa", "Apartamento", "C^ omodo") > legend(x = "topright", legend = texto, + fill = c("steelblue1","olivedrab3","orange"), cex = 0.65)
Tipo de Domicílio Casa Apartamento Cômodo
72.6%
1.4%
26%
Figura 2.14
Podemos ver que a maioria dos domic´ ılios s˜ ao do tipo casa e apenas 1,4% dos domic´ılios s˜ao do tipo cˆomodo ou corti¸co.
´ CAP´ITULO 2. ESTAT´ISTICA DESCRITIVA E GRAFICOS
76
Gr´ afico de Barras ´ bastante Um gr´afico de barras mostra as frequˆencias de diversas categorias de dados. E u ´ til para observar as diferen¸cas entre as categorias. No R, utiliza-se a fun¸c˜ao barplot() para esbo¸car um gr´afico de barras.
Sintaxe: barplot(x,...) Os principais argumentos est˜ao apresentados a seguir. •
x – vetor de dados com a frequˆ encia de cada categoria;
•
names - vetor de texto para o nome de cada categoria / barra;
•
main – t´ıtulo do gr´afico;
•
col – um vetor de cores para cada categoria; Exemplo: Vamos utilizar outra base de dados do pacote UsingR: grades. Essa base
representa uma amostra sobre notas de 122 alunos na classe atual e anterior na escala A-F. Fa¸camos um gr´afico de barras para as notas atuais (coluna 2) para verificar a frequˆencia de cada nota nessa amostra. > > > > > > + + > + +
# dados a serem utilizados grades tabela1 <- table(grades[,1]) tabela2 <- table(grades[,2]) # criando o gr´afico barplot(tabela1, main = "Frequ^ encias de Notas anteriores", col = topo.colors(9)) barplot(tabela2, main = "Frequ^ encias de Notas atuais", col = topo.colors(9))
´ 2.2. CRIANDO GR AFICOS COM O R
77
Frequências de Notas anteriores
5 2
0 2
5 1
0 1
5
0
A
A−
B+
B
B−
C+
C
D
F
Figura 2.15
Frequências de Notas atuais
0 2
5 1
0 1
5
0
A
A−
B+
B
B−
C+
Figura 2.16 Veja outro exemplo a seguir:
C
D
F
´ CAP´ITULO 2. ESTAT´ISTICA DESCRITIVA E GRAFICOS
78
Exemplo: Vamos esbo¸car um gr´afico de barras para os dados da POF para a renda m´edia por Unidade de Federa¸c˜ao. Precisamos calcular a renda m´edia por UF antes de esbo¸car o gr´afico. > > > > + + + +
# calculando a renda m´edia por UF renda <- tapply(dados[,31], dados[,2], mean) #criando o gr´afico barplot(renda, names = c("BA","MG","RJ","SP","RS","DF"), ylim = c(0,5000), main = "Renda M´edia por UF", col = gray.colors(6))
Renda Média por UF 0 0 0 5
0 0 0 4
0 0 0 3
0 0 0 2
0 0 0 1
0
BA
MG
RJ
SP
RS
DF
Figura 2.17 Por esse gr´afico podemos comparar a renda m´edia em cada estado contido na amostra. Na Bahia, por exemplo, a renda m´edia domiciliar n˜ ao ultrapassa R$3.000,00. Enquanto em
´ 2.2. CRIANDO GR AFICOS COM O R
79
Minas Gerais, a renda m´edia se aproxima dos 5 mil reais. ´ o´timo para comparar diversas Pode ser feito tamb´ em um gr´ afico de barras m´ultiplas. E vari´ aveis diferentes. Veja o exemplo a seguir. Exemplo: Fa¸camos um gr´afico de barras que mostre os tipos de domic´ılios de acordo com as unidades de federa¸ca˜o. Nesse caso, foram inseridos os seguintes argumentos na fun¸ca˜o barplot: •
beside – TRUE para colocar as barras lado a lado ou
FALSE para colocar as barras
uma em cima da outra; •
> > > > + + + + +
legend.text – para adicionar a legenda ao gr´afico;
#tabela de dados que mescla UF com os tipos de domic´ılios tabela <- table(dados[,2],dados[,12]) #criando o gr´afico barplot(tabela, names = c("Casa","Apartamento","C^ omodo"), main = "Tipos de Domic´ılios por UF", beside = T, col = terrain.colors(6), legend.text = c("BA ", "MG", "RJ", "SP", "RS", "DF"))
No gr´afico 2.18, comparamos trˆ es categorias de tipo de domic´ılio de acordo com cada UF. Observando Rio de Janeiro (cor amarela) e S˜ ao Paulo (cor laranja), percebe-se que SP ´e superior em n´ umero de casas em rela¸ c˜ao ao Ri o. Mas em rel a¸c˜ao a apartamentos, SP ´e inferior.
´ CAP´ITULO 2. ESTAT´ISTICA DESCRITIVA E GRAFICOS
80
Tipos de Domicílios por UF
BA MG RJ SP RS DF
0 0 5
0 0 4
0 0 3
0 0 2
0 0 1
0
Casa
Apartamento
Cômodo
Figura 2.18
Outros gr´ aficos H´ a ainda, outros gr´aficos que permitem descr ever os dados. Abaixo ser´a mostrado um breve resumo sobre eles. •
Ramo – e – folhas O diagrama de ramo-e-folhas ´e uma b oa maneira de organizar os dados a fim de obter uma apresenta¸ca˜o que facilite a visualiza¸ c˜ao de informa¸c˜oes. Recomenda-se que seja utilizado para quantidades pequenas de dados, pois em grandes quantidades ´e poss´ıvel a perda de informa¸c˜oes. No R, utiliza-se a fun¸c˜ao stem() para fazˆ e-lo.
´ 2.2. CRIANDO GR AFICOS COM O R
81
Exemplo: Vamos fazer o diagrama para a vari´avel Renda Total Mensal do Domic´ılio (coluna 31). > stem(dados[,31]) The decimal point is 4 digit(s) to the right of the | 0 | 00000000000000000000000000000000000000000000000000000000000000000000+3096 1 | 00000000000000000000000000000000000000000011111111111111111111111111+165 2 | 000001111111222223333334444444555555555556888899 3 | 01223333334455566678888 4 | 345567 5 | 3 6 | 29 7 | 6 8 | 8 9 | 10 | 11 | 7
` esquerda de | est´a o ramo e `a direita est˜ao as folhas. A O R nos informa que o ponto decimal est´a quatro d´ıgitos a` direita de |. Isso significa que os algarismos `a direita de | representam a casa dos mil´esimos em um n´umero. Por´ em, como os valores da renda s˜ ao altos e a quantidade de dados ´e grande, perdem-se informa¸c˜oes. Assim, o R trunca os n´umeros. Por exemplo, a maior observ a¸ca˜o que ´e 117219.2, ´e representada por 11|7 que ´e 117000, j´ a que a folha 7 representa a casa dos mil´esimos.
•
Distribui¸ c˜ ao Emp´ ırica Um gr´afico de distribui¸c˜ ao emp´ırica ´e util ´ para determinar a propor¸c˜ ao de valores que est˜ao abaixo de um n´umero particular. Para construir esse gr´afico, ´e necess´ ario ordenar os dados. Utilizaremos a fun¸c˜ ao plot() j´a vista anteriormente. Exemplo: Vamos esbo¸car este gr´afico para a vari´avel Renda Total Mensal do Domic´ılio (coluna 31). > # n´umero de observa¸ coes ~
´ CAP´ITULO 2. ESTAT´ISTICA DESCRITIVA E GRAFICOS
82 > > > > > > > + + + +
n <- length(dados[,31]) #vetor de propor¸c~ oes y <- (1: n)/n #ordenando a renda renda <- sort(dados[,31]) #esbo¸ cando o gr´afico plot(renda, y, type ="S", xlab ="Renda Total Mensal do Domic´ılio", ylab ="Probabilidade", main ="Distrib. Emp´ırica da Renda dos Domic´ılios")
Distrib. Empírica da Renda dos Domicílios .0 1
.8 0
e d a d lii b a b o r
P
6 . 0
.4 0
2 . 0
0 . 0
0
20000
40000
60000
80000
100000
120000
Renda Total Mensal do Domicílio
Figura 2.19 Se fosse tra¸cada uma reta para a renda R$10.000,00, atrav´ es desse gr´afico ver´ıamos que aproximadamente 90% dos dados estariam abaixo dele. Essa ´e a ideia de um gr´afico de distribui¸c˜ao emp´ırica.
´ 2.2. CRIANDO GR AFICOS COM O R
83
Vamos adicionar essas linhas ao gr´afico para uma melhor visualiza¸c˜ao.
Adicionando elementos ao gr´ afico Podemos adicionar pontos, linhas, curvas, textos e etc. ao gr´ afico para facilitar a visualiza¸ca˜o de algumas informa¸c˜ oes. Veremos a seguir como adicionar esses elementos. 1. Adicionando linhas ao gr´afico: No R, para adicionar linhas a um gr´ afico pronto, utiliza-se a fun¸ c˜ ao abline(). Os principais argumentos dessa fun¸c˜ao s˜ao: •
v – adiciona linhas verticais;
•
h – adiciona linhas horizontais;
•
col – vetor de cores para as linhas;
•
lty – tipo de linha;
•
lwd – espessura da linha.
Exemplo: Vamos adicionar linhas horizontais e verticais ao gr´afico anterior que facilitem a visualiza¸ca˜o da propor¸c˜ ao de domic´ılios com renda inferior a cinco e dez mil reais. > > > + > >
# ap´os ter esbo ¸ cado o gr´afico anterior # adicionando 2 linhas verticais e tracejadas abline(v = c(5000, 10000), col = c("tomato","blue"), lty = 2) # adicionando 2 linhas horizontais e pontilhadas abline(h = c(0.8, 0.9), col = "gray", lty = 3)
´ CAP´ITULO 2. ESTAT´ISTICA DESCRITIVA E GRAFICOS
84
Distrib. Empírica da Renda dos Domicílios 0 . 1
8 . 0
e d a d lii b a b o r
P
.6 0
.4 0
.2 0
0 . 0
0
20000
40000
60000
80000
100000
120000
Renda Total Mensal do Domicílio
Figura 2.20 As linhas tracejadas representam, respectivamente, renda igual a cinco e dez mil reais. Repare que a propor¸c˜ ao de domic´ılios com renda inferior a cinco mil reais ´e 80%. 2. Adicionando pontos ao gr´afico: No R, para adicionar pontos a um gr´ afico pronto, utiliza-se a fun¸c˜ao points(). Os principais argumentos dessa fun¸c˜ao s˜ao: •
x,y – coordenadas (x,y) para posi¸c˜ao do ponto;
•
col – cor do ponto;
•
pch – tipo do ponto.
Sintaxe: points(x,y,...)
´ 2.2. CRIANDO GR AFICOS COM O R
85
Exemplo: Vamos adicionar os pontos 5 e 10 mil ao gr´ afico de distribui¸c˜ ao emp´ ırica. > > > >
# ap´os ter esbo ¸ cado o gr´afico na se¸ cao ~ 5.6 # adicionando 2 pontos ao gr´afico points(5000,0.8, col = "blue", pch = 19) points(10000,0.9, col = "red", pch = 19)
Distrib. Empírica da Renda dos Domicílios 0 . 1
.8 0
e d a d lii b a b o r
P
.6 0
4 . 0
2 . 0
0 . 0
0
20000
40000
60000
80000
100000
120000
Renda Total Mensal do Domicílio
Figura 2.21
3. Adicionando textos ao gr´afico: No R, para adicionar textos a um gr´afico pronto, utiliza-se a fun¸c˜ao text(). Os principais argumentos dessa fun¸c˜ao s˜ao: • •
x,y – coordenadas (x,y) para posi¸c˜ao do texto; labels – texto a ser escrito;
•
pos – posi¸c˜ao do texto: 1 (abaixo), 2 (`a esquerda), 3 (acima) e 4 (` a direita).
´ CAP´ITULO 2. ESTAT´ISTICA DESCRITIVA E GRAFICOS
86 (default: centro); •
cex – tamanho do texto;
•
col – cor do texto.
Sintaxe: text(x,y, labels = , ...) Exemplo: Vamos adicionar ao gr´afico anterior, ao lado direito de cada ponto, os textos 5 mil e 10 mil. > > > >
# ap´os ter esbo ¸ cado o gr´afico anterior # adicionando 2 textos ao gr´afico text(5000,0.8, labels = "5 mil", col = "blue", pos = 4) text(10000,0.9, labels = "10 mil", col = "red", pos = 4)
Distrib. Empírica da Renda dos Domicílios .0 1
10 mil 8 . 0
e d a d lii b a b o r P
5 mil
6 . 0
4 . 0
.2 0
0 . 0
0
20000
40000
60000
80000
Renda Total Mensal do Domicílio
Figura 2.22
100000
120000
´ 2.2. CRIANDO GR AFICOS COM O R
87
4. Adicionando t´ıtulos ao gr´ afico: H´ a uma fun¸c˜ao no R que permite adicionar t´ıtulos a um gr´afico de outra maneira. Esta fun¸c˜ao permite alterar o tipo e a cor da fonte tanto dos eixos quanto do t´ıtulo principal. Assim, vocˆe pode criar um gr´ afico sem t´ıtulos e adicion´ a-los depois. Utilizamos a fun¸c˜ ao title().
Sintaxe: title(main = , xlab = , ylab = , ...) Os principais argumentos da fun¸c˜ao title() s˜ ao: •
main – t´ ıtulo principal;
•
font.main – tipo de fonte do t´ıtulo principal;
•
col.main – cor da fonte do t´ıtulo principal;
•
cex.main – tamanho do t´ıtulo principal;
•
xlab – texto do eixo x;
•
ylab – texto do eixo y;
•
font.lab – tipo de fonte do texto dos eixos x e y.
•
col.lab – cor da fonte do texto dos eixos x e y;
•
cex.lab – tamanho do texto dos eixos x e y.
Exemplo: Suponha o gr´afico 2.23 sem t´ıtulo e sem texto nos eixos. > # Gr´afico > plot(1:10, 1:10, xlab = "", ylab = "", pch = 19)
´ CAP´ITULO 2. ESTAT´ISTICA DESCRITIVA E GRAFICOS
88
0 1
8
6
4
2
2
4
6
8
10
Figura 2.23 Vamos adicionar ao gr´afico o t´ıtulo principal e textos nos eixos x e y. > # Adicionando t´ıtulo ao gr´ afico > title(main = "T´ıtulo do gr´ afico", + font.main = 8, + col.main = "blue", + xlab = "eixo x", ylab = "eixo y", + font.lab = 10, + col.lab = "red")
´ 2.2. CRIANDO GR AFICOS COM O R
89
Título do gráfico 0 1
8
y
6
o ix e
4
2
2
4
6
8
10
eixo x
Figura 2.24
5. Esbo¸cando retas A fun¸c˜ao lines() permite adicionar retas a um gr´afico pronto. Parecida com a fun¸c˜ ao points() vista anteriormente, a fun¸c˜ ao lines() tra¸ca retas entre os pontos informados.
Sintaxe: lines(x, y, ...) Os principais argumentos da fun¸c˜ao lines() s˜ ao: •
x,y – coordenadas (x,y) para os pontos;
•
type – tipo de linha que liga os pontos. (default = ”l”);
Exemplo: Utilizando um gr´afico j´a esbo¸cado, vamos adicionar uma reta nele.
´ CAP´ITULO 2. ESTAT´ISTICA DESCRITIVA E GRAFICOS
90
> # Gr´afico > plot(0:10, 0:10, pch = 19, main = "Gr´afico")
Gráfico
0 1
8
6
0 1 : 0
4
2
0
0
2
4
6
8
10
0:10
Figura 2.25
> # Adicionando 6 pontos que ser~ao ligados por uma linha > lines(c(0,2,4,6,8,10), c(1,4,2,8,9,4), type = "o")
´ 2.2. CRIANDO GR AFICOS COM O R
91
Gráfico
0 1
8
6
0 1 : 0
4
2
0
0
2
4
6
8
10
0:10
Figura 2.26 6. Esbo¸cando curvas ou express˜oes O R permite o esbo¸co de express˜oes atrav´ es da fun¸ c˜ao curve().
Sintaxe: curve(expr, from = , to = , add =, ...) Os principais argumentos da fun¸c˜ao curve() s˜ ao: •
expr – express˜ao a ser desenhada;
•
from – valor inicial;
• •
to – valor final; add – l´ogico: se TRUE esbo¸ca em um gr´afico j´a existente;
Exemplo: Utilizando um gr´afico j´a esbo¸cado, vamos adicionar nele uma express˜ao de
´ CAP´ITULO 2. ESTAT´ISTICA DESCRITIVA E GRAFICOS
92 uma fun¸c˜ao quadr´atica. > > > >
# Gr´afico plot(0:10, 0:10, pch = 19, main = "Gr´afico") # Adicionando a express~ao x^2 ao gr´afico curve(x^2, from = 0 , to = 10 , add = T, col = "blue")
Gráfico 0 1
8
6
0 1 : 0
4
2
0
0
2
4
6
8
10
0:10
Figura 2.27
M´ ultiplos Gr´ aficos No R, ´e poss´ıvel esbo¸ car diversos gr´aficos em uma janela ao mesmo tempo. Para isso, use a fun¸c˜ ao par().
´ 2.2. CRIANDO GR AFICOS COM O R
93
Sintaxe: par(mfrow = c(n´umero de linhas, n´umero de colunas) Exemplo: Vamos esbo¸car quatro gr´aficos (j´a feitos anteriormente nas se¸c˜oes anteriores) em uma s´o janela.
> # Exibe 4 gr´ aficos na tela: 2 linhas e 2 colunas > par(mfrow=c(2,2)) > #Gr´ afico 1 - Histograma > hist(galton$child, main = "Distribui¸ cao ~ da altura dos filhos", xlab = "Altura (cm)", col = "skyblue1", + border = "skyblue4") > #Gr´ afico 2 - Boxplot > boxplot(galton$parent, main = "Boxplot para a altura dos pais", ylab = "Altura (cm)", col = "seagreen3") > #Gr´ afico 3 - Pizza > prop <- table(kid.weights[,4]) > pie(prop, main = "Composi¸cao ~ por sexo", + labels = c("51.6%", "48.4%"), + col = c("palevioletred2", "dodgerblue3")) > #Gr´ afico 4 - Barras > renda <- tapply(dados[,31], dados[,2], mean) > barplot(renda, + names = c("BA","MG","RJ","SP","RS","DF"), + ylim = c(0,5000), + main = "Renda M´ edia por UF", + col = gray.colors(6))
´ CAP´ITULO 2. ESTAT´ISTICA DESCRITIVA E GRAFICOS
94
Distribuição da altura dos filhos
Boxplot para a altura dos pais 5 8 1
0 5 1 y c n e u q re F
) m (c a r u lt A
0 0 1
0 5
0 8 1 5 7 1 0 7 1 5 6 1
0
155 160 165 170 175 180 185 Altura (cm)
Composição por sexo
Renda Média por UF 0 0 0 5
51.6%
0 0 0 3
48.4%
0 0 0 1 0
BA
MG
RJ
SP
RS
DF
Figura 2.28 O preenchimento dos gr´aficos na tela ´e por linha. Observe que quanto maior o n´ umero de gr´aficos, pior pode ficar a visualiza¸ c˜ao dos mesmos.
˜ AO R E ESTAT´ISTICA DESCRITIVA 2.3. EXERC´ICIOS: INTRODU¸CAO
95
Exerc´ıcios: Introdu¸ c˜ ao ao R e Estat´ıstica Descritiva 1. Sobre a base de dados que ser´ a utilizada no exerc´ıcio: base_ipea.csv
Durante os meses de maio e junho de 2013, o Instituto de Pesquisa Econˆ
omica Apli-
cada(IPEA (2015)) realizou a pesquisa intitulada de“Tolerˆancia social `a violˆencia contra a mulher”. A pesquisa foi feita por amostragem, ou seja, foi selecionada uma parte da popula¸c˜ao do Brasil. A amostra ´e composta por 3810 indiv´ıduos de ambos os sexos. E abrange os munic´ıpios metropolitanos e n˜ ao-metropolitanos das cinco regi˜oes (Norte, Nordeste, Centro- Oeste, Sudeste e Sul). Na pesquisa, frases foram lidas para os entrevistados, que em seguida deveriam dizer se concordavam total ou parcialmente, ou se discordavam total ou parcialmente ou se nem concordavam nem discordavam (neutralidade).
Importante: a base de dados base_ipea.csv possui observa¸co˜es faltantes (NA). Assim, em algumas fun¸c˜oes para calcular estat´ısticas descritivas ser´ a necess´ario a inclus˜ ao do argumento na.rm = T para desconsiderar esses valores. Utilizando as fun¸c˜ oes vistas em sala:
(a) Defina o seu diret´orio de trabalho para o local onde se encontra a base de dados.
(b) Importe a base de dados base_ipea.csv para o R (que se encontra nesse endere¸co: “https://github.com/pedrocostaferreira/TSinR”).
(c) A base ´e composta por quantas linhas e colunas?
(d) Calcule a frequˆ encia de pessoas em cada regi˜ao do Brasil.
96
´ CAP´ITULO 2. ESTAT´ISTICA DESCRITIVA E GRAFICOS (e) Qual ´e a regi˜ ao mais frequente (moda)?
(f) Qual ´e a idade da pessoa mais nova nessa amostra? E da mais velha?
(g) Calcule a m´edia, a mediana e a moda para a vari´avel idade. A partir disso, o que vocˆ e pode dizer sobre a distribui¸ c˜ao dessa vari´avel (assim´etrica positiva, assim´etrica negativa ou sim´etrica)?
(h) Classifique as idades de acordo com as faixas et´ arias a seguir. (Crie uma nova coluna no data frame para essa classifica¸c˜ao). A amostra ´e composta de mais Jovens, Adultos ou Idosos? Idade (x) x ≤29 30 ≤ x ≤59 x ≥60
Faixa Et´aria Jovens Adultos Idosos
(i) Calcule a m´edia, a mediana, o primeiro quartil, o terceiro quartil e os valores m´aximo e m´ınimo para a vari´ avel “renda total de todos os moradores, parentes e agregados no ´ultimo mˆes”. Comente os resultados.
(j) Interprete o primeiro e o terceiro quartis encon trados no item anterior.
(k) Crie uma fun¸c˜ ao que calcule o coeficiente de varia¸c˜ao.
(l) Calcule o coeficiente de varia¸c˜ao para a vari´avel idade e renda. Compare os dois coeficientes de varia¸c˜ao.
(m) Calcule o desvio-padr˜ao para a renda de acordo com cada regi˜ao do Brasil. Qual ´e
˜ AO R E ESTAT´ISTICA DESCRITIVA 2.3. EXERC´ICIOS: INTRODU¸CAO
97
a regi˜ao que possui um comportamento mais homogˆeneo em rela¸c˜ao `a renda?
2. Crie um histograma para a vari´ avel “renda total de todos os moradores, parentes e agregados no ´ultimo mˆes”. Defina o t´ıtulo do gr´ afico como “Histograma para a renda total do domic´ılio” e o texto do eixo x como “Renda total do domic´ılio”. Baseado no gr´afico, vocˆ e conclui que a distribui¸c˜ao da vari´avel ´e assim´etrica positiva, assim´etrica negativa ou sim´etrica?
3. Crie um boxplot para a vari´ avel “n´ umero de moradores no domic´ılio, parentes e agregados”. (N˜ao se esque¸ca do t´ıtulo do gr´afico). Baseado no gr´afico, qual ´e o n´umero mediano de moradores no domic´ılio? H´ a outliers (valores extremos)? Se sim, a partir de qual valor um domic´ ılio ´e considerado com n´ umero de moradores extremos?
4. Crie um gr´afico de dispers˜ao (gr´afico de pontos) para as vari´aveis “renda total de todos os moradores, parentes e agregados no ´ultimo mˆes” e “renda total do chefe da fam´ılia no ´ poss´ıvel u ´ ltimo mˆes”. (N˜ ao esque¸ca de colocar o t´ıtulo principal e o texto nos eixos). E notar alguma rela¸c˜ao entre essas vari´aveis?
5. Crie uma tabela de frequˆencias para a vari´avel “sexo”. Fa¸ca o mesmo para a vari´avel “religi˜ao”.
6. Utilizando a tabela de frequˆencias para a vari´ avel “sexo”, crie um gr´afico de pizza para essa vari´avel. (N˜ao se esque¸ca do t´ıtulo do gr´ afico). Visualizando o gr´afico, esta amostra ´e composta por mais homens ou mulheres?
7. Utilizando a tabela de frequˆencias para a vari´avel “religi˜ao”, crie um gr´afico de barras para essa vari´avel. (N˜ao se esque¸ca do t´ıtulo do gr´ afico). Visualizando o gr´afico, qual ´e a religi˜ao mais frequente na amostra?
´ CAP´ITULO 2. ESTAT´ISTICA DESCRITIVA E GRAFICOS
98
8. Utilizando a fun¸c˜ao par(), esboce os dois ´ultimos gr´aficos na mesma janela.
9. Utilizando a fun¸c˜ao “rolldie( )”, que lan¸ca um dado de lados espec´ıficos quantas vezes o usu´ario quiser (instalar o pacote“prob”(Kerns e Kerns (2013))). Selecionamos um dado de 6 lados que ser´a rodado 2 vezes. Responda: (a) Qual a probabilidade do primeiro lan¸camento ser um n´umero par? (b) Qual a probabilidade de se tirar um n´ umero maior que quatro no primeiro lan¸camento e outro menor do que trˆ es no segundo? (c) Qual a probabilid ade da soma dos dois valores que se tirou ser maior do que 10?
10. Utilizando a fun¸c˜ao “cards( ) ”, que cria um baralho de 52 cartas (instalar o pacote “prob”): (a) Sabendo que se tirou um
´ qual a probabilidade dele ser de espadas? As,
(b) Sabendo que a carta ´e de copas, qual a probabilidade de ser um valete?
11. Para os itens abaixo, utili ze a base de dados“ex con.txt” (que se encontra nesse endere¸co: “https://github.com/pedrocostaferreira/TSinR”): (a) Qual a probabilid ade do entrevistado ser do sexo feminin o e n˜ao ser fumante? (b) Qual a probabilidade do entrevistado ser fumante ?
12. Considere que o evento seja lan¸ cado uma moeda n˜ao vic iada, 1.000 vezes. Qual a probabilidade de se tirar Cara?
13. Uma urna cont´em cinco bolas brancas (B) e sete vermelhas (V). Suponha que s˜ao sorteadas 1.000 bolas ao acaso, com reposi¸ca˜o. Qual a probabilidade de se tirar uma bola branca?
˜ AO R E ESTAT´ISTICA DESCRITIVA 2.3. EXERC´ICIOS: INTRODU¸CAO
99
14. Suponha que vocˆe est´ a em um game show, e ´e dada a op¸c˜ ao de trˆes portas: Atr´ as de uma das portas existe um carro; atr´ as dos outros, cabras. Vocˆe escolhe uma porta e o anfitri˜ao abre uma outra porta que tem uma cabra . Ele, ent˜ao, lhe diz: “Vocˆ e quer escolher outra porta ou manter a sua?”.
´ vantajoso realizar a troca? (Suponha que E
esse game show j´a ocorreu 1.000 vezes no passado)
100
´ CAP´ITULO 2. ESTAT´ISTICA DESCRITIVA E GRAFICOS
Parte II
An´ alise de S´ eries Temporais: Modelos Univariados
101
NAIVE, M´ edias M´ oveis e Modelo de Amortecimento Exponencial Diego Camillo Vilela de Almeida Pedro Costa Ferreira
[Em constru¸c˜ao]
104 CAP´ITULO 3.
´ ´ NAIVE, M EDIAS M OVEIS E MODELO DE AMORTECIMENTO EXPONENCIAL
Introdu¸ c˜ ao Este cap´ıtulo tem como objetivo apresentar algumas formas de suaviza¸c˜oes e previs˜oes utilizando o software R. Em cada se¸c˜ao abordaremos um modelo e explicaremos o que ele faz e quando deve ser usado. Veremos os modelos NAIVE (Ingˆ enuo), M´edia M´ ovel e tamb´ em alguns modelos de Amortecimento Exponencial. Ao final do cap´ıtulo, usaremos como exemplo os dados de carga da ONS (2015) para avaliar, dentre todos os modelos apresentados, qual seria o mais indicado para a s´erie temporal. Para constru¸c˜ao desse cap´ıtulo foi utilizado como base o livro de Morettin e Toloi (2006), e os pacotes forecast (Hyndman et al. (2012)), TTR (Ulrich et al. (2013)) e ggplot2 (Wickham et al. (2013)).
Modelo NAIVE O modelo NAIVE, tamb´ em conhecido como modelo ingˆenuo, ´e o modelo mais simples de previs˜ oes para uma s´erie temporal. A previs˜ao dele ´e igual ao valor da u ´ ltima observa¸c˜ao ou, quando h´a sazonalidade, a previs˜ao de um mˆes futuro ´e igual ao valor da ultima ´ observa¸ca˜o do mesmo mˆes. Este modelo ´e o modelo de referˆ encia para previs˜ oes pelo fato de n˜ao ter praticamente “nenhum custo”, ser r´apido e f´acil de preparar, embora n˜ao tenha muita precis˜ao. Em outras palavras, partimos normalmente do modelo NAIVE e s´ o trocamos para outro se for mais vantajoso (custo-benef´ıcio).
As equa¸co˜es utilizadas para estimar o valor futuro s˜ao essas:
E [Yt +1 | Yt ] = Yt
(sem sazonalidade)
E [Yt +12 | Yt ] = Yt
(com sazonalidade)
3.1. MODELO NAIVE
105
Como exemplo de aplica¸c˜ao no R, utilizaremos as fun¸c˜oes naive() e snaive() do pacote forecast (Hyndman et al. (2012)). Estimaremos o valor futuro das s´eries temporais gold e
wineind. A s´ erie temporal gold refere-se aos pre¸cos di´arios do ouro em d´olares americanos no per´ ıodo de 1 o de janeiro de 1985 a 31 de mar¸co de 1989 e a s´erie temporal wineind refere-se `as vendas totais australianas de vinho por fabricantes de vinho em garrafas de 1 litro ou menos no per´ıodo de jan/1980 a ago/1994. Os principais argumentos das fun¸c˜ oes naive() e snaive() s˜ ao: •
erie temporal que queremos prever (argumento obrigat´orio) ; x: s´
•
h: n´ umero de per´ıodos de previs˜ ao (default = 10);
•
level: n´ıvel de confian¸ ca para o intervalo de previs˜ao (default = c(80,95)).
Este modelo ´e um caso particular de m´edia m´ ovel, onde o tamanho da “janela” ´e igual a um. Para saber se ele ´e um bom modelo, verifica-se a acuracidade. Neste caso, o MAPE e o RMSE deram 0,7737 e 6,0712 respectivamente. Aparentemente, ´e um bom modelo, uma vez que as medidas de erro s˜ao pequenas. No entando, ´e importante verificar se existem modelos melhores. Em rela¸c˜ao a previs˜ao, o valor previsto para os pr´oximos dias foi 382,3 (o ´ ultimo valor observado). O modelo NAIVE ´e igual ao ARIMA(0,1,0) passeio aleat´orio.
> install.packages("forecast") > library("forecast") > summary(naive(gold,h=12))
Forecast method: Naive method Model Information: Series: x ARIMA(0,1,0) sigma^2 estim ated as 36.86:
log likel ihood=-3468.23
AIC=6938.46
BIC=6943.47
AICc=6938.46
Error measures: ME
RMSE
MAE
MPE
MAPE
106 CAP´ITULO 3.
´ ´ NAIVE, M EDIAS M OVEIS E MODELO DE AMORTECIMENTO EXPONENCIAL
Training set 0.06703449 6.071223 3.080662 0.01051411 0.7736669 MASE ACF1 Training set 1.001702 -0.306562 Forecasts: Point Forecast Lo 80 Hi 80 Lo 95 Hi 95 1109 382.3 374.5194 390.0806 370.4006 394.1994 1110 382.3 371.2966 393.3034 365.4717 399.1283 1111 382.3 368.8236 395.7764 361.6897 402.9103 1112 382.3 366.7388 397.8612 358.5012 406.0988 1113 382.3 364.9021 399.6979 355.6922 408.9078 1114 382.3 363.2415 401.3585 353.1526 411.4474 1115 382.3 361.7145 402.8855 350.8172 413.7828 1116 382.3 360.2932 404.3068 348.6435 415.9565 1117 382.3 358.9582 405.6418 346.6019 417.9981 1118 382.3 357.6956 406.9044 344.6709 419.9291 1119 382.3 356.4947 408.1053 342.8342 421.7658 1120 382.3 355.3473 409.2527 341.0793 423.5207
Na figura 3.1, vemos a s´erie temporal gold e suas previs˜oes. Ao utilizar a fun¸c˜ao plot() para esbo¸car a figura, repare que foi utilizado o argumentgo include para dar um zoom nas u ´ ltimas observa¸c˜oes.
> plot(naive(gold,h=12),include=200)
3.1. MODELO NAIVE
107
Forecasts from Naive method 0 4 4
0 2 4
0 0 4
0 8 3
0 6 3
0 4 3
950
1000
1050
1100
Figura 3.1 A figura 3.1 mostra que a previs˜ao para qualquer tempo futuro ´e igual ao u ´ ltimo valor observado e o intervalo de confian¸ca vai aumentando com o tempo. Esse modelo desperd i¸ca muita informa¸c˜ao, ignorando todas as observa¸c˜oes anteriores `a u ´ ltima. Por outro lado, ele se adapta mais r´apido a mudan¸ca de comportamento da s´erie.
J´ a com rela¸c˜ao `a s´erie temporal de venda de vinho (wineind ), a fun¸c˜ao snaive() ´e melhor do que a naive(), pois quando comparado a acur´ acia dos dois modelos, percebe-se que o MAPE e RMSE do modelo
snaive e´ menor. O modelo SNAIVE ´ e igual ao SARIMA
(0, 0, 0)(0, 1, 0)12 .
> summary(naive(wineind,h=12))
Forecast method: Naive method Model Information: Series: x ARIMA(0,1,0)
108 CAP´ITULO 3.
´ ´ NAIVE, M EDIAS M OVEIS E MODELO DE AMORTECIMENTO EXPONENCIAL
sigma^2 estima ted as 45850198: log likeli hood=-1791.89 AIC=3585.78 AICc=3585.81 BIC=3588.95 Error measures: ME RMSE MAE MPE MAPE MASE ACF1 Training set 46.97143 6771.277 4833.726 -3.913764 21.32904 2.456938 -0.3002302 Forecasts: Point Forecast Lo 80 Hi 80 Lo 95 Hi 95 Sep 1994 23356 14678.2588 32033.74 10084.5401 36627.46 Oct 1994 23356 11083.8207 35628.18 4587.3214 42124.68 Nov 1994 23356 8 325.7113 38386.29 369.1571 46342.84 Dec 1994 23356 6000.5176 40711.48 -3186.9199 49898.92 Jan 1995 23356 3951.9807 42760.02 -6319.8866 53031.89 Feb 1995 23356 2099.9619 44612.04 -9152.3050 55864.30 Mar 1995 23356 396.8548 46315.15 -11756.9825 58468.98 Apr 1995 23356 -1188.3587 47900.36 -14181.3573 60893.36 May 1995 23356 -2677.2237 49389.22 -16458.3798 63170.38 Jun 1995 23356 -4085.4272 50797.43 -18612.0413 65324.04 Jul 1995 23356 -5424.8117 52136.81 -20660.4530 67372.45 Aug 1995 23356 -6704.5774 53416.58 -22617.6858 69329.69
> summary(snaive(wineind,h=12))
Forecast method: Seasonal naive method Model Information: Series: x ARIMA(0,0,0)(0,1,0)[12] sigma^2 estim ated as 7259042: log likel ihood=-1528.12 AIC=3058.24 AICc=3058.27 BIC=3061.34 Error measures: ME RMSE MAE MPE MAPE MASE ACF1 Training set 355 .0122 26 94.261 1967 .378 0.8 684261 7.8 87751 1 0.08 275386 Forecasts: Point Forecast Lo 80 Hi 80 Lo 95 Hi 95 Sep 1994 22724 19271.17 26176.83 17443.346 28004.65 Oct 1994 28496 25043.17 31948.83 23215.346 33776.65
3.1. MODELO NAIVE Nov Dec Jan Feb Mar Apr May Jun Jul Aug
1994 1994 1995 1995 1995 1995 1995 1995 1995 1995
32857 37198 13652 22784 23565 26323 23779 27549 29660 23356
109 29404.17 33745.17 10199.17 19331.17 20112.17 22870.17 20326.17 24096.17 26207.17 19903.17
36309.83 40650.83 17104.83 26236.83 27017.83 29775.83 27231.83 31001.83 33112.83 26808.83
27576.346 31917.346 8371.346 17503.346 18284.346 21042.346 18498.346 22268.346 24379.346 18075.346
38137.65 42478.65 18932.65 28064.65 28845.65 31603.65 29059.65 32829.65 34940.65 28636.65
> plot(snaive(wineind))
Forecasts from Seasonal naive method
0 0 0 0 4
0 0 0 0 3
0 0 0 0 2
0 0 0 0 1
1980
1985
1990
1995
Figura 3.2
A figura 3.2 mostra que a previs˜ao para qualquer tempo futuro ´e igual ao u ´ ltimo ano, por exemplo, para qualquer janeiro futuro vai ser igual ao ´ ultimo valor de janeiro observado, e o intervalo de confian¸ ca vai aumentando com os anos . Esse mode lo n˜ao ´e influenciado por qualquer valor mais pr´oximo, mas sim pelo valor do mesmo mˆes mais pr´oximo. Mesmo aproveitando a informa¸c˜ao de um ano, o modelo ainda tem disperd´ıcio de informa¸c˜oes.
110 CAP´ITULO 3.
´ ´ NAIVE, M EDIAS M OVEIS E MODELO DE AMORTECIMENTO EXPONENCIAL
M´ edia M´ ovel Como o pr´oprio nome j´a diz, m´edia m´ ovel ´e uma m´edia que se movimenta, ou seja, todas as m´edias m´ oveis tˆem como padr˜ ao um intervalo de per´ıodo fixo (“janela”) onde para cada nova informa¸c˜ao que entrar, retira-se a mais antiga e recalcula-se a m´edia. Esse tipo de modelo possui o objetivo de suavizar a ST, obtendo uma medida de tendˆencia. As m´edias m´oveis mais conhecidas s˜ao: Simples, Ponderada e Centrada.
M´ edia M´ ovel Centrada Existem duas formas de calcul´a-la ao considerar o tamanho da “janela”: i. Quando n e´ impar, faz-se a m´edia de n observa¸ c˜oes consecutivas, colocando o resultado exatamente na posi¸c˜ao central:
Zt = (Yt −m + Yt −(m−1) + .... + Yt +(m−1) + Yt +m )/n Onde m = (n − 1)/2.
ii. Quando n e´ par, faz-se uma soma ponderada das n + 1 observa¸ c˜oes consecutivas, sendo que a primeira e a ´ultima observa¸c˜ao tˆem peso 1/(2n), as demais observa¸c˜ oes tˆem peso 1/(n).
O resultado tamb´ em ´e colocado exatamente na posi¸ ca˜o central.
Zt = (Yt −m /2 + (Yt −(m−1) + .... + Yt +(m−1) ) + Yt +m /2)/n Onde m = n/2.
Para calcular a m´edia m´ ovel centrada no R, usaremos a fun¸ca˜o ma() do pacote forecast. Suavizaremos a s´ erie temporal wineind.
´ ´ 3.2. M EDIA M OVEL
111
Os principais argumentos da fun¸c˜ao ma() s˜ao: •
x: s´ erie temporal que queremos suavizar (argumento obrigat´orio) ;
•
order: tamanho da “janela” (argumento obrigat´orio).
Lembre-se que o pacote forecast precisa estar instalado e carregado para usarmos a fun¸c˜ao. Vejamos a s´erie temporal wineind suavizada utilizando m´edia m´ovel centrada.
> mm_centrada_6 <- ma(wineind,order=6) > mm_centrada_12 <- ma(wineind,order=12) > summary(mm_centrada_6)
Min. 1st Qu. Median 18450 24010 25740
Mean 3rd Qu. 25530 26980
Max. 30730
NA
s 6 '
> summary(mm_centrada_12)
Min. 1st Qu. Median Mean 3rd Qu. Max. NA 21140 25010 25860 25620 26620 27810
s 12
'
Na figura 3.3 e´ poss´ıvel notar que quanto maior ´e a “janela”, mais suavizado ficar´ a a s´erie, e quanto menor ´e a “janela”, mais pr´ oximo da s´erie srcinal fica o ajuste. Observe tamb´ em que a amplitude ´e maior quando a “janela” ´e menor.
> > > >
plot(wineind) lines(mm_centrada_6,col="red",lty=5,lwd =2) lines(mm_centrada_12,col="blue",lty=1,lwd =3) legend('topleft', legend=c("wineind", "mm_centrada_6","mm_centrada_12"), bty = "n",col=c("black","red", "blue"), lty=c(1,5,1), cex=0.8, lwd =c(1,2,3))
112 CAP´ITULO 3.
´ ´ NAIVE, M EDIAS M OVEIS E MODELO DE AMORTECIMENTO EXPONENCIAL
wineind mm_centrada_6 mm_centrada_12 0 0 0 5 3
d in e in w
0 0 0 5 2
0 0 0 5 1
1980
1985
1990
1995
Time
Figura 3.3 Para obter uma s´ erie suavizada sem influˆ enica da sazonalidade, foi utilizada uma “janela” de tamanho 12. A figura 3.4 mostra uma forte tendˆ encia de crescimento entre os anos 1980 e 1987.
> plot(wineind) > mm_centrada_12 <- ma(wineind,order=12) > lines(mm_centrada_12,col="red")
´ ´ 3.2. M EDIA M OVEL
113
0 0 0 5 3
d n i e n i w
0 0 0 5 2
0 0 0 5 1
1980
1985
1990
1995
Time
Figura 3.4
M´ edia M´ ovel Simples Para calcular a m´edia m´ ovel simples, s´o ´e preciso fazer a m´edia aritm´etica das r observa¸ c˜oes mais recentes, ou seja:
Mt =
Zt + Zt −1 + · · · + Zt −r+1 r
ou
Mt = Mt −1 +
Z t − Zt −r r
Au ´ tima m´edia m´ ovel ´e a previs˜ ao para todos os valores futuros, isto ´e:
Zˆt (h) = Mt
∀h > 0
ou
Zˆt (h) = Zˆt −1 (h + 1) +
Z t − Zt −r r
∀h > 0
114 CAP´ITULO 3.
´ ´ NAIVE, M EDIAS M OVEIS E MODELO DE AMORTECIMENTO EXPONENCIAL
Para calcular a m´edia m´ ovel simples no R, usaremos a fun¸c˜ao a SMA() do pacote TTR. Vamos suavizar e prever a s´ erie temporal wineind, mas antes devemos instalar e carregar os pacotes que iremos utilizar:
> install.packages("TTR") > install.packages("forecast") > install.packages("ggplot2")
> library("TTR") > library("forecast")
Para n˜ao ter influˆ encia da sazonalidade da s´erie, vamos utilizar uma “janela” de tamanho 12.
> # z = S´ erie temporal > # r = Tamanho da "janela" > # l = N´ umero de passos a frente > > z <- win eind > l <- 12 > r <- 12
A fun¸c˜ao IC_MMS() retorna a previs˜ao do modelo com o intervalo de confian¸ca.
> IC_MMS <- function(z,r,l){ + smadf <- SMA(z,r) + IC_I <- rep(smadf[length(z)],l) - 1.96*sd(z)/sqrt(r) + IC_S <- rep(smadf[length(z)],l) + 1.96*sd(z)/sqrt(r) + Previsao <- rep(smadf[length(z)],l) + cbind(IC_I,Previsao,IC_S) + }
> IC_MMS(z,r,l)
IC_I Previsao IC_S [1,] 22973.4 25995.25 29017.1 [2,] 22973.4 25995.25 29017.1 [3,] 22973.4 25995.25 29017.1
´ ´ 3.2. M EDIA M OVEL [4,] [5,] [6,] [7,] [8,] [9,] [10,] [11,] [12,]
22973.4 22973.4 22973.4 22973.4 22973.4 22973.4 22973.4 22973.4 22973.4
25995.25 25995.25 25995.25 25995.25 25995.25 25995.25 25995.25 25995.25 25995.25
115 29017.1 29017.1 29017.1 29017.1 29017.1 29017.1 29017.1 29017.1 29017.1
Vamos criar o gr´afico da s´erie temporal com sua suaviza¸c˜ao, previs˜ao e intervalo de confian¸c˜ao de 95%.
> > > > > + + + + + + + +
library(ggplot2) a <- IC_MMS(z,r,l) b <- c(z,a[,2]) smadf <- SMA(z,r) grafico <- ggplot(data=data.frame(b))+ geom_line(aes(c(1:length(b)),b))+ geom_smooth(data=data.frame(a), aes(ymin = IC_I, ymax = IC_S,x = c((length(b)-l+1):length(b)), y = Previsao), stat="identity")+ geom_line(data=data.frame(a),aes(c((length(b)-l+1):length(b)),IC_S))+ geom_line(data=data.frame(a),aes(c((length(b)-l+1):length(b)),IC_I))+ geom_line(data = data.frame(smadf),aes(c(1:(length(b)-l)),smadf), na.rm = T,col="red")+ labs(title =" Previs~ao", x = "Tempo", y = "Dados")
> grafico
A figura 3.5 mostra a s´erie suavizada que come¸ca no 12 º mes. A previs˜ao para os meses futuros ´e 25995.25 (´ ultima m´ edia m´ ovel de um per´ıodo de 12 meses).
116 CAP´ITULO 3.
´ ´ NAIVE, M EDIAS M OVEIS E MODELO DE AMORTECIMENTO EXPONENCIAL Previsão
40000
30000 s o d a D
20000
0
50
100
150
Tempo
Figura 3.5
Modelos de suaviza¸c˜ ao exponencial Quando temos uma s´erie que n˜ao apresenta tendˆencia e nem sazonalidade, podemos utilizar a Suaviza¸ca˜o Exponencial Simples (SES) para fazer previs˜oes. J´a quando temos uma s´erie que apresenta tendˆencia, mas sem sazonalidade, podemos utilizar a Suaviza¸ca˜o Exponencial de Holt (SEH) para fazer previs˜oes. E quando temos uma s´erie que apresenta sazonalidade, podemos utilizar a Suaviza¸c˜ ao Exponencial de Holt-Winters (HW) para fazer previs˜ oes.
Modelos para s´ eries localmente constantes Suaviza¸ c˜ ao Exponencial Simples (SES) A SES d´a pesos maiores `as observa¸c˜oes mais recentes captando melhor as mudan¸cas de comportamento. A previs˜ao desse modelo ´e igual ao u ´ ltimo valor exponencial suavizado obtido. O estimador de SES ´e obtido atrav´ es da seguinte equa¸ c˜ ao:
˜ EXPONENCIAL 3.3. MODELOS DE SUAVIZA¸CAO
Zˆt = α Zt + (1 − α )Zˆt −1
0≤α
117
≤ 1 t = 1 , 2, · · · , N
Onde: Zt e´ o valor observado da s´ erie temporal Z no tempo t ; Zˆt ´e o valor exponencialmente suavizado no tempo t ;
ao. α e´ a constante de suaviza¸c˜ Para inicializar, assume-se:
Zˆ 0 = Z 1
A previs˜ao ´e dada por:
Zˆ N +h = Zˆ N
∀h > 0
A constante α minimiza a soma de quadrados de ajustamento. No R, podemos utilizar a fun¸c˜ao HoltWinters() do pacote forecast para fazer um SES. Lembre-se de instalar e carregar o pacote forecast para utilizar a fun¸c˜ao. Para exemplo vamos criar uma s´erie sem tendˆ encia e sem sazonalidade.
> serie = ts(runif(100,10,15),start = c(1915,1),frequency = 1)
Usando a fun¸c˜ao HoltWinters() e definindo os parˆametros β e γ como FALSE, descobrimos que o melhor valor para a constante α e´ 0,09225788, note que pelo fato de α estar mais pr´ oximo de 0 do que de 1 indica que a estimativa do n´ıvel tem pouca influˆ encia dos valores mais pr´oximos.
118 CAP´ITULO 3.
´ ´ NAIVE, M EDIAS M OVEIS E MODELO DE AMORTECIMENTO EXPONENCIAL
> ajuste<-HoltWinters(serie, beta=FALSE, gamma=FALSE) > ajuste
Holt-Winters exponential smoothing without trend and without seasonal component. Call: HoltWinters(x = serie, beta = FALSE, gamma = FALSE) Smoothing parameters: alpha: 0.09225788 beta : FALSE gamma: FALSE Coefficients: [,1] a 12.70608
O modelo encontrado foi:
Zˆt = 0 , 09Zt + 0, 91Zˆt −1
t = 1 , 2, · · · , N
Agora vamos dar uma olhada no gr´afico com a s´erie srcinal e a s´ erie prevista utilizando o modelo SES.
> plot(ajuste)
˜ EXPONENCIAL 3.3. MODELOS DE SUAVIZA¸CAO
119
Holt−Winters filtering 5 1
4 1 d te ti F / d e v r e s b O
3 1
2 1
1 1
0 1 1920
1940
1960
1980
2000
Time
Figura 3.6 Pela figura 3.6, podemos ver que a m´edia ´e mais ou menos constante em torno de 12,5. Com a fun¸c˜ao forecast.HoltWinters() podemos obter as previs˜oes do modelo SES com os seus respectivos intervalos de confian¸ca. Vamos plotar a s´erie srcinal com a previs˜ao para o pr´oximo ano (figura 3.7).
> previsao<-forecast.HoltWinters(ajuste,h = 1) > plot(previsao)
120 CAP´ITULO 3.
´ ´ NAIVE, M EDIAS M OVEIS E MODELO DE AMORTECIMENTO EXPONENCIAL
Forecasts from HoltWinters
5 1
4 1
3 1
2 1
1 1
0 1
1920
1940
1960
1980
2000
Figura 3.7 A previs˜ao ´e 12,70608 para qualquer tempo futuro, com o intervalo de confian¸ca aumentando. Caso a s´ erie tenha tendˆ encia ou sazonalidade, devemos usar outro modelo que suavize melhor. Continuaremos o estudo para uma s´erie com tendˆ encia, mas sem sazonalidade.
Modelos para s´ eries com tendˆ encia Suaviza¸ c˜ ao Exponencial de Holt (SEH) A SEH ajuda a evitar erros sistem´ aticos em que as previs˜oes s˜ao subestimadas ou superestimadas. A previs˜ao desse modelo ´e feita com o ´ultimo valor exponencial suavizado obtido adicionado de h vezes o ´ultimo valor da tendˆ encia obtido.
Os estimadores de SEH s˜ao obtidos atrav´ es das seguintes equa¸ c˜oes:
Zˆt = α Zt + (1 − α )(Zˆt −1 + Tˆt −1 ) Tˆt = β (Zˆ t − Zˆ t −1 ) + (1 − β )(Tˆt −1 )
Onde:
0≤α 0≤β
≤ 1 t = 3 , 4, · · · , N ≤ 1 t = 3, 4, · · · , N
˜ EXPONENCIAL 3.3. MODELOS DE SUAVIZA¸CAO
121
Zt e´ o valor observado da s´ erie temporal Z no tempo t ; Zˆt e´ o valor estimado do n´ıvel no tempo t ; Tˆt ´ e o valor estimado da tendˆencia no tempo t ;
α e β s˜ ao as constantes de suaviza¸c˜ao.
Para inicializar, partimos que:
Zˆ 2 = Z2 ;
Tˆ2 = Z 2 − Z1
A previs˜ao ´e dada por:
Zˆ N +h = Zˆ N + hTˆN
∀h > 0
As constantes α e β s˜ao as que juntas minimizam a soma de quadrados de ajustamento. No R, podemos utilizar a fun¸ c˜ao HoltWinters() do pacote forecast para fazer uma SEH. Lembre-se de instalar e carregar o pacote forecast para utilizar a fun¸c˜ao. Vamos utilizar como exemplo a s´erie airmiles que se refere `as milhas dos vˆoos dos passageiros pelas companhias a´ereas comerciais nos Estados Unidos. Os dados s˜ ao anuais de 1937 a 1960, logo n˜ao tem sazonalidade, mas h´a tendˆ encia. > airmiles
Time Series: Start = 1937 End = 1960 Frequency = 1 [1] 412 480 683 1052 1385 1418 1634 2178 3362 5948 6109 5981 [13] 6753 8003 105 66 125 28 14760 16769 19819 22362 25340 25343 29269 30514
122 CAP´ITULO 3.
´ ´ NAIVE, M EDIAS M OVEIS E MODELO DE AMORTECIMENTO EXPONENCIAL
Usando a fun¸c˜ ao HoltWinters() e definindo o parˆametro γ como FALSE, descobrimos que os melhores valores para as constantes α e β s˜ao, respectivamente, 0,8072 e 0,3895. Note que o fato de α estar mais pr´oximo de 1 do que de 0 indica que a estimativa do n´ıvel tem mais influˆ encia dos valores mais pr´ oximos, e β estar mais pr´oximo de 0 do que de 1 indica que a estimativa da tendˆ encia tem pouca influˆ encia dos valores mais pr´ oximos.
> ajuste_com_tendencia<-HoltWinters(airmiles, gamma=FALSE) > ajuste_com_tendencia
Holt-Winters exponential smoothing with trend and without seasonal component. Call: HoltWinters(x = airmiles, gamma = FALSE) Smoothing parameters: alpha: 0.8072924 beta : 0.3895832 gamma: FALSE Coefficients: [,1] a 30668.871 b 2100.563
O modelo encontrado foi:
Zˆt = 0 , 81Zt + 0, 19(Zˆt −1 + Tˆt −1 ) Tˆt = 0 , 39(Zˆt − Zˆt −1 ) + 0, 61(Tˆt −1 )
t = 3 , 4, · · · , N t = 3 , 4, · · · , N
Agora vamos dar uma olhada no gr´afico com a s´ erie srcinal e a SEH juntas.
> plot(airmiles) > lines(fitted(ajuste_com_tendencia)[,1],col="red",lty=2,lwd =3) > legend('topleft', legend=c("airmiles", "ajuste_com_tendencia"),bty = "n", col=c("black","red"), lty=c(1,2), cex=0.8,lwd =c(1,3))
˜ EXPONENCIAL 3.3. MODELOS DE SUAVIZA¸CAO
123
airmiles ajuste_com_tendencia
0 0 0 5 2
s e il rm i a
0 0 0 5 1
0 0 0 5 0
1940
1945
1950
1955
1960
Time
Figura 3.8 Pela figura 3.8 podemos ver que a suaviza¸c˜ao acompanha a tendˆ encia de crescimento da s´ erie original.
Com a fun¸c˜ao forecast.HoltWinters() podemos obter as previs˜oes do modelo SEH com os seus respectivos intervalos de confian¸ca. Vamos plotar a s´ erie original com as previs˜ oes ´ poss´ıvel ver a tendˆ para os pr´oximos dez anos. E encia de crescimento nas previs˜ oes (figura 3.9).
> previsao_com_tendencia<-forecast.HoltWinters(ajuste_com_tendencia) > plot(previsao_com_tendencia)
124 CAP´ITULO 3.
´ ´ NAIVE, M EDIAS M OVEIS E MODELO DE AMORTECIMENTO EXPONENCIAL
Forecasts from HoltWinters
0 0 0 0 5
0 0 0 0 3
0 0 0 0 1 0
1940
1945
1950
1955
1960
1965
1970
Figura 3.9 Caso a s´erie tenha sazonalidade, devemos utilizar um outro modelo que leve em conta essa componente. Veremos como fazer isso a seguir.
Modelos para s´ eries sazonais Suaviza¸ c˜ ao Exponencial de Holt-Winters (HW) O HW ajuda a descobrir padr˜ao de comportamento mais complexos. A previs˜ao desse modelo ´e feita de acordo com a s´ erie que pode ser Sazonal Aditiva ou Sazonal Multiplicativa. O m´etodo de Holt-Winters ´e baseado em trˆes equa¸ c˜ oes alisadoras diferentes para o n´ıvel, tendˆ encia e sazonalidade. O melhor modelo ´e o que tiver a menor soma de erros ao quadrado. Os estimadores de HW v˜ao depender do tipo do modelo (Aditivo ou Multiplicativo) e ser˜ ao obtidos por meio das seguintes equa¸c˜oes:
Modelo Aditivo
Zˆt = α (Zt − Fˆt −s ) + (1 − α )(Zˆt −1 + Tˆt −1 )
0≤α
≤ 1 t = s + 1, · · · , N
˜ EXPONENCIAL 3.3. MODELOS DE SUAVIZA¸CAO Tˆt = β (Zˆt − Zˆt −1 ) + (1 − β )(Tˆt −1 ) Fˆt = γ (Zt − Zˆt ) + (1 − γ )(Fˆt −s )
0≤β
125
≤ 1 t = s + 1, · · · , N
0≤γ≤1
t = s + 1, · · · , N
Modelo Multiplicativo
Zt Zˆt = α
Zˆt −1 + Tˆt −1 )
+ ( − α )( Fˆt −s
1
Tˆt = β (Zˆt − Zˆt −1 ) + (1 − β )(Tˆt −1 ) Fˆt = γ
Zt Zˆ t
0≤α 0≤β
≤ 1 t = s + 1, · · · , N
≤ 1 t = s + 1, · · · , N
+ (1 − γ )(Fˆt −s ) 0 ≤ γ ≤ 1 t = s + 1, · · · , N
Onde: Zt e´ o valor observado da s´ erie temporal Z no tempo t ; Zˆt e´ o valor estimado do n´ıvel no tempo t ; Tˆt ´ e o valor estimado da tendˆencia no tempo t ; Fˆt ´ e o valor estimado da sazonalidade no tempo t ;
α , β e γ s˜ ao as constantes de suaviza¸c˜ao.
Para inicializar, assume-se:
Zˆ s =
1 s
s
∑ Zk ;
Tˆs = 0;
Fˆ j =
k=1
Zj Zˆ s
;
j = 1 , 2, · · · , s
A equa¸c˜ao de previs˜ao tamb´ em ser´ a diferente para cada tipo de modelo:
Previs˜ ao para Modelo Aditivo
Zˆ N +h = Zˆ N + hTˆN + FˆN +h−s Zˆ N +h = Zˆ N + hTˆN + FˆN +h−2s
h = 1 , 2, · · · , s; h = s + 1, · · · , 2s;
126 CAP´ITULO 3.
´ ´ NAIVE, M EDIAS M OVEIS E MODELO DE AMORTECIMENTO EXPONENCIAL
etc .
Previs˜ ao para Modelo Multiplicativo
Zˆ N +h = ( Zˆ N + hTˆN )FˆN +h−s Zˆ N +h = ( Zˆ N + hTˆN )FˆN +h−2s
h = 1, 2, · · · , s; h = s + 1, · · · , 2s;
etc .
As constantes α , β e γ s˜ ao as que juntas minimizam a soma de quadrados de ajustamento. No R, podemos utilizar a fun¸c˜ao HoltWinters() do pacote forecast. Lembre-se de instalar e carregar o pacote forecast para utilizar a fun¸c˜ao. Vamos utilizar a s´erie temporal sazonal AirPassengers que registra mensalmente o total de passageiros internacionais (em milhares) da linha a´erea (Pan Am) no per´ıodo de janeiro de 1949 a dezembro 1960, nos EUA, que tem sazonalidade. > AirPassengers
1949 1950 1951 1952 1953 1954 1955 1956 1957 1958
Jan Feb Mar Apr May Jun Jul Aug Sep Oct Nov Dec 112 118 132 129 121 135 148 148 136 119 104 118 115 126 141 135 125 149 170 170 158 133 114 140 145 150 178 163 172 178 199 199 184 162 146 166 171 180 193 181 183 218 230 242 209 191 172 194 196 196 236 235 229 243 264 272 237 211 180 201 204 188 235 227 234 264 302 293 259 229 203 229 242 233 267 269 270 315 364 347 312 274 237 278 284 277 317 313 318 374 413 405 355 306 271 306 315 301 356 348 355 422 465 467 404 347 305 336 340 318 362 348 363 435 491 505 404 359 310 337
1959 1960 360 417 342 391 406 419 396 461 420 472 472 535 548 622 559 606 463 508 407 461 362 390 405 432
˜ EXPONENCIAL 3.3. MODELOS DE SUAVIZA¸CAO
127
Usando a fun¸c˜ao HoltWinters(), descobrimos que os melhores valores para as constantes α , β e γ s˜ao, respe ctivamente, 0,2479 ; 0,0345 e 1. Note que o fato de α estar mais pr´ oximo de 0 do que de 1 indica que a estimativa do n´ıvel tem pouca influˆ encia dos valores mais pr´oximos, e β estar mais pr´oximo de 0 do que de 1 indica que a estimativa da tendˆencia tem pouca influˆ encia dos valores mais pr´ oximos, e γ ser igual a 1 indica que a estimativa da sazonalidade tem muita influˆ encia do valor mais pr´ oximo.
> ajuste_com_sazonalidade<-HoltWinters(AirPassengers) > ajuste_com_sazonalidade
Holt-Winters exponential smoothing with trend and additive seasonal component. Call: HoltWinters(x = AirPassengers) Smoothing parameters: alpha: 0.2479595 beta : 0.03453373 gamma: 1
Coefficients: [,1] a 477.827781 b 3.127627 s1 -27.457685 s2 -54.692464 s3 -20.174608 s4 12.919120 s5 18.873607 s6 75.294426 s7 152.888368 s8 134.613464 s9 33.778349 s10 -18.379060 s11 -87.772408 s12 -45.827781
Agora vamos dar uma olhada no gr´afico com a s´ erie original e a HW juntas (figura 3.10).
128 CAP´ITULO 3.
´ ´ NAIVE, M EDIAS M OVEIS E MODELO DE AMORTECIMENTO EXPONENCIAL
> plot(AirPassengers) > lines(fitted(ajuste_com_sazonalidade)[,1],col="red",lty=2,lwd =3) > legend('topleft', legend=c("AirPassengers", "ajuste_com_sazonalidade"), bty = "n",col=c("black","red"), lty=c(1,2), cex=0.8,lwd =c(1,3))
0 0 6
AirPassengers ajuste_com_sazonalidade
0 0 5 s r e
g n e s s a P ri A
0 0 4 0 0 3 0 0 2 0 0 1
1950
1952
1954
1956
1958
1960
Time
Figura 3.10
Pela figura 3.10 podemos ver que a suaviza¸c˜ao acompanha bem a s´ erie srcinal.
Com a fun¸cao ˜ forecast.HoltWinters() podemos obter a previs˜oes do modelo HW com os seus respectivos intervalos de confian¸ca. Vamos plotar a s´ erie original com as previs˜ oes para os pr´oximos dois anos.
> previsao_com_sazonalidade<-forecast.HoltWinters(ajuste_com_sazonalidade) > plot(previsao_com_sazonalidade)
Podemos ver pelas previs˜oes a tendˆ encia de crescimento somado ao efeito sazonal (figura 3.11).
3.4. CARGA DE ENERGIA
129
Forecasts from HoltWinters
0 0 7 0 0 6 0 0 5 0 0 4 0 0 3 0 0 2 0 0 1
1950
1952
1954
1956
1958
1960
1962
Figura 3.11
Carga de Energia Nessa se¸c˜ao, utilizaremos a base de dados de Cargas de Energia para verificar e avaliar as previs˜oes de cada um dos modelos vistos nas se¸c˜oes anteriores. A base de dados se refere a carga de energia da regi˜ao sudeste medida em Megawatt m´edio (energia m´edia no intervalo de tempo considerado), de janeiro de 2005 a novembro de 2015, que ´e divulgada pelo Operador Nacional do Sistema El´etrico (ONS (2015)) e pode ser baixada em http://www.ons.org.br/ historico/. Al´ em da base de dados, ´e preciso instalar e carregar os pacotes forecast ,TTR.
Modelos NAIVE Usaremos o modelo NAIVE como ponto de partida por este ser o modelo mais simples de previs˜ao. Vamos obter previs˜oes considerando tamb´ em a sazonalidade (SNAIVE).
130 CAP´ITULO 3.
´ ´ NAIVE, M EDIAS M OVEIS E MODELO DE AMORTECIMENTO EXPONENCIAL
> plot(naive(carga,h=12),include=200)
Forecasts from Naive method 0 0 0 5 4
0 0 0 0 4
0 0 0 5 3
0 0 0 0 3
2006
2008
2010
2012
2014
2016
Figura 3.12
> plot(snaive(carga,h=12),include=200)
Forecasts from Seasonal naive method
0 0 0 0 4
0 0 0 5 3
0 0 0 0 3
2006
2008
2010
2012
Figura 3.13
2014
2016
3.4. CARGA DE ENERGIA
131
A figura 3.12 mostra as previs˜oes do modelo NAIVE, onde o valores das previs˜ oes s˜ao iguais ao ´ultimo valor observado. E a figura 3.13 mostra as previs˜oes do modelo SNAIVE que ´e igual aos valores do u ´ ltimo ano observado. Para comparar as previs˜oes dos dois modelos, utilizaremos as medidas de erros retornadas pela fun¸ c˜ ao accuracy(). > accuracy(naive(carga,h=12)) ME RMSE MAE MPE MAPE MASE ACF1 Training set 65.51746 1242.097 955.5496 0.1404334 2.839706 0.7681534 0.09983513 > accuracy(snaive(carga,h=12)) ME RMSE MAE MPE MAPE MASE ACF1 Training set 766 .8765 1525.65 1243.957 2.267856 3.746737 1 0.6246151
Considerando qualquer medida de erro acima, nota-se que o modelo NAIVE tem desempenho superior ao SNAIVE.
Modelos M´ edia M´ ovel Simples A fun¸c˜ao MAPE_MMS() calcula o MAPE (M´edia Percentual Absoluta do Erro) da s´erie segundo o tamanho da “janela” escolhido. J´a a fun¸c˜ao menor_MAPE_MMS() cria um vetor de MAPE para cada “janela” e retorna o tamanho da “janela” do menor MAPE e o seu respectiv o valor. > MAPE_MMS <- function(z,r){ + library(TTR) + if(r==1){ + accuracy(naive(z))[5] + }else{ + smadf <- NULL + smadf1 <- 0 + smadf <- SMA(z,r) # lag is 4 + smadf <- c(NA,smadf[-length(z)]) + smadf1 <- ((sum(abs((z-(smadf))/z),na.rm = T))/(length(z)-r))*100 + smadf1 + } + }
132 CAP´ITULO 3. > + + + + + + >
´ ´ NAIVE, M EDIAS M OVEIS E MODELO DE AMORTECIMENTO EXPONENCIAL
menor_MAPE_MMS <- function(z){ a <- NULL for(i in 1:(length(z)-1)){ a[i] <- MAPE_MMS(z,i) } paste0("r = ", which(a==min(a)) ,"; MAPE = ",min(a)) } menor_MAPE_MMS(carga)
[1] "r = 1; MAPE = 2.83970570043666"
Atrav´ es das fun¸ c˜oes utilizadas foi poss´ıvel ver que a “janela” que retorna o menor MAPE ´e igual 1, logo este modelo ficou igual ao do NAIVE.
Modelo de suaviza¸c˜ ao exponencial simples Usando a fun¸c˜ao HoltWinters() e definindo os parˆametros β e γ como FALSE, vamos estimar o valor de α do modelo de suaviza¸c˜ ao exponencial simples.
> ajuste<-HoltWinters(carga, beta=FALSE, gamma=FALSE) > ajuste
Holt-Winters exponential smoothing without trend and without seasonal component. Call: HoltWinters(x = carga, beta = FALSE, gamma = FALSE) Smoothing parameters: alpha: 0.9999339 beta : FALSE gamma: FALSE Coefficients: [,1] a 36346.67
O modelo de suaviza¸c˜ao exponencial simples estimou que o melhor valor da constante α´ e 0,9999339. Como α est´a mais pr´oxima de 1, significa que a estimativa do n´ıvel tem muita influˆ encia dos valores mais pr´ oximos. Se α fosse igual a 1 o resultado seria igual ao do NAIVE.
3.4. CARGA DE ENERGIA
133
A figura 3.14 mostra que o ajuste ´e muito parecido com a s´erie temporal srcinal, mas deslocada `a direita. E na figura 3.15 apresenta os valores das previs˜oes pr´oximo do ´ultimo valor observado, isto se deve ao fato do valor de α ser quase 1.
> plot(carga) > lines(fitted(ajuste)[,1],col="red",lty=2,lwd =3) > legend('topleft', legend=c("carga", "ajuste"),bty = "n", col=c("black","red"), lty=c(1,2), cex=0.8,lwd =c(1,3))
0 0 0 0 4
a g r a c
carga ajuste
0 0 0 6 3
0 0 0 2 3
0 0 0 8 2
2006
2008
2010
2012 Time
Figura 3.14
> previsao<-forecast.HoltWinters(ajuste,h = 12) > plot(previsao)
2014
2016
134 CAP´ITULO 3.
´ ´ NAIVE, M EDIAS M OVEIS E MODELO DE AMORTECIMENTO EXPONENCIAL
Forecasts from HoltWinters 0 0 0 5 4
0 0 0 0 4
0 0 0 5 3
0 0 0 0 3
2006
2008
2010
2012
2014
2016
Figura 3.15 As medidas de erro para o modelo de suaviza¸ c˜ ao exponencial simples podem ser vistas a seguir. O leitor pode ver que n˜ao diferem tanto das medidas de erro do modelo NAIVE, no entanto o NAIVE ainda se mostra superior ao considerar algumas casas decimais. Por isso, vamos rejeitar o modelo de suaviza¸c˜ao exponencial simples. > accuracy(previsao)
ME RMSE MAE MPE MAPE MASE ACF1 Training set 65.52197 1242.106 955.5625 0.2707527 2.848998 0.7635401 0.09989436
Modelo de suaviza¸c˜ ao exponencial de Holt Usando a fun¸ca˜o HoltWinters() e definindo o parˆametro γ como FALSE, vamos estimar os valores de α e β do modelo de suaviza¸c˜ao exponencial de Holt. > ajuste_com_tendencia<-HoltWinters(carga, gamma=FALSE) > ajuste_com_tendencia
Holt-Winters exponential smoothing with trend and without seasonal component.
3.4. CARGA DE ENERGIA
135
Call: HoltWinters(x = carga, gamma = FALSE) Smoothing parameters: alpha: 1 beta : 0.0217007 gamma: FALSE Coefficients: [,1] a 36346.65000 b 71.01239
O modelo de suaviza¸c˜ao exponencial de Holt obteve que o melhores valores das constantes α e β s˜ ao respectivamente 1 e 0,0217007. Como α e´ 1, significa que a estimativa do n´ıvel tem muita influˆ encia dos valores mais pr´ oximos, e como β est´a mais pr´oximo de 0 do que de 1, significa que a estimativa da tendˆ encia tem pouca influˆ encia dos valores mais pr´ oximos A figura 3.16 tamb´ em apresenta um ajuste semelhante a s´ erie temporal srcinal, mas deslocada `a direita e com uma leve tendˆencia de crescimento. A figura 3.17 confirma essa tendˆ encia mostrando um crescimento nos valores das previs˜ oes.
> plot(carga) > lines(fitted(ajuste_com_tendencia)[,1],col="red",lty=2,lwd =3) > legend('topleft', legend=c("carga", "ajuste_com_tendencia"),bty = "n", col=c("black","red"), lty=c(1,2), cex=0.8,lwd =c(1,3))
> previsao_com_tendencia<-forecast.HoltWinters(ajuste_com_tendencia)
> plot(previsao_com_tendencia)
136 CAP´ITULO 3.
0 0 0 0 4
a g r a c
´ ´ NAIVE, M EDIAS M OVEIS E MODELO DE AMORTECIMENTO EXPONENCIAL
carga ajuste_com_tendencia
0 0 0 6 3
0 0 0 2 3
0 0 0 8 2
2006
2008
2010
2012
2014
2016
Time
Figura 3.16
Forecasts from HoltWinters
0 0 0 0 5 0 0 0 5 4 0 0 0 0 4 0 0 0 5 3 0 0 0 0 3 0 0 0 5 2
2006
2008
2010
2012
2014
2016
2018
Figura 3.17 As medidas de erro para o modelo podem ser vistas a seguir e, em fun¸c˜ ao disso, podemos concluir que o NAIVE tamb´ em ´e superior ao modelo de suaviza¸ c˜ao exponencial de Holt.
> accuracy(previsao_com_tendencia)
3.4. CARGA DE ENERGIA
137
ME RMSE MAE MPE MAPE MASE Training set -151.5178 1270.648 973.5254 -0.4070975 2.898872 0.7717007 ACF1 Training set 0.1041723
Modelo de suavizamento exponencial de Holt-Winters Usando a fun¸c˜ ao HoltWinters() para estimar os valores de
α , β e γ do modelo de
suaviza¸c˜ao exponencial de Holt-Winters. > ajuste_com_sazonalidade<-HoltWinters(carga) > ajuste_com_sazonalidade
Holt-Winters exponential smoothing with trend and additive seasonal component. Call: HoltWinters(x = carga) Smoothing parameters: alpha: 0.7017808 beta : 0 gamma: 0.3810199 Coefficients: [,1] a 36389.88010 b 70.39175 s1 -333.68766 s2 906.15186 s3 1557.46867 s4 1154.22282 s5 -185.82945 s6 -1361.51817 s7 -1391.82830 s8 -1081.70732 s9 -116.93141 s10 377.06148 s11 569.82801 s12 -155.79775
O modelo de suavizamento exponencial de Holt-Winters obteve que o melhores valores das constantes α , β e γ s˜ ao respectivamente 0,7017808; 0 e 0,3810199. Como α est´a mais
138 CAP´ITULO 3.
´ ´ NAIVE, M EDIAS M OVEIS E MODELO DE AMORTECIMENTO EXPONENCIAL
pr´ oximo de 1 do que de 0, significa que a estimativa do n´ıvel tem muita influˆencia dos valores mais pr´oximos, e β e´ 0, significa que a estimativa da tendˆ encia tem nenhuma influˆ encia dos valores mais pr´oximos, e γ est´a mais pr´oximo de 0 do que de 1, significa que a estimativa da sazonalidade tem pouca influˆ encia dos valores mais pr´ oximos. A figura 3.18 acompanha bem a s´erie temporal srcinal e a figura
3.19 mostra que a
previs˜ ao teve influˆencia da parte sazonal, mas n˜ao teve nenhuma influˆ encia da tendˆencia.
> plot(carga) > lines(fitted(ajuste_com_sazonalidade)[,1],col="red",lty=2,lwd =3) > legend('topleft', legend=c("carga", "ajuste_com_sazonalidade"),bty = "n", col=c("black","red"), lty=c(1,2), cex=0.8,lwd =c(1,3))
0 0 0 0 4
a g r a c
carga ajuste_com_sazonalidade
0 0 0 6 3
0 0 2 3
0 0 0 8 2
2006
2008
2010
2012
2014
2016
Time
Figura 3.18
> previsao_com_sazonalidade<-forecast.HoltWinters(ajuste_com_sazonalidade)
> plot(previsao_com_sazonalidade)
˜ 3.5. CONSIDERA¸COES FINAIS
139
Forecasts from HoltWinters 0 0 0 5 4
0 0 0 0 4
0 0 0 5 3
0 0 0 0 3
2006
2008
2010
2012
2014
2016
2018
Figura 3.19 As medidas de erro para o modelo de suaviza¸ c˜ ao exponencial de Holt-Winters podem ser vistas a segui r. Ao compar´a-las com as medidas de erro do modelo NAIVE, podemos concluir que o modelo de suaviza¸c˜ ao exponencial de Holt-Winters tem desempenho superior. E, portanto, este ´e o modelo final escolhido.
> accuracy(previsao_com_sazonalidade)
ME RMSE MAE MPE MAPE MASE Training set -4.627181 989.136 735.557 -0.01617662 2.197516 0.5680164 ACF1 Training set 0.01496606
Considera¸ c˜ oes finais Neste cap´ıtulo foram vistos diversos modelos de suaviza¸ca˜o e previs˜ao. Cada um co m suas vantagens e desvantagens. Vimos que o modelo NAIVE ´e o modelo mais simples, mas muito utilizado como “ponto de partida”, onde s´o trocamos de modelo se a previs˜ao do outro modelo for melhor do que a dele. Foi apresentado o modelo de m´edia m´ovel centrada e simples
140 CAP´ITULO 3.
´ ´ NAIVE, M EDIAS M OVEIS E MODELO DE AMORTECIMENTO EXPONENCIAL
que suaviza a s´ erie de acordo com o tamanho da “janela”. Por ´ultimo foram apresentadas diferentes formas de amortecimento exponencial, onde levam em considera¸c˜ao se a s´erie temporal tem tendˆencia e/ou sazonalidade. Esse u ´ ltimo modelo ´e mais sofisticado por dar mais peso para os dados mais pr´oximos que em geral s˜ao informa¸c˜oes relevantes.
Processos N˜ ao-estacion´ arios Pedro Costa Ferreira Lucas Farias Lima
˜ ´ CAP´ITULO 4. PROCESSOS N AO-ESTACION ARIOS
142
Introdu¸ c˜ ao
No contexto deste livro, um processo estoc´astico ´e estacion´ ario se sua m´edia e variˆ ancia s˜ao constantes no tempo e sua autocovariˆancia depende apenas da ordem de defasagem
1
.
Posto formalmente, um processo {yt } e´ estacion´ario se:
E (yt ) = E (yt −s ) E [(yt )2 ] = E [(yt −s )2 ] E [(yt − µ )(yt −s − µ )] = E [(yt − j − µ )(yt − j−s − µ )]
para todo s e j e µ = E (yt )
Na pr´atica, isso significa que o processo n˜ao apresenta tendˆ encia aparente, e que tanto a varia¸c˜ao quanto o padr˜ao desta vari¸c˜ao s˜ao constantes ao longo do tempo. Isso sugere, portanto, que ´e poss´ıvel dizer, a partir da visualia¸ c˜ao de seu gr´afico no tempo, se uma s´erie aparenta se comportar de maneira estacion´aria.
Uma ferramenta que auxilia nessa etapa visual ´e o gr´ afico da fun¸c˜ao de autocorrela¸c˜ ao (FAC) da s´ erie. Um processo n˜ ao estacion´ario apresenta um lento decaimento de sua fun¸ c˜ ao de autocorrela¸ca˜o2 (Fig. 4.1).
1 2
Para maiores detalhes ver Hamilton (1994a) e Enders (2015). A prova ´e apresentada em Enders (2015) (p´ag. 60).
˜ 4.1. INTRODU C ¸ AO
143
.0 1
.6 0 F C A .2 0
.2 0 −
5
10
15
20
Lag
Figura 4.1: ACF de um processo n˜ao-estacion´ario Tal caracter´ıstica pode ser observada, por exemplo, na ´serie do ´Indice de Atividade Econˆ omica do Banco Central do Brasil, o IBC-BR, disponibilizado no pr´ oprio site do BC.
0 . 1 0 4 1 6 . 0 0 2 1
.2 0
0 0 1
2 . 0 −
2004
2006
2008
2010
2012
2014
0.5
1.0
1.5
Figura 4.2: IBC-Br (esq.) e sua FAC (dir.)
A an´alise visual da FAC (Fig. 4.2) sugere que a s´erie ´e n˜ ao estacion´aria. Por´ em, como inferimos a srcem da n˜ ao estacionariedade? Tal pergunta torna pertinente a observa¸ca˜o de que t˜ao importante quanto definir a existˆencia de n˜ ao estacionariedade, ´e sermos capazes de determinar sua causa. Nesse sentido, apresentaremos os testes estat´ısticos mais comuns dispon´ıveis no R, que em geral implementam testes de hip´oteses acerca da existˆencia de ra´ızes unit´ arias, propriedade que, grosso modo, faz com que uma s´erie acumule choques aleat´orios indefinidamente.
˜ ´ CAP´ITULO 4. PROCESSOS N AO-ESTACION ARIOS
144
N˜ ao obstante, vale ressaltar que quase em totalidade, os testes existentes assumem hip´oteses e apresentam limita¸c˜oes que tornam a an´alise de estaconariedade, em alguns casos, uma tarefa menos sistem´atica e mais investigativa. Uma instˆancia importante dos casos que apresentam complica¸c˜oes s˜ao aqueles onde a s´ erie apresenta quebras estruturais, o que impede a utiliza¸c˜ ao de testes tradicionais.
Vale lembrar que toda a teoria de s´eries temporais est´ a amparada sobre a de equa¸c˜ oes em diferen¸ca estoc´asticas, que ´e de fato de onde vem as condi¸c˜oes necess´arias e suficientes que nos permitem, a partir do resultado de uma estat´ıstica, inferir se a s´ erie em quest˜ ao ´e estacion´aria ou n˜ao. Ao leitor interessador sugerimos a leitura do cap´ıtulo 1 de Enders (2015).
Al´em disso, todos os c´ odigos R e dados utilizados para produ¸ca˜o deste cap´ıtulo est˜ ao dispon´ıveis em .
Assim, este cap´ıtulo est´ a organizado da seguinte maneira: na se¸ca˜o 2 abordamos os motivos mais comuns pelo qual uma s´erie ´e n˜ ao-estacion´aria. Na se¸c˜ao 3 apresentamos alternativas para tratar desses problemas. J´a na se¸c˜ao 4 apresentamos testes formais para identificar a estacionariedade estoc´astica. Na se¸c˜ao 5 abordamos o problema das quebras estruturais, baseado principalmente em Zeileis et al. (2001). E, finalmente, na se¸c˜ao 6 apresentamos um pequeno exemplo empregando algumas das t´ecnicas apresentadas.
Tipos de n˜ ao-estacionariedade Ainda que estacionariedade seja uma propriedade bem definida de uma s´erie temporal, o motivo pelo qual uma s´erie n˜ ao ´e estacion´ aria ´e um problema mais delicado, e sua inferˆ encia incorreta leva a s´erios erros de modelagem e previs˜ ao. Como visto em Enders (2015), (p´ag. 156), a presen¸ca de uma tendˆencia (determin´ıstica
˜ 4.2. TIPOS DE N AO-ESTACIONARIEDADE
145
ou estoc´astica) ´e o motivo mais comum pelo qual uma s´erie temporal ´e n˜ ao-estacion´aria.
Todavia, antes de abordar esses dois casos, ´e interessante apresentar o processo de ru´ıdo branco, que ´e formado por uma sequˆ encia de vari´ aveis aleat´orias que apresentam m´edia e covariˆ ancias nulas e variˆancia constante. Ou seja, se a sequˆencia {εt } e´ um ru´ıdo branco, ent˜ ao:
E (εt ) = 0 E [(εt )2 ] = σ 2 E [(εt − E (εt ))(εt −s − E (εt ))] = E [(εt εt −s )] = 0
Nesta se¸c˜ao, a parte estoc´astica dos modelos estacion´arios ser´a representada por um ru´ıdo branco, mas nada impede, que utilizemos um outro processo da forma A (L)εt , onde A (L) ´e uma fun¸ c˜ao polinomial do operador de defasagem L (i.e. Lyt = yt −1 ).
Chamamos de tendˆ encia-estacion´ ario um processo da seguinte forma:
yt = α + β t + εt
onde ε t e´ um ru´ ıdo branco.
Um processo desse tipo ´e n˜ ao-estacion´ario devido a presen¸ca da tendˆ encia determin´ıstica gerado pelo termo β t . Como veremos na se¸c˜ao seguinte, para tornar um processo desse tipo estacion´ario basta estimar o valor de β e subtrair a sequˆ encia βˆ t da s´ erie original.
Em contrapartida, um passeio aleat´orio ´e um processo composto pela soma de choques
˜ ´ CAP´ITULO 4. PROCESSOS N AO-ESTACION ARIOS
146
aleat´orios. que pode ser representada pela soma cumulativa de ru´ıdos brancos:
t
yt = α + ∑ εi i=1
Esse tipo de processo ´e o elemento b´asico de s´ eries temporais que apresentam tendˆ encias estoc´asticas, e pode se apresentar tamb´em com um termo de drift, que se traduz numa tendˆ encia determin´ıstica, mas que na realidade surge como se vˆe em Enders (2015), (p´ag. 159), da solu¸c˜ ao de uma equa¸c˜ ao em diferen¸cas estoc´asticas composta por um ru´ıdo branco e uma constante:
t
yt = α + γ t + ∑ εi i=1
Um passeio aleat´orio pode ainda apresentar um ru´ıdo:
t
yt = α + ∑ εt + ζt i=1
Juntos os processos representados pelas quatro equa¸c˜oes acima norteiam as an´alises de estacionariedade, pois, como de acordo com Cowpertwait e Metcalfe (2009), (p´ag. 221), o comportamento essencial de boa parte das s´ eries temporais p ode ser mimetizado p or suas simples estruturas.
Na Figuras 4.3 e 4.4 , vemos seus gr´aficos e respectivas FAC’s. 0 0 1
5 1
0 0 1
2
0 8 1
0 8
0 1
0 6 0 6
0
0 4
0 4
5 1 −
0 2
0 2 2 −
0
0
20
40
60
80
100
0
0
0
20
40
60
80
100
0
20
40
60
80
100
0
20
40
60
80
Figura 4.3: Ru´ıdo braco, passeio aleat´orio sem e com drift e tendˆ encia-estacion´ ario.
100
˜ E REMO¸CAO ˜ DE TEND ENCIA ˆ 4.3. DIFERENCIAC ¸ AO
147
.0 1
.0 1
.8 0
8 . 0
8 . 0
.6 0
.6 0
.6 0
4 . 0
.4 0
.4 0
.2 0
2 . 0
2 . 0
−
.0 0
.0 0
.0 0
2 . 0
2 . 0
2 . 0
.2 0
.1 0
.0 0
1 . 0
−
−
5
10
15
20
2 . 0
−
5
10
15
20
−
5
10
15
20
5
10
15
20
Figura 4.4: FAC’s dos processos da figura 2, respectivamente.
Os gr´aficos acima cont´ em algumas informa¸co˜es interessantes. De in´ıcio, dada a estacionariedade do processo de ru´ıdo branco, j´ a conhecemos (em contrapartida com a primera figura deste cap´ıtulo) ao que se assemelha a FAC de um processo estacion´ario. Obviamente, estamos olhando para um resultado ideal, mas geralmente buscamos encontrar, para processos estacion´arios, FAC’s com quedas muito r´apidas, sem padr˜oes sistem´aticos, ou sem nenhuma autucorrela¸ca˜o significativa.
Em seguida, verificamos que a presen¸ca de uma estacionariedade estoc´astica ou determin´ıstica tornam s´ eries temporais com ta´ıs caracter´ısticas indistingu´ıveis a` luz de sua visualiza¸c˜ao gr´afica e fun¸c˜ao de autocorrel¸c˜ao; os dois processo s˜ao muito semelhantes, e ainda que estejamos trabalhando com dados simulados, tal complica¸c˜ao ´e comum em estudos emp´ ıricos. Vemos na se¸c˜ao a seguir algumas de suas implica¸c˜ oes.
Resumindo: Um processo ´e n˜ao estacion´ario se apresenta tendˆ encia (determin´ıstica ou estoc´astica) ou quebras estruturais.
Diferencia¸ c˜ ao e Remo¸ c˜ ao de Tendˆ encia Na se¸ca˜o anterior, verificamos que a presen¸ca de tendˆ encias determin´ısticas ou estoc´ asticas geram processos bastante semelhantes. Todavia a maneira de tratar a n˜a estacionariedade em ambos os casos ´e diferente, e aplicar o m´etodo incorreto causa s´ erios danos a` informa¸c˜ ao contida na s´erie temporal, pois muda muito o processo resultante. Em particular, como se
˜ ´ CAP´ITULO 4. PROCESSOS N AO-ESTACION ARIOS
148
vˆe em Cowpertwait e Metcalfe (2009), (p´ag. 221), a diferencia¸ca˜o remove tanto tendˆ encias estoc´asticas quanto determin´ısticas.
Se diferenciamos um processo tendˆ encia estacion´ ario yt = α + β t + εt , obtemos ∆yt = β + εt − εt −1 . Que ´e um processo de m´ edia m´ovel MA (1) somado `a uma constante, que ´e
estacion´ario.
Todavia, a abordagem sugeridade na literatura ´e a de regredirmos os dados numa sequˆ encia representando o tempo e tomarmos o res´ıduo como nossa nova s´ erie temporal: e igualmente estacion´ ario, por´em preserva mais da estruyt = α + (β − βˆ )t + ζT . Tal processo ´ tura srcinal removendo apenas uma componente determin´ıstica.
Na Figura 4.5 vemos a simula¸c˜ao do processo tendˆ encia estacion´ aria srcinal e depois da remo¸c˜ao da tendˆ encia:
0 0 1 0 8
2 1
0 6 0 0 4 1 −
0 2
2 −
0 0
20
40
60
80
100
0
20
40
60
80
100
Figura 4.5
Todavia, para uma s´erie que apresenta n˜ ao estacionariedade devido a presen¸ca de uma raiz unit´aria, a remo¸c˜ao de tendˆ encia n˜ ao a torna estacion´aria. Por exemplo, se tomar mos um passeio aleat´orio puro: yt = α + ∑ti=1 εi , ou com drift (i.e. uma contante somada t vezes): yt = α + γ t + ∑ti=1 εi , e remover a tendˆ encia, obtemos:
˜ E REMO¸CAO ˜ DE TEND ENCIA ˆ 4.3. DIFERENCIAC ¸ AO
149
t
∆yt =
∑ εi − βˆ t i=1 t
∆yt = (γ − βˆ )t + ∑ εi i=1
que n˜ao s˜ao estacion´arios dado que continuamos com o passeio aleat´orio.
3
0 0 1
2
0 8 1 0 6
0
0 4
1 −
0 2
2 −
0 0
20
40
60
80
100
0
20
40
60
80
100
Figura 4.6
Na figura 4.6 est´a simulado um passeio aleat´orio com drift srcinal e ap´ os remo¸c˜ao de tendˆ encia. Visualmente corroboramos o resultado das equa¸c˜oes anteriores, dado que o processo resultante n˜ao parece ser t˜ao claramente estacion´ario quanto no caso da presen¸ ca de tendˆ encia determin´ıstica.
De fato, quando analisamos a FAC dos dois processos resultantes acima (Fig.
4.7),
vemos que no caso do passeio aleat´ orio com drift, por mais que a queda seja muito mais r´apida que no caso do processo srcinal, as correla¸ c˜oes iniciais (at´e 5ª defasasgem) continuam significativas, e existe um aparente comportamento sistem´ atico. Por outro lado, vem os que a remo¸ca˜o de tendˆ encia de um processo tendˆencia-estacion´ ario ´e exatamente o que buscamos em termos da FAC.
˜ ´ CAP´ITULO 4. PROCESSOS N AO-ESTACION ARIOS
150 .2 0
.8 0
.1 0
.4 0
0 . 0 0 . 0
.1 0 − 2 . 0 −
.4 0 −
5
10
15
5
10
15
20
Figura 4.7
Exatamente por tais ambiguidades, faz-se necess´ ario uma metodologia formal para a an´alise de estacionariedade. Na litera tura, os testes de hip´otese baseados na existˆ encia de ra´ızes unit´ aria s˜ao a abordagem padr˜ao.
Analisando os resultados dos mesmos procedimentos para a s´erie do IBC-Br da se¸c˜ ao anterior, temos: 6 2
4
1 2 0 2 −
2 −
6 −
4 −
0
20
40
60
80
100
120
2004
2006
2008
2010
2012
2014
2 . 0
.8 0
.1 0
.4 0
.0 0
0 . 0
.1 0 −
.4 0 −
5
10
15
20
0.5
1.0
1.5
Figura 4.8 De imediato verificamos que a remo¸ c˜ao de tendˆ encia n˜ ao torna a s´erie estacion´ aria.
4.4. TESTES FORMAIS
151
Todavia, mesmo diferenciada a s´erie apresenta truncagens incˆ omodas, o que se deve provavelmente `a forte sazonalidade da s´erie, pois ainda que a s´erie esteja dessazonalizda, parte desse comportamento pode continuar presente. A id´eia natural seria prosseguirmos a um teste de raiz unit´aria, mas n˜ao h´a como ignorar a forte queda ocorrido ao redor do ano de 2008 na s´erie.
Dizemos que um processo possui raiz unit´aria quando os choques aleat´orios que ocorrem s˜ao carregados indefinidamente. No caso do passeio aleat´ orio, vemos que o termo ∑ti=1 εi representa exatamente esse ac´ umulo de choques aleat´orios.
Dessa maneira, descontanto tendˆ encias determin´ısticas e quebras estruturais, assumimos que a n˜ao estacionariedade ´e gerada pela presen¸ ca de processos que possuem ra´ızes unit´arias.
Resumindo: Para processos de tendˆ encia determin´ıstica, a remo¸c˜ao da tendˆ encia ´e suficiente para obtermos um processo estacion´ario, enquanto que para processos com tendˆ encia estoc´ astica, necessitamos recorrer `a diferencia¸c˜ao.
Testes Formais O exemplo anterior ilustrou como a remo¸c˜ao da tendˆencia aplicada a um processo que possui raiz unit´aria n˜ao ´e o suficiente para obtermos uma s´ erie estacion´ aria. Todavia, a diferencia¸c˜ao da s´erie ´e uma transforma¸ c˜ ao forte do processo que se feito sem necessidade, induz a an´alises e modelagens equicovadas.
Todavia, a maior motiva¸c˜ao na detecc¸c˜ ao formal de ra´ızes unit´arias ´e a de utilizar os m´etodos adequados de modelagem; consequentemente determinando tamb´ em a ordem de integra¸ca˜o do processo (informa¸c˜ao muito importante, por exemplo, para an´alises de cointegra¸c˜ao). Em particular, o trabalho de Granger e Newbold (1974) mostrou como o uso de s´eries n˜ao estacion´arias pode resultar em regress˜oes lineares aparentemente muito bem ajustadas,
˜ ´ CAP´ITULO 4. PROCESSOS N AO-ESTACION ARIOS
152
mas que, para mencionar um dos problemas, possuem res´ıduos altamente correlacionados, o que viola as hip´oteses de testes de hip´oteses cl´assicos (e.g. testes t , F ou R2 ).
Como mencionamos, a maior parte dos testes de ra´ız unit´aria s˜ao testes de hip´otese, de maneira que em muitos dos casos estaremos comparando estat´ısticas que obtemos com valores cr´ıticos. Tais valores, em sua grande maioria, s˜ao obtidos pelo m´etodo de Monte Carlo, que, grosso modo, se resume na gera¸ c˜ao de cen´arios aleat´orios em grande n´umero afim de gerar intervalos de confian¸ca ou estimativas pontuais 3 .
Augmented Dickey-Fuller (ADF) O Dickey-Fuller aumentado ´e provavelmente o teste de hip´oteses para ra´ızes unit´ arias mais utilizado. Grosso modo, se tomarmos um processo da forma
yt = α + β yt −1 + εt , o obje-
tivo do teste ent˜ao ´e inferir se β = 1 .
O problema ´e que estimar o modelo linear acima sob a hip´ otese de n˜ao-estacionariedade nos faz incorrer no problema de regress˜ao esp´uria, e portanto ficamos impedidos de inferir o valor de β utilizando as estat´ısticas de testes usuais.
Dessa maneira, em Dickey e Fuller (1979a), os autores realizam o teste sob a s´erie diferenciada em trˆ es configura¸ c˜oes que possibilitam obter as estat´ısticas de testes adequadas, dado que em suas simula¸c˜ oes de Monte Carlo, notaram que a presen¸ca destes elementos alteram os valores cr´ ıticos obtidos.
Al´em disso, ainda que a s´erie seja diferenciada, sob a hip´ otese nula de existˆencia de raiz unit´aria, ainda ´e poss´ıvel que os res´ ıduos das regress˜ oes estejam correlacionados. Assim, adiciona-se o termo de m´edia m´ovel ∑ip 2 βi ∆yt +1 , o que gera o problema de determinar a =
quantidade de defasagens a incluir na regress˜ ao, o que geralmente se decide, como se vˆe em 3
Para mais detalhes ver Enders (2015), (p´ag. 175).
4.4. TESTES FORMAIS
153
Enders (2015), (p´ag. 193), a partir de crit´erios de informa¸ca˜o do tipo AIC e BIC/SBC
4
.
Portanto, as equa¸c˜oes do teste (geralmente referenciadas como ADF vers˜ ao 1, 2 e 3, respectivamente), s˜ao:
p
∆yt = γ yt −1 + ∑ βi ∆yt +1 + εt
(4.1)
∆yt = α + γ yt −1 + ∑ βi ∆yt +1 + εt
(4.2)
i=2 p i=2 p
∆yt = α + γ yt −1 + β t + ∑ βi ∆yt +1 + εt
(4.3)
i=2
Assim, escolhida a estrutura e quantidade p de defasagens adequadas `a s´erie de interesse, realiza-se o teste e confronta-se as estat´ısticas de testes obtidas com os valores cr´ıticos tabelados por Dickey e Fuller. Em particular, dado que o teste inclui a presen¸ca de componentes determin´ısticos, os autores fornecem tamb´ em as estat´ ısticas de testes conjuntas para avaliarmos se sob, a hip´otese de ra´ız unit´ aria, a estrutura que acreditamos seguir a s´erie ´e adequada, o que ´e u´til para o procedimento descrito no pr´oximo par´agrafo. Uma utiliza¸ca˜o direta da flexibilidade do teste ADF ´e a de permitir um estudo quase que exaustivo de um processo quando n˜ao conhecemos nada sob sua estrutura te´orica. Tal fato ´e traduzido no procedimento elaborado por Dolado, Jenkinson, e Sosvilla-Riveiro Doldado e Sosvilla-Rivero (1979).
Basicamente, o procedimento sugere iniciar os testes a partir do modelo irrestrito, contendo todas as componentes determin´ısticas, parando caso se conclua a n˜ao existˆencia de raiz unit´aria, e a cada etapa em que n˜ ao se rejeite a hip´otese nula, avalia-se a significˆancia do parˆ ametro do componente determin´ıstico sob a hip´ otese de raiz unit´aria, removendo se n˜ao for significante, passando-se ent˜ao ao teste mais restrito. 4
Akaike information criterion e Bayesian information criterion/Schwarz criterion, respectivamente).
˜ ´ CAP´ITULO 4. PROCESSOS N AO-ESTACION ARIOS
154
´ de igual importˆ ancia verificar as estat´ısticas F geradas pelo teste ADF. A Dica: E correta especifica¸c˜ao do processo a ser testado ´e crucial para a inferˆ encia com base no teste de hip´oteses.
Assim como todos os testes apresentados a seguir, o ADF que utilizaremos ´e parte do pacote Pfaff et al. (2016), e sua sintaxe ´e:
Sintaxe: ur.df(y, type = c(“none”, “drift”, “trend”), lags = 1, selectlags = c(“Fixed”, “AIC”, “BIC”)) O parˆametro type se refere `a componente determin´ıstica a ser incorporada da regress˜ ao do teste, lags e´ a quantidade m´axima de defasagens a se incluir na regresss˜ ao, e selectlags ´e o crit´ erio de informa¸c˜ao a ser utilizado para escolha da defasagem ´otima, baseada na entrada anterior.
Nos testes seguintes, a parametriza¸c˜ao segue a mesma estrutura, salvo os casos onde forem feitas observa¸c˜oes.
KPSS Um problema do teste ADF ´e seu pequeno poder estat´ıstico, que posto de maneira simples torna o teste praticamente incapaz de diferenciar uma s´erie com raiz unit´aria de uma com raiz ”quase” unit´aria, ou seja, criando um vi´ es para conclus˜ ao existˆ encia de raiz unit´ aria. Isso ´e um problema bastante s´ erio dado que corre¸ c˜ao para uma s´ erie n˜ ao estacion´aria ´e sua diferencia¸c˜ao, o que implica que se o teste falha, nos leva a diferenciar uma s´erie estacion´aria, nos levando a perder muita informa¸c˜ao a respeito do processo estudado.
Dentre os testes alternativos, o mais conhecido ´e KPSS elaborado por Kwiatkowski et al. (1992), que inverte a hip´otese nula do teste ADF (o que, rigorosamente, o torna um teste de
4.4. TESTES FORMAIS
155
estacionariedade). Altera¸ca˜o aparentemente simples mas que impacta fortemente a qualidade da inferˆ encia. O teste toma a forma:
yt = dt + rt + εt
onde:
dt e´ uma tendˆ encia determin´ıstica rt um passeio aleat´orio, e
εt um processo de erro estacion´ario.
Onde a hip´otese nula ´e que o termo rt e´ nulo. Assim como o ADF, o teste todavia necessita da defini¸c˜ao da existˆ encia de componentes determin´ısticos, assim como a defini¸ca˜o da quantidade de defasagens.
Sintaxe: ur.kpss(y, type = c(“mu”, “tau”), lags = c(“short”, “long”, “nil”), use.lag = NULL) Na sint´axe acima, o argumento type se define ”mu” para o teste com termo constante e ”tau” para o com tendˆ encia. Quanto ao parˆametro lags (n sendo o tamanho da amostra), ”short” adiciona defasagem.
×( / 4
4
n 100) defasagens, ”long” adiciona
4
12 × (n/100)
e ”nil” nenhuma
Phillips-Perron O teste de Phillips-Perron Phillips e Perron (1988) utiliza a mesma estrutura do teste DF (ADF sem o termo de m´edia m´ovel), todavia trata do problema de correla¸ c˜ao serial corrigindo a estat´ıstica de teste. Tais corre¸c˜oes usam uma corre¸c˜ao do tipo HAC, que em linhas gerais, normalizam a matriz de variˆancia e covariˆancia com base nos clusters de concentra¸ca˜o dessas medidas, alegadamente espurgando seus efeitos.
˜ ´ CAP´ITULO 4. PROCESSOS N AO-ESTACION ARIOS
156
Todavia, tal corre¸ca˜o tem suporte nas hip´oteses assint´oticas da s´erie, o que limita o uso adequado do teste para grandes amostras.
Sintaxe: r.pp(x, type = c(“Z-alpha”, “Z-tau”), model = c(“constant”, “trend”), lags = c(“short”, “long”), use.lag = NULL)
Aqui, o argumento type se as estat´ısticas de teste a serem computadas, ”Z-alpha” sendo para o modelo com constante e ”Z-tau” para o com tendˆencia. enquanto que o parˆ ametro model seleciona o modelo a ser testado, assim como no teste ADF, e
lags seleciona a quantidade
de defasagens de acordo com o tamanho da amostra, como no teste KPSS.
Resumindo: O teste de Phillips-Perron ´e mais indicado quando a amostra ´e muito grande ou se pode assumir que suas caracter´ısticas estruturais n˜ao se alteram ao longo de tempo.
Dickey Fuller-GLS (ERS) : Como observamos na se¸c˜ao sobre o teste ADF, seus dois problemas principais s˜ ao o baixo poder estat´ıstico, e sua sensibilidade a presen¸ca de termos determin´ısticos. Um problema de igual tamanho ´e a maneira adequada de tratar a presen¸ca destes termos nos testes.
O teste DF-GLS Elliott et al. (1992), assim como o ADF, solicita a especifica¸ c˜ao da quantidade m´axima de lags. E possui tamb´em duas formas, que em linhas gerais tamb´em adequam o este para a presen¸ca de uma tendˆ encia ou drift determin´ıstico. A diferen¸ ca ´e que a s´ erie passa por uma transforma¸ca˜o via MQG (M´ınimos Quadrados Generalizados), que, demonstram os autores, aumenta significativamente o poder estat´ıstico do teste.
4.4. TESTES FORMAIS
157
Na pr´atica, os termos de drift e tendˆ encia s˜ao estimados pelo m´etodo MQG e depois removidos da s´ erie. Dado que o m´etodo MQG ajusta a matriz de variˆ ancia e covariˆancia dos res´ ıduos para a presen¸ ca de correla¸c˜ao e heterocedasticidade, a transforma¸c˜ao proposta pelos autores faz uma pequena altera¸c˜ao na s´erie srcinal, de maneira que a remo¸c˜ao dos componentes determin´ısticos ocorre de forma local . Assim, ap´os a tranforma¸c˜ao, um teste padr˜ao do tipo ADF ´e realizado na s´erie resultante.
De acordo com os autores, esse procedimento aumenta siginificativamente o poder estat´ıstico do teste ADF
Sintaxe: ur.ers(y, type = c(“DF-GLS”, “P-test”), model = c(“constant”, “trend”), lag.max = 4)
Na sint´axe, o argumento type e´ definido ”DF-GLS”para realiza¸c˜ao do teste DF-GLS como descrito (i.e. s´ erie removida de tendˆ encia e sem intercepto), enquanto que ”P-test”corrige as estat´ısticas para presen¸ ca de correla¸c˜ao serial na regresse˜ao do teste, definida em um n´ umero m´aximo p elo argumento lag.max.
Dica: Todos os testes apresentados possuem default para todos os parˆ ametros exceto quanto ao tipo de componente determin´ıstica.
Zivot-Andrews : O teste de Zivot-Andrews, proposto em Zivot e Andrews (1999), busca testar a hip´otese nula de raiz unit´aria na presen¸ca de uma quebra estrutral nos parˆametros de n´ıvel, inclina¸ca˜o ou ambos . De acordo com os autores, a principal dife ren¸ca do teste para a abordagem de Phillips e Perron (1988) ´e endogeneizar a quebra sob a hip´ otese nula, o que permite a correta
˜ ´ CAP´ITULO 4. PROCESSOS N AO-ESTACION ARIOS
158
inferˆ encia da mudan¸ca de parˆametro sob a presen¸ca de raiz unit´aria; o exato motivo pelos quais os outros testes s˜ao inadequados.
O teste se baseia no menor valor da estat´ıstica t do teste ADF, de maneira que uma quebra existiria onde h´a menos evidˆ encia da hip´ otese nula de raiz unit´aria.
Vale observar portanto que, diferente dos outros testes, o parˆ ametro model se refere onde se acredita ocorrer a quebra:
Sintaxe: ur.za(y, model = c(“intercept”, “trend”, “both”), lag=NULL) Como veremos na pr´oxima se¸c˜ao, h´a motivos para acreditarmos que a s´erie do IBC-Br que apresentamos no in´ıcio do cap´ıtulo apresente uma quebra estrutural, e sob essa hip´ otese, dentre os testes de raiz unit´aria que apresentamos, o Zivot-Andrews ´e o u ´ nico adequado. Assim, analisemos os resultados do teste:
> ibcts_za<- ur.za(ibcts) > summary(ibcts_za)
################################ # Zivot-Andrews Unit Root Test # ################################
Call: lm(formula = testmat) Residuals: Min 1Q Median -4.2817 -0.5174 0.0977
3Q 0.6311
Max 2.2671
Coefficients: Estimate Std. Error t value Pr(>|t|) (Intercept) y.l1 trend du
11.02833 0.89103 0.05088 -0.87398
3.62846 3.039 0.00287 ** 0.03681 2 4.208 < 2e-16 *** 0.01644 3.094 0.00242 ** 0.37080 -2.357 0.01994 *
4.5. QUEBRAS ESTRUTURAIS --Signif. codes:
159
0 ‘***’ 0.001 ‘**’ 0.0 1 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1
Residual standard error: 0.9766 on 128 degrees of freedom (1 observation deleted due to missingness) Multiple R-squared: 0.9958, Adjusted R-squared: 0.9957 F-statistic: 1.0 09e+04 on 3 and 128 DF, p-value: < 2.2e-16
Teststatistic: -2.9606 Critical values: 0.01= -5.34 0.05= -4.8 0.1= -4.58 Potential break point at position: 69
O alto valor da estat´ıstica de teste (em valor absoluto) sugere n˜ao-rejei¸c˜ao da hip´otese nula; de que o processo ´e um passeio aleat´orio e o comportamento at´ıpico observado ´e apenas um choque aleat´orio, de natureza end´ogena.
Quebras Estruturais O problema de quebras estruturais ´e importante por si pr´opio; muitas vezes a determina¸c˜ao de uma quebra corrobora a hip´otese de que um determinado fato ou acontecimento tenha mudado a estrutura de alguma vari´avel econˆomica, por exemplo.
Todavia, no ˆambito da an´alise de estaconariedade, a presen¸ca de uma quebra estrutural viola hip´oteses na maioria dos testes de raiz unit´aria. Todavia, antes de pensar em corrigir tal problema, enfrentamos outro t˜ao dif´ıcil quanto: definir se de fato h´ a uma quebra estrutural.
Neste processo, o conhecimento do pesquisador acerca da s´erie em quest˜ ao e dos contextos relevantes a ela s˜ao important´ıssimos, pois mais interessante do que inferir que a hip´ otese de quebra se justifica estatisticamente ´e poder suport´a-la sob uma justificativa que trate do processo gerador.
˜ ´ CAP´ITULO 4. PROCESSOS N AO-ESTACION ARIOS
160
Principais Testes para Quebras Estruturais Na literatura, um dos primeiros esfor¸cos na detec¸c˜ ao de quebras estruturais se encontra em Chow (1960), que em linhas gerais propˆos a compara¸c˜ ao dos res´ıduos de um modelo onde se calcula duas regress˜oes, separadas pelo momento em que acredita ter ocorrido a quebra (equivalente a um modelo irrestrito) com os res´ıduos de um modelo de apenas uma regress˜ao para todo o per´ıodo (modelo restrito). A estatistica de teste ´e portanto da forma de uma F : F=
uˆT uˆ − uˆTR uˆ R T uˆR uˆ R /(n − 2k)
(4.4)
Assim, na Eq. 4.5.1 uˆ s˜ao os res´ıduos do modelo irrestrito, uˆR os do modelo restrito, n e´ o tamanho da amostra e k o n´ umero de parˆametros estimados. A limita¸c˜ao do teste ´e
a necessidade de se conhecer o momento da quebra. Todavia, existem testes baseados nesta mesma estat´ıstica que contornam essa limita¸ca˜ o. Uma das possibilidades ´e o c´alculo de (4) para v´arios per´ıodos dentro de uma janela, como sugere e implementa Zeileis et al. (2001) no pacote strucchange (assim como o restante dos testes da se¸c˜ao):
Fstats(formula, from = 0.15, to = NULL, data = list())
O teste naturalmente necessita da especifica¸ c˜ao de um modelo (parˆametro formula), que pode ser definido, por exemplo, com uma n´ alise do tipo Box-Jenkins. Pode-se informar o intervalo de c´alculo (parˆametro from) da estat´ıstica. O valor padr˜ao ´e de 15% da amostra5 . J´ a o parˆametro data permite apontar a base de dados a ser utililizada, caso n˜
ao se queira
carreg´ a-la fora da fun¸ca˜o.
5 caso se queira definir um intervalo especifico, pode-se utilizar em conjunto o parˆ ametro to, nesse caso informa-se a data inicial e final
4.5. QUEBRAS ESTRUTURAIS
161
Outra ferramenta s˜ao os testes de flutua¸ c˜ao emp´ ırica (em inglˆes empirical fluctuation process (efp)) que se baseiam no m´etodo apresentado originalmente em R. L. Brown J. Durbin (1975). A proposta ´e inferir sobre a estabilidade dos parˆ ametros a partir do comportamento da soma cumulativa (Eq. 4.5) dos res´ıduos recursivos normalizados6 de um modelo que descreva o processo adequadamente.
e f p (s) =
|ns|
1
∑ε σ ( ) ˆ
n
(4.5)
ˆt
t =1
De acordo com Zeileis et al. (2001), sob a hip´otese nula de estabilidade do processo de soma cumulativa (i.e. ausˆ encia de quebra estrutural), o teorema do limite central implica que sua m´edia n˜ ao deve divergir de zero. Assim, com base no processo de flutua¸ c˜ao escolhido, s˜ao estabelecidos limites superiores e inferiores para a oscila¸ c˜ao do processo, de maneira que h´ a evidˆ encias de quebra estrutural caso a flutua¸ca˜o emp´ırica extrapole tais limites.
Sua sintaxe, assim como a da fun¸c˜ ao breakpoints, necessita da especifica¸c˜ao da estrutura do processo seguido pela s´ erie atrav´ es do argumento formula (e.g. ARMA(1,1)) e da janela para as somas sucessivas, pelo parˆ ametro h.
Sintaxe: efp(formula, data, type = ”Rec-CUSUM”, h = 0.15, dynamic = FALSE, rescale = TRUE) No restante da sint´axe, o parˆametro dynamic permite a inclus˜ao de defasagens na regress˜ ao, enquanto que rescale permite a normaliza¸c˜ ao dos res´ıduos de acordo com a subamostra da regress˜ao (default TRUE ) ou com toda a amostra ( FALSE).
Voltando a s´ erie do IBC-Br, dado contexto em que a economia mundial foi inserida a partir de 2008, temos motivos pra acreditar a queda ocorrida naquele ano tenha sido uma que6
res´ıduos da estimativa da observa¸ c˜ ao k feita com base na amostra at´ e k − 1 dividios por σˆ o tamanho da amostra.
( ), onde n
n ´e
˜ ´ CAP´ITULO 4. PROCESSOS N AO-ESTACION ARIOS
162
bra estrutural, o que significaria dizer que, ap´os a crise financeira de 2008, o processo gerador do PIB (dado que o IBC-Br ´e utilizado como sua proxy), e consequentemente a estrutura da economia brasileira, foram afetadas por aquele evento. Todavia, visualmente nada ´e conclusivo, dado que apesar da queda o processo parece voltar ao seu trajeto srcinal a partir de 2011.
N˜ ao obstante, na Fig.
4.9 realizamos o teste de flutua¸c˜ao emp´ ırica para a s´erie dife-
renciada7 , tomando como parˆametro um modelo AR( 1). O gr´afico mostra que a fun¸c˜ao n˜ao extrapola os limites estabelecidos para o processo definido como referˆencia8 . Assim, dado que a hip´otese nula ´e a de estabilidade do processo de flutua¸c˜ao emp´ ırico e o p-valor ´e bastante alto, conclui-se que a s´erie n˜ ao apresenta quebra estrutural com base nesse teste.
Recursive CUSUM test s s e c ro p n o ti a u t c u fl l a c rii p m E
3 2 1 0 1 −
3 − 2004
2006
2008
2010
2012
2014
Time
Figura 4.9
Recursive CUSUM test S = 0.89088, p-value = 0.07555
Outra abordagem , baseada em Bai e Perron (2003), busca datar as quebras estruturais existentes num processo atrav´ es de um algor´ıtmo de programa¸ c˜ao dinˆamica que minimiza a soma dos res´ıduos quadr´ aticos. 7 Como o teste ´e realizados sob res´ıduos de uma regress˜ ao linear, o ideal ´e buscar garantir que os dados utilizados s˜ ao estacion´ arios 8 Soma cumulativa dos res´ıduos recursicos (Rec-CUSUM)
4.5. QUEBRAS ESTRUTURAIS
163
A fun¸ca˜o necessita que seja definida a estrutura que se acredita o processo seguir, assim como uma janela de intervalos de busca (argumento
h), geralmente estipulada entre 10% e
15% do tamanho da amostra. Al´em disso, caso o n´umero de quebras n˜ao seja desconhecido, pode-se utilizar um crit´erio de informa¸ca˜o (sendo o default BIC), para definir um n´ umero ´otimo de quebras a partir de um m´aximo, atrav´ es do argumento breaks:
Sintaxe: breakpoints(formula, h = 0.15, breaks = NULL, data = list(), ...) Para deixar a explica¸c˜ ao mais clara, simulemos um passeio aleat´orio com drift ao qual dobramos a m´edia temporal a partir da metade da s´erie (Fig. 4.10):
0 5 1
0 0 1
0 5
0
0
20
40
60
80
100
Figura 4.10
Agora, plotemos sua fun¸c˜ao de flutua¸c˜ ao CUSUM, e o gr´afico resultante da fun¸c˜ao bre1
akpoints; ambos gerados tomando como argumento de formula um processo unit´aria, em primera diferen¸ca (Fig 4.11):
AR( ) de raiz
˜ ´ CAP´ITULO 4. PROCESSOS N AO-ESTACION ARIOS
164
Recursive CUSUM test
0 5 8 6 −
3
BIC and Residual Sum of Squares BIC RSS
2
1 0 5 9 6 −
0
1 − 2 − 0 5 0 7 −
3 −
0.0
0.2
0.4
0.6
0.8
1.0
0123456
Figura 4.11
Como esper´avamos, exatamente no ponto onde onde a m´edia do processo dobra, h´a o rompimento da banda superior para o processo de flutua¸ c˜ao escolhido. Todavia, observamos que o processo segue fora do limite superior, muito provavelmente devido sua natureza n˜ ao estacion´aria, que tende fazer com que seus momentos estat´ısticos cres¸cam ao longo do tempo; logo, alterando consistentemente os parˆametros do processo.
O gr´afico da fun¸c˜ao breakpoints mostra no eixo das coordenadas a soma dos res´ıduos quadrados (RSS, do inglˆes residual sum of squares ) e o crit´erio de informa¸ ca˜o bayesiano (BIC) contra o n´umero de quabras no eixo das ordenadas. Em teoria, ambos os valores apresentam seu m´ınimo para o n´ umero de quebras ´otimo contidos na s´erie. Os dois valores n˜ ao v˜ao sempre coincidir, mas como mostraram Bai e Perron (2003), o crit´ erio BIC n˜ ao ´e t˜ ao confi´avel para modelos autoregressivos, sendo nesses casos o aconselh´ avel se basear na soma dos res´ıduos quadrados em conjunto com as evidˆencias de quebras de outros testes; uma vez que esse sempre ´e realizado sob a hip´ otese de existˆencia.
Para a s´erie simulada, o crit´erio BIC tem seu m´ınimo para uma quebra, enquanto que para a RSS este est´a entre 1 e 5 9
9
. Todavia, dado que a s´erie ´e n˜ ao estacion´aria, e sabemos
para melhor visualiza¸ca˜o, omitimos os valores do gr´afico para 6 quebras, que aumentam acima dos valores de 0 quebras.
4.5. QUEBRAS ESTRUTURAIS
165
que inserimos uma quebra, as outras 4 se devem ` as oscila¸c˜ oes abruptas, comuns a passeios aleat´orios.
Outras implementa¸co˜es e varia¸c˜oes dos testes acima podem ser encontrados no mesmo pacote. Todavia, como alerta Kleiber e Zeileis (2008), (p´ag. 173), tal variedade de testes pode se tornar um problema ao inv´ es de uma solu¸c˜ao, e o conhecimento a priori da natureza do processo e sua hist´oria s˜ao de grande aux´ılio na sele¸ c˜ao da metodologia adequada.
Decomposi¸ c˜ ao de Hodrick-Prescott (Filtro HP) Uma ferramenta muito utilizada na inferˆ encia de componentes estruturais baseada na decomposi¸c˜ao de uma s´erie temporal ´e o filtro de Hodrick-Prescott, apresentado no artigo Hodrick e Prescott (1997). A proposta da decomposi¸c˜ao ´e a remo¸c˜ao das flutua¸c˜oes c´ıclicas de uma s´erie temporal, tal suaviza¸ c˜ao resultaria numa s´erie temporal que representa as flutua¸c˜oes de longo prazo mais evidentemente que as de curto.
Como visto em Enders (2015), nesta metologia se assume que a s´ erie temporal observada ´e composta por uma tendˆencia {µt } e um elemento estacion´aria yt − µt . A partir da´ı, aplicamos a minimiza¸c˜ao de erros quadr´aticos para obter os parˆametros do seguinte modelo:
1 T
T
λ
T −1
∑ (yt − µt )2 + T ∑ [(µt +1 − µt ) − (µt − µt −1 )]2
i=1
i=2
Para fins did´aticos, consideremos a s´erie temporal do Indicador de Atividade Econˆomica do IBC-Br do Banco Central do Brasil (Fig 4.2), que ´e tido como uma proxy para o PIB do pa´ıs.
Como a proposta do filtro HP ´e expurgar oscila¸c˜oes de curto prazo, deixando restar apenas a tendˆencia de longo prazo da s´ erie srcinal, pode-se argumentar que aplicado `a s´erie
˜ ´ CAP´ITULO 4. PROCESSOS N AO-ESTACION ARIOS
166
do IBC-Br, o filtro sugere qual comportamento segue do produto potencial da economia. De fato, quando observamos a Figura 4.12, observamos que a tendˆencia de longo prazo da s´erie (linha vermelha), sugere que, tudo mais contasntante, o PIB do pa´ıs tende a crescer.
Al´em disso, observamos as oscila¸c˜oes ocorridas na s´erie no per´ıodo apresentado, com maior destaque para a grande queda observado em 2008, per´ıodo em se sentiram os choques da crise financeira internacional. Hodrick−Prescott Filter of log(ibcts) 0 . 5
log(ibcts)
trend
8 . 4
6 . 4
2004
2006
2008
2010
2012
2014
Cyclical component (deviations from trend)
0 0 . 0
4 0 . 0 −
2004
2006
2008
2010
2012
2014
Figura 4.12
Todavia, como alerta Enders (2015), ´e necess´ ario precau¸c˜ao na aplica¸c˜ ao do filtro, dado que, por suavizar a tendˆ encia da s´ erie, o filtro pode apresentar flutua¸c˜oes na parte irregular do processo que de fato n˜ ao existem. Al´em disso, French (2001) afirma que o filtro possui resultados mais confi´aveis quando aplicado a processos com ordem de integra¸ca˜o 2 e os ru´ıdos no processo tem distribui¸c˜ao aproximadamente normal. Resulta que os testes ADF e KPSS nos sugerem que a s´erie ´e n˜ ao-estacion´ aria, enquanto que o teste de Phillips-P erron e DF-GLS sugerem estacio nariedade. Todavia, se de fato h´a uma quebra estrutural, n˜ao podemos inferir nada utilizando os testes apresentados, dados que isso viola suas hip´oteses.
Todavia, sobra ainda a evidˆ encia de que a FAC da s´erie removida de tendˆ encia n˜ ao se assemelha ao de um processo estacion´ario. Ao final, vemos que, como dito no in´ıcio do cap´ıtulo, a an´ alise de estacionariedade neste caso se torna uma tarefa mais investigativa, n˜ ao
4.5. QUEBRAS ESTRUTURAIS
167
sendo poss´ıvel chegar a uma conclus˜ ao de maneira sistem´atica, analisando os resultados dos testes de hip´oteses.
168
˜ ´ CAP´ITULO 4. PROCESSOS N AO-ESTACION ARIOS
Modelos SARIMA ( p, d , q)(P, D, Q)12 Pedro Costa Ferreira Daiane Marcolino de Mattos
CAP´ITULO 5.
170
MODELOS SARIMA ( P, D, Q)(P, D, Q)12
Introdu¸ c˜ ao Este cap´ıtulo ´e dedicado a apresenta¸ c˜ao do modelo SARIMA. Para tal, fez-se uso da s´erie temporal (ST) de vendas de passagens a´ereas, mais conhecida como Air Passengers . Trata-se de uma s´erie temporal mensal que registra o total de passageiros internacionais (em milhares) da linha a´erea (Pan Am) no per´ıodo de janeiro de 1949 a dezembro 1960, nos EUA (Box e Jenkins (1976)).
A ST de vendas de passagens a´ereas ´e um exemplo cl´ assico de representa¸c˜ao da modelagem de Box e Jenkins (1970) e a estrutura que “melhor” representa essa ST ´e um modelo SARIMA(0,1,1)(0,1,1)12 . Dado a fama obtida p or esse modelo, ´e equivalente dizer que uma ST segue um SARIMA(0,1,1)(0,1,1)12 ou um modelo Airline.
Ao longo desse cap´ıtulo discutiremos as caracter´ısticas dessa ST e os passos para model´ ala utilizando o software R, discutindo quais s˜ao os poss´ıveis pacotes disponibilizados pelo programa. Conforme observaremos, essa ´e uma s´erie temporal n˜ao estacion´aria nas partes sazonal e n˜ao sazonal e na variˆancia. Aprenderemos a identificar essas caracter´ısticas e qual ´e a maneira adequada de corrig´ı-las para fazermos uso da metodologia proposta por Box & Jenkins.
Ao ler esse cap´ıtulo, pretende-se que o leitor esteja apto a modelar uma ST “n˜ ao complexa”, seguindo a proposta de Box & Jenkins, utilizando o software R. Para atingir tal objetivo, al´em dessa introdu¸ca˜o, esse cap´ıtulo est´ a organizado da seguinte forma: na se¸c˜ ao 2, entitulada Preliminares, vamos definir o nosso diret´ orio de trabalho e comentar sobre os pacotes que precisamos instalar para estimarmos e analisarmos de maneira correta o modelo SARIMA. Na se¸c˜ ao 3, vamos explorar a ST de vendas de passagens a´ereas observando sua tendˆ encia, variˆ ancia e padr˜ao sazonal. Na se¸c˜ao 4, vamos aprofundar o nosso conhecimento sobre a ST que estamos trabalhando e discutir quais s˜ao os procedimentos que devemos adotar
5.2. PRELIMINARES
171
para model´a-la. Na se¸c˜ao 5, baseando-se no ciclo iterativo proposto por Box e Jenkins (1970), iremos modelar a nossa ST e prevˆ e-la 12 passos a` frente. Na se¸c˜ao 6, mostraremos como exportar as previs˜oes para arquivos .xlsx e .csv e por fim, na se¸c˜ao 7, faremos as considera¸c˜oes finais.
Preliminares Defini¸ c˜ ao do diret´ orio Primeiramente, ´e preciso definir no R o diret´orio de trabalho. Isso ´e feito com a fun¸ca˜o setwd() como se segue.
> setwd("digitar o endere¸ co neste espa¸ co")
Instala¸ c˜ ao dos pacotes necess´ arios O pr´oximo passo ´e instalar alguns pacotes do R utilizando a fun¸c˜ ao install.packages(). Entre parˆ enteses vem o nome do pacote entre aspas. O leitor deve digitar o seguinte no console: – install.packages(”urca”) - Unit root and cointegration tests for time series data
(Pfaff
(2005)). – install.packages(”TSA”) - Time Series Analysis (Chan e Ripley (2012a)). – install.packages(”forecast”) - Forecasting Functions for Time Series and Linear Models (Hyndman et al. (2012)). – install.packages(”lmtest”) - Testing Linear Regression Models ((Hothorn et al. , 2014)). – install.packages(”normtest”) - Tests for Normality (Gavrilov et al. (2014)). – install.packages(”FinTS”) - Companion to Tsay (2005) Analysis of Financial Time Series (Graves (2012)). – install.packages(”xlsx”) - Read, write, format Excel 2007 and Excel 97/2000/XP/2003 files (Dragulescu et al. (2012)).
CAP´ITULO 5.
172
MODELOS SARIMA ( P, D, Q)(P, D, Q)12
Ap´ os a instala¸c˜ao, ´e preciso usar a fun¸ c˜ao require() para carregar os pacotes, mas faremos isso ao longo do texto para que fique claro para o leitor em quais pontos estamos usando os pacotes.
An´ alise Explorat´ oria da ST AirPassengers Leitura da ST no R Leitura da ST no R Por ser uma ST conhecida, o
R j´a a disponibiliza na sua base de dados, tornando-se
muito f´acil a sua leitura. Basta executar o seguinte comando:
> data(AirPassengers)
Ap´ os ler a ST, vamos plot´a-la.
> ts.plot(AirPassengers)
s r e
g n e s s a rP i A
0 0 5
0 0 3
0 0 1
1950
1952
1954
1956
1958
1960
Time
Observando o gr´afico da ST de vendas de passagens a´ereas podemos perceber que h´a uma tendˆ encia crescente do n´ umero de passageiros. As oscila¸c˜oes de picos e vales podem ser relacionadas `as esta¸c˜oes do ano, nas quais, mais especificamente, temos per´ıodos de f´ erias, feriados, etc. Essas oscila¸c˜oes, como observadas, acontecem anualmente, o que nos faz acreditar
´ ´ 5.3. AN ALISE EXPLORATORIA DA ST AIRPASSENGERS
173
que h´a presen¸ca de sazonalidade. Do come¸co do ano a outubro percebemos um comportamento crescente, seguido de um comportamento decrescente da s´erie. Isso se repete todo ano.
Nesse sentido, apenas observando o gr´afico podemos “levantar” as seguintes hip´oteses sobre essa ST: •
Tendˆ encia: parece haver aumento do n´umero de passageiros transportados ao longo dos anos pela Pam Am. Coerente com a teoria econˆomica pois espera-se que ao longo do tempo a empresa cres¸ca e, consequentemente aumente as vendas de passagens a´ereas.
•
Variˆ ancia: observa-se que, al´em do aumento do n´umero de passagens vendidas, a distˆancia entre os meses com maiores e menores vendas tamb´ em est´ a aumentando, indicando aumento da variˆancia. Fato este tamb´ em coerente com a teoria econˆomica pois ao aumentar o volume de vendas, espera-se maiores oscila¸c˜oes em rela¸ca˜o ao valor m´edio.
•
Sazonalidade: verifica-se um comportamento sazonal das vendas de passagens a´ereas. Isto ´e, nos meses de mar¸co (feriado de P´ascoa) e julho (Dia da Independˆ encia e f´erias escolares) h´a um aumento nas vendas quando comparado com os meses anteriores. Al´ em disso, parece que a ´e crescente ao longo do tempo.
Observe que a an´alise gr´afica nos permitiu conhecer a nossa ST e ´e uma fase muito importante para esse tipo de modelagem. Obviamente, como bom econometricistas que somos, iremos testar estatisticamente todas os pontos levantados anteriormente. Antes disso, vamos tentar entender um pouco mais o comportamento sazonal da nossa ST.
Uma an´ alise um pouco mais profunda da sazonalidade O gr´afico monthplot ajuda a detectar visualmente a presen¸ca de sazonalidade na ST. Como se pode verificar, esta ST apresenta a m´edia e a variˆancia n˜ao constantes, ind´ıcios de
CAP´ITULO 5.
174
MODELOS SARIMA ( P, D, Q)(P, D, Q)12
n˜ao estacionariedade na parte sazonal da ST.
Observando o gr´afico, podemos ver que o n´umero m´edio de passageiros (tra¸cos horizontais) aumenta nos meses de f´erias (ind´ıcio de sazonalidade). Analisando os tra¸cos verticais, verifica-se um aumento cont´ınuo na venda de passagens a´ereas ano a ano, ind´ıcio de n˜ ao estacionariedade na parte sazonal da S´ erie Temporal.
> monthplot(AirPassengers)
rs e g n e s s a P ri A
0 0 5
0 0 3
0 0 1
J
FM
AMJ
J
ASO
ND
Decomposi¸ c˜ ao da ST Por fim, seguindo a decomposi¸c˜ao cl´assica, decomp˜oe-se a ST utilizando filtros de m´edias m´oveis em trˆes componentes principais:
- tendˆ encia + ciclo - sazonalidade - res´ıduo (componente irregular, inova¸ c˜ao)
> plot(decompose(AirPassengers))
´ ´ 5.3. AN ALISE EXPLORATORIA DA ST AIRPASSENGERS
175
Decomposition of additive time series d e v r e s b o
0 0 5 0 0 3 0 0 1 0 5 4
d e rtn
0 5 3 0 5 2 0 5 1
l a n o s a e s
m o d n a r
0 4
0 0 4 − 0 6
0 2 0
0 4 − 1950
1952
1954
1956
1958
1960
Time
Conforme observado no gr´afico da ST, verifica-se que o n´ umero m´ınimo de passagens vendidas foi de 104 (Nov-1949) e o m´ aximo de 622 (Jul- 1960). Ao observar o componente de tendˆ encia, observa-se que a ST ´e fortemente afetada por esse componente (em torno de 85%). Com rela¸c˜ao ao componente sazonal, verifica-se que o mesmo tamb´ em est´a presente nessa ST e gira em torno de 10%. Sobrando uma pequena parte de componen te irregular, o qual ´e levemente “contaminado” pela parte sazonal, mostrando que m´etodo de decomposi¸ c˜ ao utilizado n˜ao ´e muito eficiente.
Essa an´alise ´e interessante pois mostra que, basicamente, precisamos modelar as componentes de tendˆ encia e sazonalidade (em torno de 95% da ST), componentes “bem” modelados pelos modelos SARIMA(p,d,q)(P,D,Q). Este fato mostra porque essa ST ´e t˜ao utilizada para exemplificar o uso dessa metodologia.
CAP´ITULO 5.
176
MODELOS SARIMA ( P, D, Q)(P, D, Q)12
Prosseguindo, nosso pr´oximo passo ser´a testar estatisticamente as percep¸c˜oes levantadas anteriomente. Isto ´e, a ST de vendas de passagens a´ereas ´e realmente n˜ ao estacion´aria na parte n˜ao sazonal? A ST de vendas de passagens a´ereas ´e realmente n˜ ao estacion´aria na parte sazonal? Como faremos para “corrigir” esses “problemas”?
Conhecendo a ST antes de iniciar a modelagem BJ Para responder aos questionamentos feitos na se¸ c˜ao anterior, iremos abordar os dois t´opicos: 1. Testar a estacion ariedade da parte n˜ao sazonal 2. Testar a estacionar iedade da parte sazonal
Testando a estacionariedade da parte n˜ ao sazonal H´ a, basicamente, quatro maneiras de observar se a ST em estudo ´e ou n˜ao estacion´aria: •
An´ alise gr´afica;
• •
Comparar a m´edia e a variˆ ancia em diferentes per´ıodos de tempo da ST; Observar a FAC (Fun¸ c˜ao de Autocorrela¸c˜ao);
•
Testes de Raiz Unit´aria. J´ a vimos que a an´alise gr´afica nos mostrou ind´ıcios de n˜ ao estacionariedade. Fica claro
tamb´ em que, se “fati´ assemos” a ST e calcul´assemos as m´edias de cada ano, observar´ıamos uma tendˆ encia de alta nas m´edias, indicando n˜ ao estacionariedade das mesmas.
Outra maneira de ver a n˜ ao estacionariedade da ST ´e visualizando o gr´ afico da FAC. A figura a seguir mostra que as autocorrela¸co˜es plotadas pela FAC n˜ao decrescem exponencialmente ou de forma senoidal conforme descrito pela teoria de 1
mais um indicativo de que a ST ´e n˜ao estacion´aria . 1
O pacote TSA permite excluir o lag zero da FAC.
Box e Jenkins (1970). Esse ´e
5.4. CONHECENDO A ST ANTES DE IN ICIAR A MODELAGEM BJ
177
> require(TSA) > acf(AirPassengers, lag.max = 36, drop.lag.0 = T)
Series AirPassengers
6 . 0 F C A .2 0
2 . 0
−
0.0
0.5
1.0
1.5
2.0
2.5
3.0
Lag
Nesse momento, o leitor atento pode estar se fazendo a seguinte pergunta: Para que tantas maneiras de se observar a estacion´ariedade, se ao observar o gr´ afico da ST j´a est´a claro que a mesma ´e n˜ ao estacion´aria? A resposta a esse questionamento ´e que nenhuma das maneiras, vistas at´e o momento, de se verificar se a ST ´e ou n˜ao estacion´aria nos d´a uma resposta “clara” (com significˆancia estat´ıstica) se a ST ´e ou n˜ao estacion´aria. Mais ainda, tais m´etodos, n˜ ao nos dizem quantas diferencia¸c˜oes precisaremos fazer na ST em estudo para torn´a-la estacion´aria e qual ´e o tipo de n˜ ao estacionariedade (determin´ıstica ou estoc´astica). Para obter essas respostas precisamos testar a estacionariedade atrav´ es dos testes de Raiz Unit´aria.
Os testes de Ra´ız Unit´ aria2 (RU) foram uma grande revolu¸c˜ao na Econometria na d´ ecada de 1980. Existe uma grande quantidade de testes e, basicamente, todos tˆem a mesma ideia, isto ´e, a hip´ otese nula ´e que a s´erie temporal possui uma raiz unit´ aria (a ST ´e n˜ ao-estacion´aria) e a hip´otese alternativa a que a s´erie ´e estacion´ aria, com exce¸c˜ ao do teste KPSS que tem as hip´oteses alternadas. Abaixo podemos ver alguns exemplos de testes de Raiz Unit´ aria:
2
•
Augmented Dickey Fuller (ADF) (Dickey e Fuller (1979b))
•
Phillips-Perron (PP)(Phillips e Perron (1988))
Para maiores detalhes ver: Hamilton (1994b).
CAP´ITULO 5.
178
MODELOS SARIMA ( P, D, Q)(P, D, Q)12
•
Kwiatkowski-Phillips-Schmidt-Shin (KPSS)(Kwiatkowski et al. (1992))
•
Dickey Fuller GLS (DF-GLS)(Eliott et al. (1996))
•
Elliott–Rothenberg-Stock point optimal (ERS)(Elliott et al. (1992)) Apesar de haver uma grande quantidade de testes, nesse livro abordaremos apenas o
teste de Dickey Fuller Aumentado (ADF), que tem as seguintes hip´ oteses: H0 : a ST possui uma RU ⇔ a s´ erie ´e n˜ ao estacion´aria Ha : a ST n˜ao possui RU ⇔ a s´erie ´e estacion´ aria A regra de rejei¸c˜ ao da hip´otese nula funcio na da seguinte forma: se o valor observado para a estat´ıstica de teste for inferior ao valor cr´ıtico, rejeitamos a hip´ otese nula e, portanto, conclu´ ımos que a ST ´e estacion´ aria de acordo com o n´ıvel de confian¸ca adotado previamente. Caso contr´ario, a ST ser´a n˜ ao estacion´aria3 . A estat´ıstica de teste do teste ADF segue distribui¸ca˜o Tau e seus valores foram tabulados por MacKinnon (1996).
Como existem v´arias especifica¸c˜oes consistentes com a n˜ao-estacionariedade, ir˜ao existir v´arias formas de test´a-la. Na pr´atica, a quest˜ao importante ´e escolher a forma do teste de RU adequada para a ST em quest˜ao. As seguintes formas para o teste ADF se apresentam:
•
Raiz unit´aria + constante + tendˆ encia determin´ıstica (R: trend )
•
Raiz unit´aria + constante (R: drift )
•
Raiz unit´aria (R: none ) Para executar o teste no R, usaremos a fun¸c˜ao ur.df() do pacote urca(Pfaff (2005)). Os
principais argumentos dessa fun¸c˜ao s˜ao:
> ur.df(y, type = c("none", "drift", "trend"), lags = 1, + selectlags = c("Fixed", "AIC", "BIC"))
- y : ST em que ser´a testada a raiz unit´aria; - type: tipo da especifica¸c˜ ao do teste que o usu´ario deseja realizar; 3
Para maiores detalhes sobre processos n˜ ao estacion´ arios e os testes de Ra´ız Unit´ aria de Dickey Fuller e Phillips Perron, recomenda-se consultar Hamilton, 1994 (cap´ıtulos 15, 16 e 17)
5.4. CONHECENDO A ST ANTES DE IN ICIAR A MODELAGEM BJ
179
- lags : n´ umero de defasagens a serem usadas para captar o comportamento da ST e, consequentemente, corrigir o problema da autocorrela¸c˜ao residual; - selectlags: a fun¸c˜ao pode definir automaticamente, baseada em um crit´erio de informa¸c˜ao, o n´umero de lags a serem inclusos dado um valor m´ aximo no argumento lags. Antes de iniciar o teste ´e importante observar que o n´umero de lags que ser˜ao inclu´ıdos na equa¸ca˜o do teste ADF ser´a definido com base na an´ alise dos res´ıduos da regress˜ ao e n˜ao somente nos crit´erios de informa¸c˜ao.
Dando in´ıcio aos testes, vamos testar a estacionariedade da ST considerando equa¸ca˜o ´ importante vocˆe saber que testamos a equa¸ sem tendˆ encia e com constante. E c˜ao com tendˆ encia antes, por´em o parˆ ametro dessa vari´avel n˜ao foi significativo. Nessa fase o parˆametro mais dif´ıcil e importante de definir ´e o lag, isto ´e, vocˆ e precisa encontrar um n´ umero de lags que corrija a autocorrela¸c˜ao dos res´ıduos e ser parcimonioso com rela¸ c˜ao ao n´umero de parˆametros da equa¸ca˜o do modelo.
Estipulamos, inicialmente, o lag m´aximo como 24 e o crit´erio de informa¸ c˜ao a minimizar sendo o AIC. A seguir observamos o resultado do teste ADF e a FAC do res´ ıduos, a qual mostra que n˜ao h´a presen¸ca de autocorrela¸c˜ ao.
> require(urca) > adf.drift <- ur.df(y = AirPassengers, type = c("drift"), + lags = 24, selectlags = "AIC") > acf(adf.drift@res, lag.max = 36, drop.lag.0 = T) Series adf.drift@res
0 1 . 0 F C A
0 .0 0
5 .1 0 −
0
5
10
15
20
25 Lag
30
35
CAP´ITULO 5.
180
MODELOS SARIMA ( P, D, Q)(P, D, Q)12
Ao analisar a estat´ıstica de teste (1,8582) notamos que seu valor ´e superior ao valor cr´ıtico associado ao n´ıvel de confian¸ ca de 95% (-2,88). Dessa forma, conclui-se que a ST n˜ ao ´e estacion´ aria (n˜ao rejei¸ca˜o da hip´otese nula).
> adf.drift@teststat #estat´ ıstica de teste
tau2 phi1 statistic 1.85818 7.914366
> adf.drift@cval #valores tabulados por MacKinnon (1996)
1pct 5pct 10pct tau2 -3.46 -2.88 -2.57 phi1 6.52 4.63 3.81
O leitor p ode visualizar mais informa¸c˜oes sobre o teste de RU, como a equa¸c˜ao ajustada por exemplo, usando a fun¸c˜ ao summary().
> summary(adf.drift)
Ao concluir que a ST tem raiz unit´aria, precisamos descobrir o n´ umero de diferencia¸co˜es ´ importante observar que esse ´e apenas um exerc´ıcio necess´ arias para torn´a-la estacion´aria. E para que o leitor observe o comportamento da ST e da FAC antes e ap´os a diferencia¸ca˜o, pois, como veremos nas pr´oximas se¸c˜oes, faremos as “corre¸c˜oes” de n˜ao estacionariedade da ST na pr´ opria fun¸c˜ao que estimar´a o modelo SARIMA.
Dado que a nossa ST ´e n˜ao estacion´aria, vamos tentar torn´a-la estacion´aria fazendo uma diferencia¸ca˜o e vamos observar o gr´afico e a FAC novamente.
> ts.plot(diff(AirPassengers, lag = 1, differences = 1))
5.4. CONHECENDO A ST ANTES DE IN ICIAR A MODELAGEM BJ
) 1 = s e c n e r ffe i d , 1 = g a l , s r e g n e s s a P ir (fA if d
181
0 5
0
0 5 − 0 0 1 −
1950
1952
1954
1956
1958
1960
Time
> acf(diff(AirPassengers, lag = 1, differences = 1), + lag.max = 36, drop.lag.0 = T)
Series diff(AirPassengers, lag = 1, differences = 1)
.6 0
F C A
2 . 0
2 . 0 −
0.0
0.5
1.0
1.5
2.0
2.5
3.0
Lag
Observe que ao aplicar a diferencia¸ca˜o, a ST aparenta estar estacion´aria na m´edia, mas a variˆancia ´e crescente ao longo do tempo. Como sabemos, um dos pressupostos da teoria Box & Jenkins ´e que a ST seja tamb´ em estacion´ aria na variˆancia, para tal, iremos passar o log na ST em quest˜ao.
CAP´ITULO 5.
182
MODELOS SARIMA ( P, D, Q)(P, D, Q)12
> ts.plot(diff(log(AirPassengers),lag = 1,differences = 1)) ) 1 = s e c n re ffe i d , 1 = g la ), s r e g n e s s a P ir (A g lo f( if d
2 . 0 .1 0 .0 0
.2 0 −
1950
1952
1954
1956
1958
1960
Time
> acf(diff(log(AirPassengers), lag = 1, differences = 1), + lag.max=48, drop.lag.0=T)
Series diff(log(AirPassengers), lag = 1, differences = 1)
.6 0
F C A
.2 0
2 . 0 −
01234 Lag
Note agora que temos uma s´erie temporal estacion´aria tanto na m´edia quanto na variˆancia. Ao analisarmos a FAC, a pergunta que fica ´e: essa FAC ´e adequada para idenficarmos
5.4. CONHECENDO A ST ANTES DE IN ICIAR A MODELAGEM BJ
183
a estrutura do nosso modelo SARIMA?!
Avaliando a estacionariedade da parte sazonal Com rela¸ca˜o a pergunta feita na se¸c˜ao anterior, o leitor atento j´a observou que nos lags sazonais4 a fun¸c˜ ao de autocorrela¸c˜ao tamb´ em apresenta um decrescimento lento, indicando que a ST ´e n˜ ao estacion´aria na parte sazonal 5 .
Para corrigir esse problema precisamos diferenciar a parte sazonal, para isso diferenciaremos a ST j´a diferenciada na parte n˜ ao sazonal. Tal procedimento ´e feito mudando o parˆ ametro lag da fun¸ca˜o diff() para 12, conforme pode ser observado abaixo:
> acf(diff(diff(log(AirPassengers), lag = 1, differences = 1), + lag = 12, differences = 1), lag.max = 48, drop.lag.0 = T)
Series diff(diff(log(AirPassengers), lag = 1, differences = 1), lag = Series differences = 1) 2 . 0
F C A
0 . 0
2 . 0 −
4 . 0 −
01234 Lag
4
Observe que na FAC gerada pelo R os lags sazonais s˜ao 1(=12), 2(=24), 3 (=36), etc. Existem testes estat´ısticos para avaliar a presen¸ ca de n˜ ao estacionariedade sazonal, um dos mais conhecidos ´e o teste de HEGY (Hylleberg et al., 1990 ) 5
CAP´ITULO 5.
184
MODELOS SARIMA ( P, D, Q)(P, D, Q)12
Observe que agor a a FAC apresenta corte s bruscos nos lags 1 e 12. E n˜ao apresenta mais decrescimento lento tanto na parte sazonal quanto na n˜ ao sazonal. Vamos refazer o teste de RU para confirmar a estacionariedade da ST ap´ os aplicar as transforma¸co˜es anteriores. O valor da estat´ ıstica de teste (-4,0398) ´e inferior ao valor cr´ ıtico (-2,88). Assim, podemos concluir que a s´erie ´e estacion´ aria.
> # Teste de RU na ST com diferen¸cas sazonal e n~ao sazonal > adf.drift2 <- ur.df(y = diff(diff(log(AirPassengers), lag = 1), lag = 12), + type = "drift", lags = 24, selectlags = "AIC") > adf.drift2@teststat #estat´ ıstica de teste
tau2 phi1 statistic -4.039891 8.160779
> adf.drift2@cval #valores tabulados por MacKinnon (1996)
1pct 5pct 10pct tau2 -3.46 -2.88 -2.57 phi1 6.52 4.63 3.81
> acf(adf.drift2@res, lag.max = 36, drop.lag.0 = T)
Series adf.drift2@res .2 0 .1 0 F C A
0 . 0
2 . 0 −
0
5
10
15
20
25 Lag
30
35
5.5. MODELANDO A ST
185
Ao analisar a FAC para os res´ıduos do teste ADF, o leitor pode notar que alguns lags aparecem significativos, por´em n˜ ao s˜ao relevantes (apresentam correla¸c˜ao muito baixa). Dessa forma, confirmamos a validade do teste e podemos come¸ car a nossa modelagem.
Modelando a ST S´eries temporais podem ser estacion´ arias ou n˜ao estacion´arias; estoc´asticas ou determin´ısticas. Um processo estoc´ astico Gaussiano ´e considerado fracamente estacion´ ario se a m´edia e a autocovariˆancia n˜ao dependem do tempo; a ´ultima dependendo somente da distˆancia temporal entre as observa¸c˜oes ( Hamilton (1994b)). Os mode los de Box & Jenkins s˜ao usados para s´eries srcinalmente estacion´arias ou tornadas estacion´arias por meio de diferencia¸c˜ao. Geralmente, as s´eries econˆ omicas s˜ao n˜ao estacion´arias, devendo ser diferenciadas at´e que fiquem estacion´arias.
A metodologia Box e Jenkins para s´eries temporais estacion´arias e constru¸c˜ao dos modelos ARIMA segue um ciclo iterativo composto por cinco partes (Granger e Newbold (1976)):
1. Especifica¸ c˜ ao: classe geral de estruturas SARIMA(p,d,q)(P,D,Q) ´e analisada. 2. Identifica¸ c˜ ao: com base na FAC e FACP amostrais e outros crit´erios. 3. Estima¸ c˜ ao: os parˆametros do modelo identificado s˜ao estimados e testados estatisticamente sobre sua significˆancia. 4. Diagn´ ostico: faz-se uma an´alise dos res´ıduos (devem ser ru´ıdo branco) e testes de verifica¸c˜ao (Ljung-Box) para ver se ´e adequado o modelo sugerido. Em seguida, verificar os modelos que apresentam menores valores para os crit´erios AIC e BIC. Caso ha ja problemas no diagn´ostico, volta-se `a identifica¸c˜ao. 5. Modelo definitivo: para previs˜ao ou controle. Verificar quais modelos tˆ em as melhores medidas RMSE e MAPE (este n˜ao vale para dados pr´oximos de zero, sendo prefer´ıvel a utiliza¸ca˜o de outro m´etodo para a an´alise dos erros). Um processo ARIMA(p,d,q) ´e um ARMA diferenciado d vezes at´e estar estacion´ ario. Os
CAP´ITULO 5.
186
MODELOS SARIMA ( P, D, Q)(P, D, Q)12
modelos SARIMA s˜ao usados para s´ eries temporais que apresentam comportamento peri´odico em s espa¸cos de tempo, isto ´e, quando ocorrem desempenhos semelhantes a cada intervalo de tempo (Box e Jenkins, 1970 ). Este ´e o caso da s´ erie a ser trabalhada neste cap´ıtulo.
Identifica¸ c˜ ao Como sabemos, o primeiro passo para identificar o nosso modelo SARIMA ´e observando a FAC e a FACP. Como os modelos propostos por Box e Jenkins (1970) s˜ao da d´ ecada de 1970, o esfor¸co computacional para estimar o modelo era muito grande, portanto essa fase era fundamental para se ter um modelo adequado ` a ST em an´alise. Atualmente, gra¸cas aos avan¸ cos computacionais, observar a FAC e a FACP ´e u ´ til, principalmente, para se ter uma ideia inicial do modelo a ser testado, pois, como veremos mais adiante, o ideal ´e escolher um modelo que minimize os crit´ erios de informa¸ca˜o.
Assim, vamos observar a FAC e a FACP da ST de vendas de passangens a´ereas diferenciada na parte sazonal e n˜ao sazonal e com transforma¸c˜ao logar´ıtmica.
Observando os gr´aficos e com um pouco de boa vontade podemos pensar nos seguintes modelos:
- SARIMA(1,1,1)(1,1,1) - corte brusco na FAC e na FACP nas partes sazonais e n˜ ao sazonais; - SARIMA(0,1,1)(0,1,1) - corte brusco na FAC e decrescimento das partes sazonais e n˜ao sazonais.
> layout(1:2) > acf(diff(diff(log(AirPassengers), lag = 1, differences = 1), + lag = 12, differences = 1), lag.max = 48, drop.lag.0 = T) > pacf(diff(diff(log(AirPassengers), lag = 1, differences = 1), + lag = 12, differences = 1), lag.max = 48)
5.5. MODELANDO A ST
187
Series diff(diff(log(AirPassengers), lag = 1, differences = 1), lag = Series differences = 1) .2 0
F C A
0 . 0
.2 0 −
.4 0 −
01234 Lag
Series diff(diff(log(AirPassengers), lag = 1, differences = 1), lag =
F C A l ita ra P
1 . 0
1 . 0 −
3 . 0 −
01234 Lag
Uma vez identificado os poss´ıveis modelos, passa-se para o pr´ oximo passo: a estima¸c˜ao.
Estima¸ c˜ ao Para estimar o modelo, deve-se testar as possibilidades dos SARIMAs que idealizamos a partir da visualiza¸c˜ ao da FAC e da FACP. Para tanto, utilizaremos a fun¸ c˜ao Arima() do
CAP´ITULO 5.
188
MODELOS SARIMA ( P, D, Q)(P, D, Q)12
pacote forecast. Com rela¸c˜ao ao m´etodo de estima¸c˜ao dos parˆametros neste trabalho, usaremos o default do R, que utiliza o m´etodo de M´ axima Verossimilhan¸ca, denotado como ML (Maximum Likelihood).
Dessa forma, o primeiro modelo a ser estimado ser´ a uma SARIMA(1,1,1)(1,1,1)12 6 .
> library("forecast") > fit.air <- Arima(AirPassengers, order = c(1,1,1), seasonal = c(1,1,1), + method = "ML", lambda = 0) > summary(fit.air)
Series: AirPassengers ARIMA(1,1,1)(1,1,1)[12] Box Cox transformation: lambda= 0 Coefficients: ar1 ma1 0.1668 -0.5616 s.e. 0.2458 0.2114
sar1 -0.0994 0.1540
sma1 -0.497 0.136
sigma^2 estim ated as 0.001336: log likel ihood=245.16 AIC=-480.31 AICc=-479.83 BIC=-465.93 Training set error measures: ME RMSE MAE MPE MAPE MASE Training set 0.07101092 10.13761 7.278006 0.001547943 2.593424 0.2272225 ACF1 Training set 0.03907144
Para verificar, de forma r´apida, se os parˆametros do modelo s˜ao significativos, desenvolvemos uma fun¸c˜ao no R chamada t.test(), o c´odigo da fun¸c˜ao est´a disponibilizado a seguir. Consideramos nessa fun¸c˜ao o n´ıvel de confian¸ ca de 95%.
6 Observe que na fun¸ca˜o Arima() a vari´avel de entrada ´ e a ST srcinal, mas a justar o argumento lambda em zero permite que seja feita a tranforma¸ca˜o log na s´erie. Tamb´ em n˜ ao ´e necess´ ario diferenciar a ST antecipadamente pois o pr´opria fun¸ca˜o faz isso.
5.5. MODELANDO A ST
189
> # fun¸c~ ao de teste de signific^ancia dos par^ ametros > t.test <- function(modelo_arima){ + # estat´ıstica t + coef <- modelo_arima$coef + se <- sqrt(diag(modelo_arima$var.coef)) + t <- abs(coef/se) + # Teste t + ok <- t > qt(0.975, length(modelo_arima$x) + sum(modelo_arima$arma[c(1,2,3,4,6,7)])) + resul <- da ta.frame(Coef = coef, sd = se, t = t, re j_H0 = ok) + return(resul) + }
Como podemos observar, os parˆametros da parte AR n˜ao sazonal e sazonal s˜ao n˜ao significativos, logo, tais parˆametros n˜ao devem permanecer no modelo. Ent˜ao, estes foram retirados e o modelo foi reestimado.
> # teste de signific^ancia para o modelo SARIMA(1,1,1)(1,1,1)12 > t.test(fit.air)
Coef sd ar1 0.16679124 0.2457980 ma1 -0.56163441 0.2114211 sar1 -0. 09938487 0.1539 918 sma1 -0.49700743 0.1360485
t rej_H0 0.6785705 FALSE 2.6564723 TRUE 0.64 53907 FALSE 3.6531644 TRUE
Conforme pode ser observado, temos um modelo SARIMA(0,1,1)(0,1,1)12 onde todos os parˆ ametros s˜ao significativos e que minimiza os crit´erios de informa¸c˜ao (BIC, AIC e AICc ) 7 .
> fit.air <- Arima(AirPassengers, order = c(0,1,1), seasonal = c(0,1,1), + method = "ML", lambda = 0)
> summary(fit.air)
Series: AirPassengers ARIMA(0,1,1)(0,1,1)[12] 7
Para maiores detalhes sobre os crit´ erios de informa¸ca˜o ver: Akaike (1973); Schwarz (1978)
CAP´ITULO 5.
190
MODELOS SARIMA ( P, D, Q)(P, D, Q)12
Box Cox transformation: lambda= 0 Coefficients: ma1 -0.4018 s.e. 0.0896
sma1 -0.5569 0.0731
sigma^2 estim ated as 0.001348: log likel ihood=244.7 AIC=-483.4 AICc=-483.21 BIC=-474.77 Training set error measures: ME RMSE MAE MPE MAPE MASE Training set 0.05140376 10.15504 7.357555 -0.004079321 2.623637 0.2297061 ACF1 Training set -0.005917981
> t.test(fit.air)
Coef sd t rej_H0 ma1 -0.4018268 0.08964405 4.482470 TRUE sma1 -0.5569466 0.07309948 7.619023 TRUE
Diagn´ ostico Ap´ os definir a “melhor” estrutura e estimar os parˆametros do modelo, outra etapa fundamental ´e a fase de diagn´ ostico do modelo. Nesta fase as seguintes caracter´ ısticas dos res´ıduos precisam ser analisadas e confirmadas:
•
Ausˆ encia de autocorrela¸c˜ao linear;
•
Ausˆ encia de heterocedasticidade condicional;
•
Normalidade.
5.5. MODELANDO A ST
191
Para uma vis˜ao geral dos res´ıduos, utiliza-se a fun¸c˜ao tsdiag(). Esta disponibiliza a distribui¸c˜ao dos res´ıduos padronizados, a fun¸ c˜ao de autocorrela¸c˜ao dos res´ıduos e os p-valores da estat´ıstica Ljung-Box. Conforme podemos observar no primeiro gr´afico a seguir, os dados aparentam estar distribu´ıdos simetricamente em torno da m´edia zero, indica¸ c˜ao de distribui¸c˜ao normal. Observe tamb´ em que n˜ao temos nenhuma informa¸c˜ao discrepante (muito fora do intervalo [-3,3 ]). A ´unica exce¸c˜ ao ´e o res´ıduo de janeiro de 1954, neste caso, poder´ıamos testar se a venda de passagens a´ereas nesse mˆes ´e um outlier ou n˜ao 8 .
O segundo gr´afico disponibilizado pela fun¸c˜ ao tsdiag() e´ a FAC dos res´ ıduos. Este gr´ afico ´e extremamente util ´ para observar se h´a a presen¸ca de autocorrela¸c˜ao linear nos res´ıduos. Conforme verificamos, n˜ao h´a nenhum lag significante, logo, toda a parte linear da ST de vendas de passagens a´ereas foi modelada pelo modelo SARIMA(0,1,1)(0,1,1)12 .
O terceiro gr´afico mostra o p-valor da estat´ıstica Ljung-Box para diferentes defasagens ap´os a defasagem 14. De acordo com o gr´afico, verificamos que n˜ao rejeitamos a hip´otese nula da n˜ao existˆ encia de dependˆencia serial para todas as defasagens. Tal resultado est´a em consoˆancia com a an´alise feita anteriormente, isto ´e, n˜ ao h´a dependˆ encia linear nos res´ ıduos. Contudo, este gr´afico n˜ao ´e confi´ avel uma vez que os graus de liberdade usados para calcular os p-valores s˜ao baseados nos lags e n˜ao (lags - (p+q)). Isto ´e, o processo usado para calcular os p-valores n˜ao leva em conta o fato de os res´ıduos terem sido gerados a partir de um modelo ajustado. Portanto, precisamos tomar cuidado ao observar esse gr´ afico.
> diag <- tsdiag(fit.air, gof.lag = 20)
8 Existem testes espec´ ıficos para a detec¸ ca˜o de outliers. Para maiores detalhes ver: Chang et al. (1988);Tsay (1988)
CAP´ITULO 5.
192
MODELOS SARIMA ( P, D, Q)(P, D, Q)12
3
2 ls a u id s e R d e iz d r a d n ta S
1
0
1 −
2 −
3 −
1950
1952
1954
1956
1958
1960
5 .1 0 0 .1 0 s l a u id s e R f o F C A
5 0 . 0
5 0 . 0 −
5 .1 0 −
5
10
15
20
5
10
15
20
0 . 1
.8 0
s e u l a v − P
.6 0
4 . 0
.2 0
.0 0
Bem, conforme observamos a fun¸c˜ao tsdiag() j´a nos deu bastante informa¸c˜ ao sobre os
5.5. MODELANDO A ST
193
nossos res´ıduos. Mas, dado o problema da estat´ıstica Ljung-Box e a necessidade de testarmos estatisticamente a normalidade e a homocedasticidade dos res´ıduos, vamos realizar alguns testes estat´ısticos espec´ıficos para cada uma das caracter´ısticas.
Primeiramente, vamos testar a autocorrela¸c˜ao linear dos res´ıduos atrav´ es do teste de Ljung e Box (1978a). Como sabe mos o teste de Ljung Box nos d´a a presen¸ca ou n˜ao de autocorrela¸c˜ao serial dos res´ıduos para o “L” primeiros lags. Outro teste de autoc orrela¸ca˜o residual muito conhecido ´e o teste de Durbin & Watson 9 , que testa a autocorrela¸ c˜ ao dos res´ıduos apenas para o primeiro lag. No entanto, ´e aplic´avel apenas para os res´ıduos de um modelo de regress˜ao linear.
Conforme podemos observar, o resultado do teste de Ljung Box mostra que a 95% de confian¸ca n˜ao rejeitamos a hip´otese nula de n˜ao existˆ encia de autocorrela¸c˜ao serial at´e o lag ´ importante observar o argumento fitdf, neste caso igual a 2 ( p+q ), pois o teste ´e feito 2410. E nos res´ıduos de um modelo SARIMA com dois parˆ ametros. > Box.test(x = fit.air$residuals, lag = 24, + type = "Ljung-Box", fitdf = 2)
Box-Ljung test data: fit.air$residuals X-squared = 26.446, df = 22, p-va lue = 0.233
Confirmada a ausˆ encia de autocorrela¸cao ˜ linear nos res´ıduos, vamos testar a estacionariedade da variˆancia. Para tal, faremos o teste Multiplicador de Lagrange para heteroced asticidade condicional autorregressiva (ARCH LM) (Engle, 1984) dispon´ıvel no pacote FinTS.
> require(FinTS) > ArchTest(fit.air$residuals,lags = 12) 9 10
Durbin e Watson (1950); Durbin e Watson (1951) definido pelo pr´oprio usu´ ario.
CAP´ITULO 5.
194
MODELOS SARIMA ( P, D, Q)(P, D, Q)12
ARCH LM-tes t; Null hypothesis: no ARCH effect s data: fit.air$residuals Chi-squared = 14.859, df = 12, p-value = 0.2493
Conforme mostrado pelo teste, a hip´otese nula ´e que n˜ ao h´a presen¸ca de efeitos ARCH. Dessa forma, dado o valor do p-valor, n˜ao rejeitamos a hip´otese nula a 95% de confian¸ca, logo, a variˆancia ´e estacion´ aria.
Por fim, precisamos testar a normalidade do nosso res´ıduo. Para tal, faremos o teste de Jarque e Bera (1980) baseando-se no pacote normtest.
> require(normtest) > jb.norm.test(fit.air$residuals, nrepl=2000)
Jarque-Bera test for normality data:
fit.air$residuals
JB = 5.2265, p-va lue = 0.0555
Os resultados mostram que a 95% n˜ao rejeitamos a hip´otese nula de normalidade. Feito o diagn´ostico dos res´ıduos, o nosso pr´ oximo passo ser´a fazer as previs˜oes.
Previs˜ ao Ap´ os fazermos o diagn´ostico dos res´ıduos e concluirmos que estamos modelando toda a parte linear da ST de vendas de passagens a´ereas, o nosso pr´oximo passo ´e fazer a previs˜ ao. Afinal de contas, esse ´e nosso objetivo final. Nessa etapa, basicamente, queremos conhecer a nossa previs˜ao, saber qual ´e o intervalo de confian¸ca (neste caso, 95%) e analisar as m´etricas de desempenho do modelo.
5.5. MODELANDO A ST
195
Para a previs˜ao utilizaremos o pacote forecast e a fun¸c˜ ao com o mesmo nome. Observe que, ao usar esta fun¸ca˜o, precisamos definir os seguintes parˆametros: (a) object: ´e o output do modelo SARIMA estimado; (b) h : horizonte de previs˜ao (quantos passos `a frente queremos prever); (c) level : ´e o n´ıvel de confian¸ ca que desejamos para o nosso intervalo de confian¸ca.
> require(forecast) > prev <- forecast(object = fit.air, h=12, level = 0.95) > plot(prev)
Forecasts from ARIMA(0,1,1)(0,1,1)[12] 0 0 7
0 0 5
0 0 3
0 0 1
1950
1952
1954
1956
1958
1960
1962
Observando o gr´afico, parece que fizemos uma “boa” previs˜ao. Por´ em, uma maneira mais adequada de certificar isso ´e analisando as m´etricas de previs˜ ao. Conforme podemos observar, as m´etricas confirmam a an´alise gr´afica. Analisando o MAPE, por exemplo, que ´e uma medida percentual do m´odulo dos erros e que n˜ ao ´e contaminada pela escala da ST, observamos que o erro de previs˜ao est´a apenas em 2,62%, o que ´e muito bom!11
> accuracy(fit.air) 11 Dois pontos que gostar ia de destacar aqui: primeiro, que uma an´alise da previs˜ao fora da amostra seria importante para corroborar a performance do nosso modelo. Segundo, essa ideia de bom ou ruim ´e muito relativa, isto ´e, ´e sempre bom termos um modelo benchmark para compararmos nossas previs˜oes.
CAP´ITULO 5.
196
MODELOS SARIMA ( P, D, Q)(P, D, Q)12
ME RMSE MAE MPE MAPE MASE Training set 0.05140376 10.15504 7.357555 -0.004079321 2.623637 0.2297061 ACF1 Training set -0.005917981
Extraindo as Previs˜oes Imagine o seguinte: vocˆe trabalha em uma empresa na ´area financeira e seu chefe lhe pede a previs˜ao das vendas de um determinado produto para os pr´ oximos 12 meses. Ainda, imagine tamb´ em que ningu´ em na sua empresa conhe¸ ca o R (n˜ao ´e t˜ ao dific´ıl de imaginar isso, certo?!).
A solu¸c˜ao para o primeiro problema vocˆ e j´ a tem e j´a aprendeu ao longo desse cap´ıtulo. A solu¸c˜ao para o segundo problema pode ser treinar toda a equipe da ´
area financeira para
trabalhar com o R ou ent˜ao extrair as previs˜oes e os intervalos de confian¸ca estimados para um programa mais conhecido como o Excel atrav´es de um arquivo .csv ou .xlsx.
Como veremos, essa tarefa ´e muito f´ acil de fazer no R e pode ser executada com apenas uma linha de comando.
•
Em formato .csv : > write.csv2(data.frame(prev),"previsao.csv")
•
Em formato .xlsx : > require(xlsx) > write.xlsx(data.frame(prev),"previsao.xlsx")
Considera¸ c˜ oes finais Neste cap´ıtulo aprendemos empiricamente como modelar uma s´erie temporal mensal com base na metodologia proposta por Box & Jenkins e utilizando o software
R. Aprendemos
˜ 5.7. CONSIDERA¸COES FINAIS
197
como fazer uma an´alise explorat´oria de uma ST, quais s˜ao os poss´ıveis “problemas” que ela pode ter para ser modelada utilizando o arcabou¸ co proposto por Box & Jenki ns e como “consertar” esses problemas, atrav´ es, por exemplo, da diferencia¸c˜ao da ST.
Foram abordados tamb´ em alguns “pacotes” u´teis para esse tipo de modelagem, discutimos algumas fun¸c˜ oes e chamamos a aten¸c˜ ao para algumas limita¸c˜oes das mesmas. Apesar de ter sido uma experiˆencia interessante, sabemos que ainda ficaram faltando alguns pontos a serem aboradados, como por exemplo, n˜ao tratamos da identifica¸ca˜o e “corre¸c˜ao” de poss´ıveis outliers, n˜ ao mostramos como “corrigir” a presen¸ca de heterocedasticidade condicional nos res´ıduos, quando ela existir, etc.
Nesse sentido, ´e importante que o leitor que estiver usando esse manual para construir o seu modelo SARIMA, tenha ciˆencia de suas limita¸c˜oes e busque, sempre que poss´ıvel, aprofundar o seu conhecimento sobre o assunto.
198
CAP´ITULO 5.
MODELOS SARIMA ( P, D, Q)(P, D, Q)12
Ajuste Sazonal utilizando modelos X13 ARIMA-SEATS Daiane Marcolino de Mattos Pedro Costa Ferreira
200 CAP´ITULO 6. AJUSTE SAZONAL UTILIZANDO MODELOS X-13 ARIMA -SEATS
Introdu¸ c˜ ao Vamos iniciar esse cap´ıtulo com uma breve descri¸ca˜o da composi¸c˜ ao de uma s´ erie temporal. Segundo a decomposi¸c˜ao cl´assica, uma s´erie temporal pode ser decomposta em quatro componentes n˜ao observ´aveis: tendˆ encia, sazonalidade, ciclo e erro. A sazonalidade, que ´e o objeto de estudo desse cap´ıtulo, ´e causada por movimentos oscilat´orios de mesma periodicidade que ocorrem em per´ıodo intra-anual, como varia¸ c˜oes clim´aticas, f´ erias, feriados, entre outros. A ocorrˆ encia desses eventos pode levar a conclus˜oes inadequadas a respeito da s´erie temporal em estud o. Por exemplo, a oferta de emprego costuma aumentar no final do ano devido `as festas natalinas, isto ´e, h´a uma demanda maior por bens e servi¸ cos, elevando o n´ıvel de contrata¸c˜oes de pessoas. Por´ em, como a maioria das vagas e´ tempor´ aria, geralmente, h´a diminui¸c˜ao no n´ıvel de pessoal ocupado no per´ıodo seguinte. Para a an´alise econˆomica, o importante ´e detectar a diferen¸ ca entre o que ocorre periodicamente e o que de fato ocorre de diferente naquele per´ıodo espec´ıfico, possibilitando observar a tendˆ encia e o ciclo da vari´ avel.
Dessa forma, precisamos de uma ferramenta adequada que consiga remover a componente sazonal. A remo¸c˜ ao da sazonalidade de uma s´erie temporal ´e chamada de ajuste sazonal ou dessazonaliza¸c˜ao. E, nesse cap´ıtulo, nos dedicaremos a aprender como removˆ e-la utilizando o programa ajuste sazonal X-13ARIMA-SEATS desenvolvido e mantido por US Census Bureau. O programa ´e mundialmente utilizado por ´org˜aos de estat´ıstica e em alguns lugares ainda em sua vers˜ao anterior. Iremos implement´a-lo no software R e o aplicaremos na s´erie temporal do ´ındice de produ¸c˜ao industrial geral do Brasil, estimado pelo Instituto Brasileiro de Geografia e Estat´ıstica (IBGE).
Embora nos dediquemos a apresentar o X-13, ´e importante que o leitor saiba que existem outras metodologias para remover a sazonalidade de uma s´erie temporal, como, por exemplo: a. Seasonal Dummies (Zellner, 1979); b. Holt-Winters (Rasmussen, 2004);
6.2. BREVE RESUMO SOBRE O X-13ARIMA-SEATS
201
c. Structural Models (Harvey e Shepard, 1993; Plosser, 1979; Koopman et al. , 2009); d. Dainties (Fok et al., 2005 ); e. TRAMO-SEATS (G´omez e Maravall, 1997; Hungarian Central Statistical Office, 2007); f. X-11, X-11ARIMA, X-12ARIMA (Shiskin et al., 1967 ; Findley et al., 1998 ); g. X-13ARIMA-SEATS (U.S. Census Bureau, 2015); Ao ler esse cap´ıtulo, espera-se que o leitor saiba como dessazonalizar s´ eries temporais econˆ omicas mensais sem grandes dificuldades. Assim, para que vocˆ e objetivo do cap´ıtulo seja satisfeito, n´os o dividimos em mais outras quatro se¸c˜oes: Na se¸c˜ ao 6.2, apresentamos um breve resumo sobre o X-13; nas se¸c˜oes 6.3 e 6.4, vocˆe ver´ a o passo-a-passo que deve ser seguido para dessazonalizar uma s´ erie temporal no R; na se¸c˜ao 6.5, aplicaremos os passos apresentados na s´erie temporal do ´ındice de produ¸ ca˜o industrial geral do Brasil; e na se¸ c˜ ao 5, vamos relatar algumas considera¸c˜oes finais.
Breve resumo sobre o X-13ARIMA-SEATS O X13-ARIMA-SEATS, criado em julho de 2012, ´e um programa de ajuste sazonal desenvolvido por U.S Census Bureau com o apoio do Bank of Spain. O programa ´e a jun¸c˜ ao dos softwares X12-ARIMA e TRAMO/SEATS com melhorias. As melhorias inclue m uma variedade de novos diagn´osticos que ajudam o usu´ario a detectar e corrigir inadequa¸c˜oes no ajuste, al´em de incluir diversas ferramentas que superaram problemas de ajuste e permitiram um aumento na quantidade de s´ eries temporais econˆomicas que podem ser ajustadas de maneira adequada ( U.S. Census Bureau, 2015).
Um procedimento contido no X-13ARIMA-SEATS que merece destaque ´e o pr´ e-ajuste da s´erie temporal, isto ´e, uma corre¸ ca˜o antes de ser feito, de fato, o ajuste sazonal. Alguns eventos at´ıpicos e/ou n˜ ao sazonais como, por exemplo, efeitos do calend´ ario (trading days, working day, moving holidays, etc), greves, cat´astrofes, entre outros, podem afetar o padr˜ao sazonal da s´ erie temporal e, consequentemente, gerar um ajuste de qualidade inferior. O tratamento desses eventos (pr´e-ajuste) deve ser feito, se necess´ ario. Um exemplo da aplica ¸ca˜o
202 CAP´ITULO 6. AJUSTE SAZONAL UTILIZANDO MODELOS X-13 ARIMA -SEATS de ajuste sazonal a partir do X-13ARIMA-SEATS com a utiliza¸ c˜ ao de trading days pode ser encontrado em Livsey et al. (2014).
Caso o leitor queira se aprofundar sobre o programa, recomendamos, al´em da literatura oficial, uma nota t´ecnica produzida por n´ os sobre o mesmo tema aplicado nas s´eries temporais da Sondagem da Ind´ustria da Transforma¸c˜ao (FGV|IBRE) (Ferreira et al., 2015).
Pr´ e-algoritmo Para ser poss´ıvel executar um ajuste sazonal no R com o X-13, precisaremos executar alguns procedimentos: 1. Definir diret´orio de trabalho; 2. Baixar X-13ARIMA-SEATS; 3. Informar o local do arquivo execut´avel baixado em (2); 4. Instalar e carregar paco te seasonal; 5. Verificar se todas as etapas foram execut adas corretamente. Vamos desenvolver cada passo a seguir: ´ nesse local onde ficar˜ ao os arquivos necess´arios para 1. Definir diret´ orio de trabalho : E realizar o ajuste sazonal. O comando a seguir, direcion a o diret´orio para a pasta work contida na unidade C. > setwd("C:/work")
2. Baixar X-13-ARIMA-SEATS : O software pode ser encontrado no site do
US Census
Bureau. Deve ser baixado 1 e colocado na pasta de diret´ orio de trabal ho. Mas, para facilitar, seguindo os comandos
2
abaixo, o usu´ario pode obter o arquivo sem precisar
sair do R. O arquivo ser´a armazenado no diret´orio de trabalho especificado anteriormente 1
Valedeixe-o lembrar ao ´e preciso o download do arquivo que precisar fazer um ajuste sazonal. Apenas emque seun˜ diret´orio de fazer trabalho para futuras utiliza¸sempre c˜ oes e passe para etapa seguinte, ignorando esta. 2 Ocasionalmente, novas vers˜ oes do programa podem ser criadas causando mundan¸ cas no link de download e, consequentemente, o n˜ ao funcionamento da linha de comando.
´ 6.3. PR E-ALGORITMO
203
com o nome de x13.zip, e em seguida ser´a descompactado. > download.file("https://www.census.gov/ts/x13as/pc/x13as_V1.1_B19.zip", + destfile = "./x13.zip") > unzip("x13.zip")
3. Informar o local do arquivo execut´avel baixado em (2) : O arquivo x13 as.exe, desenvol´ necess´ario informar vido pelo US Census Bureau, ´e que de fato faz o ajuste sazonal. E o seu caminho ao R. > local <- paste(getwd(),"/x13as", sep = "") > Sys.setenv(X13_PATH = local)
4. Instalar e carregar pacoteseasonal: Christoph Sax ( 2015a) desenvolveu o pacote seasonal que executa o X-13ARIMA-SEATS no R. As fun¸c˜oes do pacote permitem ao usu´ ario, al´em do ajuste sazonal, obter diagn´osticos, que ser˜ao citados na se¸c˜ao 6.4. > install.packages("seasonal") > library(seasonal)
5. Verificar se todas as etapas foram executadas corretamente : A fun¸c˜ ao checkX13() do pacote seasonal permite verificar se ser´a poss´ıvel a realiza¸c˜ao do ajuste sa zonal. Se os 4 procedimentos anteriores foram executados de maneira correta, a fun¸c˜ao retorna uma mensagem, vista a seguir, de confirma¸c˜ao e ´e poss´ıvel dessazonalizar uma s´ erie temporal com o X-13ARIMA-SEATS no R. > checkX13() X-13 installation test: - X13_PATH correctly specified - binary executable file found - command line test run successful - seasonal test run successful Congratulations! seasonal should work fine! '
'
seasonal now suppo rts the HTML version of X13, which offers a more accessible output via the out() function. For best user experience, download the HTML version from: http://www.census.gov/srd/www/x13as/x13down_pc.html
204 CAP´ITULO 6. AJUSTE SAZONAL UTILIZANDO MODELOS X-13 ARIMA -SEATS and copy x13ashtml.exe to: C:/work/x13as
Algoritmo de ajuste sazonal usando o
R
Depois que o leitor executou os passos da se¸ c˜ao 6.3, podemos come¸car o ajuste sazonal de fato. A literatura sugere os seguintes passos: 1. An´alise Gr´afica; 2. Execu¸c˜ao o X-13ARIMA-SEATS no modo autom´atico; 3. Avalia¸c˜ao do ajuste sazonal em (2); 4. Corre¸c˜ao do ajuste sazonal em (2) (se necess´ario). A an´alise gr´afica de uma s´erie temporal permite visualizar suas caracter´ ısticas para uma boa modelagem, por exemplo: seu padr˜ao sazonal, quebras estruturais, poss´ıveis outliers, se h´a necessidade (e possibilidade) de usar transforma¸ c˜ao logar´ıtmica nos dados.
O X13, basicamente, funciona em duas etapas: pr´ e-ajuste e a juste sazonal. Na primeira, o software pode corrigir a s´ erie de efeitos determin´ısticos. E ´ nesta etapa que o usu´ ario pode especificar, por exemplo, outliers e efeitos do calend´arios (P´ascoa, Carnaval, etc). Na segunda etapa, ´e feito o ajuste sazonal de fato. A execu¸c˜ao do programa no modo autom´ atico pode trazer um ajuste sazonal de boa qualidade.
O programa no modo autom´ atico verifica, entre outras coisas , se h´a necessidade de transforma¸ca˜o log nos dados; se existem outliers (additive, level shift e temporary change) ; a ordem do modelo ARIMA; se h´a efeitos de calend´ario). Essas verifica¸co˜es autom´aticas podem poupar o tempo do usu´ario e ajud´a-lo na escolha de um bom modelo, principalmente na etapa do pr´e-ajuste. No entanto, este modelo precisa ser avaliado e o X-13ARIMA-SEATS fornece 3
algumas ferramentas para essa finalidade: 3
H´ a uma gama de recursos oferecidos pelo X-13ARIMA-SEATS que n˜ao ainda n˜ao foram explorados nesse cap´ıtulo. Mais informa¸ co˜es ver X13-ARIMA-SEATS Reference Manual Acessible HTML Output Version (U.S. Census Bureau, 2015).
6.4. ALGORITMO DE AJUSTE SAZONAL USANDO O R •
205
QS statistic: Verifica a existˆencia de sazonalidade em uma s´erie temporal. A tabela 6.1, a seguir, resume em quais s´eries temporais o programa calcula o teste de sazonalidade. Em um bom a juste sazonal, o diagn´ostico dado pela estat´ıstica QS, permitiria concluir ind´ıcios de sazonalidade somente na s´ erie srcinal e n˜ao nas restantes. ´ importante saber que se a s´erie possui menos de 8 anos de dados mensais (96 obE serva¸ c˜oes), o teste de sazonalidade ´e executado apenas em toda a s´erie temporal; caso contr´ ario, ´e executado na s´erie temporal inteira e tamb´ em nos ultimos ´ oito anos. Codifica¸c˜ ao
Significado
qsori qsorievadj qsrsd qssadj qssadjevadj qsirr qsirrevadj
s´erie original s´ erie srcinal corrigida por outliers res´ıduos do modelo SARIMA s´erie com ajuste sazonal s´ erie com ajuste sazonal corrigida por outliers componente irregular componente irregular corrigida por outliers
Tabela 6.1: S´ eries temporais dispon´ıveis para o diagn´ ostico dado pela estat´ıstica QS
206 CAP´ITULO 6. AJUSTE SAZONAL UTILIZANDO MODELOS X-13 ARIMA -SEATS •
Ljung-Box statistic: O teste de Ljung e Box (1978b) verifica a existˆ encia de autocorrela¸c˜ao em uma s´ erie temporal. O X-13 mostra o resultado desse teste aplicado aos res´ıduos do modelo SARIMA estimado na defasagem 24. Espera-se que os res´ıduos n˜ao sejam autocorrelacionados (hip´otese nula).
•
Shapiro-Wilk statistic: O teste de Shapiro e Wilk (1965) verifica se a distribui¸c˜ao de um conjunto de dados ´e normal. O X-13 mostra o resultado desse teste aplicado aos res´ıduos do modelo SARIMA estimado. Espera-se que os res´ıduos sigam distribui¸ca˜o normal (hip´otese nula).
•
´ para verificar se a decomposi¸c˜ao das componentes da s´erie temGr´afico SI ratio: Util poral foi feita adequ adamente. Espera-se que os fatores sazonais acompanhem o SI (componentes sazonal e irregular agregadas 4 , indicando que o SI n˜ao ´e dominado pela componente irregular.
•
Gr´afico Spectral5 : ´e outra ferramenta que alerta se a s´ erie temporal possui influˆ encia de efeitos sazonais e de trading days . O gr´afico ´e feito para a s´ erie original, para a s´ erie com ajuste sazonal (se de fato o ajuste sazonal foi executado), para a s´erie da componente irregular e para os res´ıduos do modelo SARIMA. Se o objetivo realizar um a juste sazonal na s´erie temporal, ent˜ ao ´e esperado a identifica¸c˜ao de efeitos sazonais no gr´afico spectral da s´erie srcinal. E se o ajuste sazonal foi feito adequadamente, espera-se que tais efeitos n˜ao sejam encontrados nas s´ eries dispon´ıveis restantes. Ap´ os a an´alise de todas as ferramentasde diagn´ostico, caso alguma n˜ao conformidade
seja detectada no modelo autom´ atico, o usu´ario deve reajustar o modelo e diagnostic´ a-lo novamente. Algumas altera¸co˜es que podem ajudar a melhorar o ajuste s˜ao: rever a necessidade de transforma¸c˜ao nos dados, isso pode estabilizar a variˆancia; modificar a ordem do modelo SARIMA; inserir ou retirar outliers e/ou vari´aveis de regress˜ao, etc.
4 Se for utilizada a decomposi¸ca˜o aditiva (sem transforma¸ca˜o log) ent˜ ao SI ´e a soma da componente sazonal e da componente irregular S+I. Caso contr´ario, usa-se a multiplica¸ca˜o: S ×I 5 Veja mais detalhes sobre o gr´afico spectral em ( U.S. Census Bureau, 2015, chapter 6).
˜ INDUSTRIAL 6.5. AJUSTE SAZONAL NO ´INDICE DE PRODU¸CAO
207
Ajuste sazonal no ´Indice de Produ¸c˜ ao Industrial Nessa se¸c˜ao, vamos dessazonalizar a s´erie temporal do ´Indice de Produ¸c˜ ao Industrial. Escolhemos essa vari´avel pois a produ¸c˜ao industrial de uma regi˜ao, geralmente ´e afetada pelas ´epocas do ano. Por volta de outubro, por exemplo, ´e esperado um aumento no n´ıvel de produ¸c˜ao devido `as comemora¸co˜es natalinas em dezembro. Nos meses seguintes, no entanto, ´e esperado uma queda nesse n´ıvel. Com ajuste sazonal, a s´erie de produ¸ c˜ao industrial poder´a ser interpretada sem os efeitos do calend´ario, permitindo realizar compara¸c˜oes entre os meses de forma adequada.
O ´ındice de produ¸c˜ao industrial geral do Brasil ´e estimado mensalmente pelo Instituto Brasileiro de Geografia e Estat´ıstica (IBGE, 2015b) pela Pesquisa Industrial Mensal - Produ¸c˜ao F´ısica (PIM-PF) desde a d´ ecada de 1970. Os dados podem ser descritos como um ´ındice sem a juste sazonal com base fixa em 2012 (m´edia de 2012 = 100), e compreendem o espa¸co de tempo de janeiro de 2002 a dezembro de 2014, totalizando 156 observa¸ c˜oes.
Vocˆe pode extrair os dados do sistema SIDRA do IBGE e tamb´ em em https://github. R com a
com/pedrocostaferreira . Ap´os o download em formato .csv, leia o arquivo no
fun¸c˜ao read.csv2() e, em seguida, transforme-o em um objeto de s´eries temporais utilizando a fun¸c˜ao ts() como ´e feito nos pr´oximos comandos:
> pim <- read.csv2("pimpf.csv") > pim.ts <- ts(pim, start = c(2002,1), freq = 12)
Agora podemos executar os quatro passos do algoritmo da se¸ c˜ao 6.4. 1. An´ alise Gr´afica: Para esbo¸car, de forma simples, o gr´ afico de uma s´ erie temporal, utiliza-se a fun¸ca˜o plot(). Outro gr´afico que pode ajudar a entender o comportamento de s´ eries temporais ´e dado pela fun¸ca˜o monthplot(). Nele, ´e poss´ıvel comparar a s´erie hist´ orica de cada
mˆes do ano. A an´ alise gr´afica da s´ erie temporal (figura 6.1) permite supor que o ´ındice
208 CAP´ITULO 6. AJUSTE SAZONAL UTILIZANDO MODELOS X-13 ARIMA -SEATS de produ¸c˜ao industrial a. tem caracter´ıstica sazonal, uma vez que de janeiro a outubro o ´ındice tem comportamento crescente e, nos outros dois meses, decrescente. Esse comportamento se repete em todos os anos; b. tinha uma tendˆ encia crescente antes da crise econˆomica (final de 2008) e parece estar est´avel (sem crescimento ou quedas expressivas) ap´os tal acontecimento; c. parece ter varia¸c˜ao constante, n˜ao necessitando que os dados sejam transformados para estabiliz´a-la; d. foi extremamente afetado pela crise econˆomica no final de 2008. Notamos que o ´ındice atingiu um valor discrepante em rela¸ca˜o ao comportamento habitual. Para criar a figura 6.1, vocˆe pode executar os comandos abaixo. > plot(pim.ts) > monthplot(pim.ts, col.base = 2, lty.base = 2, labels = month.abb) > legend("topleft", legend = c("pim.ts", "average"), + cex = 0.6, lty = c(1,2), col = c(1,2))
ts . m i p
0 1 1
0 1 1
0 0 1
0 0 1 s .t im p
0 9 0 8
pim.ts average
0 9 0 8
0 7
0 7 2002
2004
2006
2008
2010
2012
2014
(a) S´erie hist´ orica ( plot)
Jan
Mar
May
Jul
Sep
Nov
(b) S´ erie hist´ orica por mˆ es (monthplot)
Figura 6.1: An´alise gr´afica do ´ındice de produ¸c˜ao industrial (IBGE,2015). 2. Execu¸ c˜ ao do X-13ARIMA-SEATS no modo autom´atico: A fun¸c˜ao seas() do pacote seasonal6 desempenhar´ a o papel de efetuar o ajuste sazonal no modo autom´atico. 6
Mais detalhes sobre o pacote ver Sax (2015b).
˜ INDUSTRIAL 6.5. AJUSTE SAZONAL NO ´INDICE DE PRODU¸CAO
209
Os principais argumentos da fun¸c˜ao seas() s˜ ao: – x: s´erie temporal de interesse; – arima.model: permite especificar do modelo SARIMA para a s´erie de interesse; – outlier: permite definir se o programa deve ou n˜ao detectar automaticamente outliers; – regression.variables: permite especificar outliers e vari´aveis de calend´ario como P´ascoa, trading days, ano bissexto, entre outras vari´ aveis7 ; – regression.aictest: permite definir se o programa deve ou n˜ao detectar automaticamente vari´aveis de regress˜ao. – transform.function: permite especificar a transforma¸ca˜o que deve ser aplicada na s´erie de interesse. As op¸co˜es dispon´ıveis s˜ ao log (transforma¸c˜ao logar´ıtmica), none (nenhuma transforma¸c˜ ao) ou auto (o programa define se deve ser ou n˜ ao
aplicada a transforma¸c˜ao log); A fun¸ca˜o seas(), no entanto, requer apenas a s´erie temporal em que se pretende fazer o ajuste sazonal para o seu funcionamento. Os outros argumentos, nem todos exemplificados anteriormente, funcionar˜ao no modo autom´atico. Logo, para executar o ajuste sazonal em uma s´ erie temporal no modo autom´ atico, o usu´ario pode utilizar seas(x). > (ajuste <- seas(pim.ts)) Call: seas(x = pim.ts) Coefficients: Mon 0.0055494 Fri 0.0004402 AO2011.Feb 0.0612578
Tue 0.0053673 Sat -0.0002930 AO2014.Feb 0.0629949
Wed 0.0022694 Easter[1] -0.0242646 MA-Seasonal-12 0.6797172
Thu 0.0052843 LS2008.Dec -0.1334385
No modelo ajustado automaticamente foram detectados efeitos da P´ ascoa, de dias da 7
Outras vari´ aveis pr´ e-definidas podem ser encontradas em X13-ARIMA-SEATS Reference ManualAcessible HTML Output Version (U.S. Census Bureau, 2015, chapter 7, pp. 144-147)
210 CAP´ITULO 6. AJUSTE SAZONAL UTILIZANDO MODELOS X-13 ARIMA -SEATS semana e tamb´ em de outliers. Foi detectado um outlier level shift no mˆes de dezembro de 2008 ( LS2008.Dec), mˆes extremamente afetado pela crise econˆ omica. Outros dois outliers, n˜ao esperados visualmente pela an´ alise da figura 6.1, foram detectados em fevereiro de 2011 ( AO2011.Feb) e 2014 ( AO2014.Feb). Esses s˜ao do tip o aditivo. O pr´ oximo passo ´e avaliar esse ajuste. 3. Avalia¸c˜ ao do ajuste sazonal : Para avaliar o ajuste sazonal feito no modo autom´ atico, vamos precisar dos resultados do t´opico 3 apresentados na se¸c˜ ao 6.4. Um breve resumo desses resultados s˜ao obtidos pela fun¸ca˜o summary(). > summary(ajuste) Call: seas(x = pim.ts) Coefficients: Mon Tue Wed Thu Fri Sat Easter[1] LS2008.Dec AO2011.Feb AO2014.Feb MA-Seasonal-12 --Signif. codes:
Estimate 0.0055494 0.0053673 0.0022694 0.0052843
Std. Error z value Pr(>|z|) 0.0023373 2.374 0.0176 * 0.0023757 2.259 0.0239 * 0.0022926 0 .990 0 .3222 0.0023300 2.268 0.0233 *
0.0004402 0.0023069 0 .191 0 .8487 -0.0002930 0.0023159 -0.127 0.8993 -0.0242646 0.0043734 -5.548 2.89e-08 *** -0.1334385 0.0182778 -7.301 2.87e-13 *** 0.0612578 0.0129029 4.748 2.06e-06 *** 0.0629949 0.0140520 4.483 7.36e-06 *** 0.6797172 0.0694161 9.792 < 2e-16 *** 0 ‘***’ 0.001 ‘**’ 0.0 1 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1
SEATS adj. ARIMA: (0 1 0) (0 1 1) Obs.: 156 Transform: log AICc: 613.8, BIC: 646.9 QS (no seasonality in final): 0 Box-Ljung (no autocorr.): 23.4 Shapiro (normality): 0.9817 *
Vocˆe p ode ver que foi a justado um modelo SARIMA(0 1 0)(0 1 1). O parˆametro MASeasonal-12 foi significativo ao considerar n´ıvel de significˆ ancia de 5%. O mesmo pode
ser dito para o efeito dos trˆes outliers e da vari´avel que refleta a P´ascoa ( Easter[1]). Embora nem todos os dias da semana sejam significativos considerando n´ıvel de 5% de significˆ ancia, trˆes dias foram (Mon, Tue e Thu), e isso ´e suficiente para mantˆ e-los no
˜ INDUSTRIAL 6.5. AJUSTE SAZONAL NO ´INDICE DE PRODU¸CAO
211
modelo e concluir que h´a ind´ıcios de que a produ¸ca˜o industrial seja afetada pelos dias da semana.
O leitor tamb´ em pode observar que a hip´ otese de normalidade dos res´ ıduos foi rejeitada com 95% de confian¸ca e a transforma¸c˜ao log foi aplicada na s´ erie srcinal, embora no in´ıcio tenhamos acreditado que isso n˜ ao fosse necess´ario ao verificar a an´alise gr´afica. E o teste de Ljung & Box, sugere n˜ ao haver evidˆ encias de autocorrela¸c˜ao residual at´e o lag 24.
Al´em desses resultados, vamos criar um gr´ afico spectral para analisar se h´a efeitos da sazonalidade e de trading days. O gr´afico pode ser feito no R ap´os extrair o spectral output utilizando a fun¸c˜ao series() do pacote seasonal e transform´a-lo em um objeto da classe data.frame. Vocˆe pode usar o c´ odigo, a seguir, para extrair o spectral output para a s´erie srcina l8 (sp0). > spec.orig <- data.frame(series(ajuste, "sp0"))
O gr´afico pode ser feito utilizanto o pacote ggplot2 com as configura¸c˜oes abaixo. > library(ggplot2) > ggplot(aes(x=0:60,y = X10.Log.Spectrum_AdjOri.), + data = spec.orig, colour = "black") + + geom_line() + + geom_vline(colour = "red", xintercept = c(10, 20, 30, 40, 50 ), + linetype = 5) + + geom_vline(colour = "blue", xintercept = c(42, 52), linetype = 3) + + ylab(" ") + xl ab(" ") + the me_bw() + + ggtitle("Spectral plot of the first-differenced original series") + + theme(plot.title = element_text(lineheight=2, face="bold",size = 16))
O gr´afico spectral (figura 7.2), mostra ind´ıcios de efeitos de sazonalidade na s´erie srcinal (7.2a), visto que nas frequˆ encias sazonais (10, 20, 30, 40, 50) a s´erie temporal toma forma de picos bem definidos. J´a nas frequˆ encias de trading days (linha pontilhada em 8
Para ver a codifica¸ca˜o para as outras s´ eries al´ em da s´erie srcinal ver (U.S. Census Bureau, 2015, chapter 7, pp. 194)
212 CAP´ITULO 6. AJUSTE SAZONAL UTILIZANDO MODELOS X-13 ARIMA -SEATS Spectral plot of the first−differenced srcinal series
Spectrum of the differenced final SEATS seasonal adjustment
−10 −32.5
−20
−35.0
−37.5 −30 −40.0
−42.5
−40 0
20
40
60
0
(a) Original Series
20
40
60
(b) Adjusted Series
Spectrum of the final SEATS irregular
Spectral plot of the regARIMA model residuals −30.0
0
−32.5
−10 −35.0
−37.5
−20
−40.0 0
20
40
60
(c) Irregular Series
0
20
40
60
(d) RegARIMA Model Residuals
Figura 6.2: An´alise spectral do ajuste sazonal. azul, aproximadamente 42 e 52), n˜ao se pode concluir o mesmo pois n˜ ao h´a forma de picos. Para as outras trˆes s´eries n˜ ao foi detectado picos de sazonalidade, por´em, h´ a leves ind´ıcios de efeitos de trading days, o que ´e estranho pois foi inclu´ıdo o efeito de trading days no modelo do ajuste.
As suposi¸c˜ oes de sazonalidade na s´erie srcinal n˜ao s˜ao rejeitadas com a an´alise da estat´ıstica QS. Os testes de sazonalidade nas demais s´eries apresentadas na tabela 6.1 da se¸c˜ao 6.4, podem ser vistos utilizando a fun¸c˜ao qs() do pacote seasonal: > qs(ajuste)
qsori qsorievadj qsrsd qssadj qssadjevadj qsirr
qs p-val 162.66893 0.00000 236.53944 0.00000 0.02387 0.98814 0.00000 1.00000 0.00000 1.00000 0.00000 1.00000
qsirrevadj qssori qssorievadj qssrsd
0.00000 81.40339 136.59753 0.00000
1.00000 0.00000 0.00000 1.00000
˜ INDUSTRIAL 6.5. AJUSTE SAZONAL NO ´INDICE DE PRODU¸CAO qsssadj qsssadjevadj qssirr qssirrevadj
0.00000 0.00000 0.00000 0.00000
213
1.00000 1.00000 1.00000 1.00000
Uma vez que a s´ erie pim.ts apresenta mais de 96 observa¸c˜oes, o teste de sazonalidade foi calculado para a s´erie completa e para os 8 anos mais recentes. Nota-se que o p-valor ´e pequeno tanto para s´ erie srcinal ( qsori) como para a s´ erie srcinal corrigida por outliers ( qsorievadj), isto ´e, n˜ ao h´a evidˆ encias de que a s´ erie do ´ındice de produ¸ c˜ ao industrial n˜ao seja sazonal. Nas demais s´eries, pelo p-value ser pr´ oximo de 1, conclui-se o contr´ario: h´a evidˆ encias de n˜ ao sazonalidade nas s´eries temporais. Assim, se tratando de sazonalidade, o X-13ARIMA-SEATS cumpriu bem o seu dever de removˆe-la.
Mais uma ferramenta para avaliar a qualidade do a juste sazonal ´e dado pelo gr´afico SI ratio. Para esbo¸c´a-lo, utiliza-se a fun¸c˜ao monthplot(). > monthplot(ajuste, col.base = 1, lty.base = 2, + labels = month.abb, lwd.base = 2) > legend("topleft", legend = c("SI", "FS", "Mean FS"), + cex = 0.7, lty = c(1,1,2), col = c(4,2,1), lwd = c(1,2,2))
Seasonal Component, SI Ratio 0 1 . 1
SI FS Mean FS
0 0 . 1
0 9 . 0
Jan
Feb
Mar
Apr
May
Jun
Jul
Aug
Sep
Oct
Nov
Dec
Figura 6.3: SI Ratio and Seasonal Factors. Na figura 6.3, as linhas azuis (verticais) referem-se a componente SI ratio (componentes sazonal e irregular agregadas). As linhas vermelhas (real¸cadas) representam os fatores
214 CAP´ITULO 6. AJUSTE SAZONAL UTILIZANDO MODELOS X-13 ARIMA -SEATS sazonais. E a linha tracejada ´e a m´edia dos fatores sazonais naquele mˆes. Pode-se observar que os fatores sazonais tendem a acompanhar os SI ratio. Isso significa que a componente SI ratio n˜ao ´e dominada pela componente irregular, isto ´e, os erros tem um comportamento est´avel em torno de zero e a decomposi¸ c˜ao das componentes n˜ao observ´ aveis da s´ erie temporal foi feita adequadamente. No entanto, note que para o mˆes de fevereiro (em que dois outliers foram encontrados), o SI ratio ´e dominado pela componente irregular.
Pode-se concluir ent˜ao que o ajuste sazonal autom´ atico j´a forneceu bons resultados, por´em, como alguns pressupostos necess´ arios (normalidade dos res´ıduos) n˜ ao foram confirmados estatisticamente, o modelo precisa ser especificado com mais detalhes. 4. Corre¸ c˜ ao do ajuste sazonal : Ap´ os a an´alise do ajuste sazonal autom´atico no t´opico 3, verificamos que o modelo precisava ser corrigido. O IBGE, utilizand o o m´etodo X-12-ARIMA, adiciona ao modelo de ajuste sazonal, al´em de efeitos de trading days e P´ascoa, o efeito do Carnaval IBGE (2015c). Esse efeito tamb´ em ser´ a acrescentado e esperamos que as altera¸ c˜ oes corrijam a normalidade dos res´ıduos e o novo modelo tenha um crit´erio de informa¸ c˜ao inferior ao do modelo autom´atico.
Para criar a vari´avel de Carnaval, vamos utilizar a fun¸c˜ao genhol() do seasonal: genhol(x, start, end, frequency)
– x: um vetor da clas se "Date", contendo as datas de ocorrˆencia do feriado. Pode ser criado pela fun¸c˜ao as.Date; – start: inteiro, desloca o ponto inicial do feriado. Use valores negativos se o efeito come¸ca antes da data espec´ıfica; – end: inteiro, desloca o ponto final do feria do. Use valore negativos se o efeito termina antes da data espec´ıfica; – frequency: inteiro, frequˆ encia da s´erie temporal resultante.
˜ INDUSTRIAL 6.5. AJUSTE SAZONAL NO ´INDICE DE PRODU¸CAO
215
Para os argumentos start e end escolhemos colocar uma janela de 3 dias antes e um dia depois do feriado, uma vez que no Brasil o feriado dura quase uma semana, mas o leitor pode se sentir livre para alterar esses argume ntos. Ao argumento frequency foi atribu´ ıdo 12 pois os dados s˜ ao mensais. > dates <- c("02/12/2002","03/04/2003","02/24/2004","02/08/2005", + "02/28/2006","02/20/2007","02/05/2008","02/24/2009", + "02/16/2010","03/08/2011","02/21/2012","02/12/2013", + "03/04/2014","02/17/2015","02/09/2016","02/28/2017") > carnaval.date <- as.Date(dates, "%m/%d/%Y") > carnaval <- genhol(carnaval.date, start = -3, end = 1, frequency = 12)
Para acrescentar a vari´avel carnaval ao ajuste sazonal, precisamos especificar o argumento xreg = carnaval .
Os trading days poderiam ser espec´ıficos para cada dia da semana como foi feito no ajuste autom´atico, ou apenas uma vari´avel que combinassem essas informa¸c˜oes espec´ıficas (ver nota de rodap´e 7). Ambos os tipos foram testados com e sem o efeito do ano bissexto. E a op¸c˜ao que melhor 9 caracterizou o modelo foi apenas uma vari´avel que indicasse efeitos do dia da semana mais o efeito de anos bissextos e esta ´e indicada p or td1coef. > ajuste_novo <- seas(pim.ts, transform.function = "none", + xreg = carnaval, regression.variables = "td1coef") > summary(ajuste_novo) Call: seas(x = pim.ts, xreg = carnaval, transform.function = "none", regression.variables = "td1coef") Coefficients: carnaval Leap Year Weekday Easter[1] AO2008.Nov LS2008.Dec 9
Estimate Std. Error -2.99294 0.48858 2.41881 0.72837 0.35307 0.03042 -2.98161 0.41291 -6.80666 1.49598 -17.09895 1.79260
z value Pr(>|z|) -6.126 9.02e-10 *** 3.321 0.000897 *** 11.605 < 2e-16 *** -7.221 5.16e-13 *** -4.550 5.37e-06 *** -9.539 < 2e-16 ***
Como melhor, consideramos os parˆametros significativos e a redu¸ca˜o do crit´ erio de informa¸ ca˜o BIC.
216 CAP´ITULO 6. AJUSTE SAZONAL UTILIZANDO MODELOS X-13 ARIMA -SEATS AO2011.Dec AR-Nonseasonal-01 MA-Seasonal-12 --Signif. codes: 0
5.05730 -0.28065 0.52321 ***
'
'
0.001
1.18157 0.07945 0.07747 **
'
'
0.01
4.280 1.87e-05 *** -3.533 0.000411 *** 6.754 1.44e-11 *** *
'
'
0.05
.
'
'
0.1
'
'
1
SEATS ad j. ARIMA: (1 1 0) (0 1 1) Obs.: 156 Transform: n one AICc: 581. 9, BIC: 609.8 QS (no seasonality in final):0.3735 Box-Ljung (no autocorr.): 20.4 6 Shapiro (nor mality): 0.9908
Com as mudan¸cas inseridas na fun¸c˜ao seas(), o modelo SARIMA tamb´em foi modificado de (0 1 0)(0 1 1)
para (1 1 0)(0 1 1)
com todos os parˆamentros significativos
com 95% de confian¸ca. As vari´aveis de regress˜ao tamb´ em foram significativas considerando o mesmo n´ıvel de confian¸ ca e, assim, podemos concluir que a quantidade de dias da semana e o ano bissexto influenciam na produ¸ c˜ao industrial brasileira.
O leitor tamb´em deve ter reparado que as altera¸c˜ oes nos permitiram concluir que os res´ıduos seguem distribui¸c˜ao normal, que os crit´ erios de informa¸c˜ao AICc e BIC s˜ao consideravelmente inferiores ao do ajuste autom´atico, e que o programa encontrou mais um outlier al´em dos relacionados a crise econˆ omica de 2008 ( AO2011.Dec). O teste de Ljung & Box n˜ao mostrou autocorrela¸ca˜o residual nos lags de 1 a 24.
˜ INDUSTRIAL 6.5. AJUSTE SAZONAL NO ´INDICE DE PRODU¸CAO Spectral plot of the first−differenced srcinal series
30
217
Spectrum of the differenced final SEATS seasonal adjustment 10
5
20
0 10
−5 0
0
20
40
60
0
20
(a) Original Series
40
60
(b) Adjusted Series
Spectrum of the final SEATS irregular
Spectral plot of the regARIMA model residuals −30.0
0
−32.5
−10 −35.0
−37.5
−20
−40.0 0
20
40
60
0
(c) Irregular Series
20
40
60
(d) RegARIMA Model Residuals
Figura 6.4: An´alise spectral do ajuste sazonal corrigido.
A an´alise do gr´afico spectral (figura 6.4), de forma diferente da an´alise feita no t´opico 3, n˜ao mostra ind´ıcios de efeitos de trading days na s´erie com ajuste sazonal. Os fatores sazonais (figura 6.5) aparentam ter um comportamento mais suave do que o do ajuste autom´atico. Repare que o mˆes de fevereiro foi melhor captado depois da corre¸cao. ˜ Note tamb´ em o impacto dos outliers nos fatores sazonal de novembro de 2008 e de dezembro de 2011: a componente SI assume um valor discrepante comparado aos outros valores do mesmo mˆes.
Seasonal Component, SI Ratio 0 1
5
SI FS Mean FS
0
5 −
0 1 −
Jan
Feb
Mar
Apr
May
Jun
Jul
Aug
Sep
Oct
Nov
Dec
Figura 6.5: SI Ratio and Seasonal Factors para o modelo corrigido.
218 CAP´ITULO 6. AJUSTE SAZONAL UTILIZANDO MODELOS X-13 ARIMA -SEATS A conclus˜ao do teste de sazonalidade ´e semelhante `a conclus˜ao do teste de sazonalidade para o ajuste autom´atico, tamb´ em qualificando este ajuste em adequado. > qs(ajuste_novo)
qsori qsorievadj
qs p-val 162.66893 0.00000 230.29764 0.00000
qsrsd 0.00000 1.00000 qssadj 0.37351 0.82965 qssadjevadj 0.00000 1.00000 qsirr 0.00000 1.00000 qsirrevadj 0.00000 1.00000 qssori 81.40339 0.00000 qssorievadj 131.02081 0.00000 qssrsd 0.00000 1.00000 qsssadj 0.00186 0.99907 qsssadjevadj 0.00000 1.00000 qssirr 0.00000 1.00000 qssirrevadj 0.00000 1.00000
Por fim, temos o gr´afico do ´ındice de produ¸c˜ao industrial com ajuste sazonal pelo X13ARIMA-SEATS em que o leitor pode notar o comportamento decrescente do ´ındice nos ´ultimos meses. > plot(ajuste_novo) > legend("topleft", legend = c("Observada", "Com ajuste sazonal"), + cex = 0.7, lty = 1, col = c(1,2), lwd = c(1,2))
Considera¸ c˜ oes Finais Neste cap´ıtulo aprendemos o que ´e o ajuste sazonal e a sua finalidade. Vimos que n˜ ao h´a apenas uma maneira de se dessazonalizar uma s´erie temporal, embora tenhamos focado em apenas uma: o programa de ajuste sazonal do US Census Bureau , o X-13ARIMA-SEATS. Aprendemos os passos necess´arios de como executar o X-13 no R e m´etodos de avaliar a qualidade do ajuste sazonal a partir de diversos diagn´ osticos. Al´ em disso, vimos a utilidade da etapa de pr´e-ajuste no X-13, que permitiu a inser¸c˜ao de outras vari´aveis, aprimorando as
˜ 6.6. CONSIDERA¸COES FINAIS
219
Original and Adjusted Series 0 1 1
Observada Com ajuste sazonal
AO
0 0 1
AO
0 9
LS
0 8
0 7
2002
2004
2006
2008
2010
2012
2014
Time
Figura 6.6: ´Indice de produ¸c˜ao industrial geral do Brasil com ajuste sazonal. avalia¸ c˜oes do diagn´ostico.
Apesar de ter sido uma experiˆencia interessante, sabemos que ainda ficaram faltando alguns pontos a serem abordados, como p or exemplo, o ajuste de diversas s´eries temporais simultaneamente, pois sabemos que h´a interesse em fazer isso para outras s´eries temporais al´em do ´ındice de produ¸ c˜ao industrial como, por exemplo, a infla¸c˜ ao, o PIB, etc. E tamb´ em n˜ao abordamos a previs˜oes da s´erie com ajuste sazonal. Nesse sentido, ´e importante que o leitor que estiver usando esse manual para dessazonalizar s´eries temporais, tenha ciˆencia de suas limita¸c˜oes e busque, sempre que poss´ıvel, aprofundar o seu conhecimento sobre o assunto.
220 CAP´ITULO 6. AJUSTE SAZONAL UTILIZANDO MODELOS X-13 ARIMA -SEATS
Parte III
An´ alise de S´ eries Temporais: Modelos Multivariados
221
Modelo de Box & Jenkins com fun¸c˜ ao de transferˆ encia Daiane Marcolino de Mattos Pedro Costa Ferreira
˜ DE TRANSFERENCIA ˆ 224CAP´ITULO 7. MODELO DE BOX & JENKINS COM FUN C ¸ AO
Introdu¸ c˜ ao Este cap´ıtulo ´e dedicado a apresenta¸ c˜ao dos modelos de Box e Jenkins (1970) com vari´aveis auxiliares. A utiliza¸c˜ao de vari´aveis auxiliares nesses modelos por meio de fun¸ c˜oes de transferˆ encias pode aperfei¸coar a modelagem e previs˜ao de s´eries temporais (ST).
O tema ser´a exposto utilizando um exemplo cl´assico de Box & Jenkins (BJ) em que a produ¸c˜ao de CO 2 (di´oxido de carbono) ´e influenciada pela Taxa de Alimenta¸c˜ao de Metano. O exemplo ´e aplicado de forma simples e objetiva no software R, n˜ ao necessitando que o leitor entenda profundamente sobre as vari´aveis. No entanto, saiba que esse tipo de modelagem ´e baseada na rela¸c˜ ao causal entre as STs, ent˜ao o leitor precisa ter conhecimento sobre o tema de interesse ao generalizar esse estudo para outras STs.
Para que vocˆ e acompanhe o objetivo desse cap´ıtulo, este foi dividido em mais outras quatro se¸c˜ oes: Na se¸c˜ao 7.2, apresentamos a defini¸c˜ao de Fun¸c˜ao de Transferˆ encia (FT); na se¸ca˜o 7.3, informamos os pacotes necess´arios para a modelagem no R e tamb´ em as vari´ aveis que utilizaremos; na se¸c˜ao 7.4, vocˆ e aprender´a sobre a metodologia; e na se¸ c˜ao 7.5, vamos discutir algumas considera¸c˜oes finais.
Defini¸ ca ˜o Os modelos de Box e Jenkins (1970) podem incorporar outras vari´aveis auxiliares. A forma como essas vari´aveis auxiliares Xt influenciam a vari´avel resposta Yt , isto ´e, como os movimentos dessas vari´aveis afetam o percurso da vari´avel resposta, ´e dada por uma fun¸ca˜o de transferˆ encia f (Xt ):
Yt = f (Xt ) + εt
onde ε t pode ser um ru´ıdo branco ou um modelo ARIMA completo.
(7.1)
´ 7.3. DADOS E PACOTES NECESS ARIOS
225
A fun¸c˜ao f (Xt ) pode agrupar valores passados e/ou presentes de uma ou mais s´eries temporais, que podem ser do tipo quantitativo ou bin´ ario ( dummy ) e essa distin¸c˜ao implica na forma de identifica¸c˜ao de f (Xt ). No caso de uma ST quantitativa, a forma gen´erica de uma ao seguinte: f (Xt ) pode ser denotada pela equa¸c˜
f (Xt ) =
( w0 + w1 L + w2 L2 + ... + ws Ls ) Xt −b (1 − δ1 L − δ2 L2 − ... − δr Lr )
(7.2)
Certamente o leitor notou que para identificar f (Xt ), ´e necess´ ario descobrir os valores de r, s e b e estimar os parˆametros w i , i = 0,..., s e δ j , j = 1,..., r. Vamos esclarecer como isso pode ser feito aplicando a metodologia a um exemplo cl´ assico extra´ıdo de Box e Jenkins (1970) na se¸ca˜o seguinte.
Dados e pacotes necess´ arios Para a modelagem de Box & Jenkins com fun¸ c˜ao de transferˆ encia (BJFT), os seguintes pacotes devem ser instalados: • •
devtools (usado na extra¸c˜ ao dos dados); forecast (usado na estima¸c˜ ao e previs˜ao de modelos ARIMA);
•
TSA (usado na estima¸c˜ ao de modelos ARIMA com fun¸c˜ao de transferˆencia);
•
tseries (usado para executar teste de normalidade em s´ eries temporais);
•
FinTS (usado para executar testes de heterocedasticidade em s´ eries temporais).
´ importante o leitor saber que outros pacotes tamb´ E em ser˜ao utilizados na modelagem BJFT. No entanto, n˜ao h´a necessidade de instal´a-los pois j´a est˜ao inclu´ıdos na vers˜ ao base do R, como exemplo podemos citar o pacote stats que ´e utilizado para calcular fun¸c˜oes de autocorrela¸ca˜o e extrair res´ıduos de modelos, e o pacote graphics usado para visualizar gr´aficos.
Para identificar e estimar a fun¸c˜ao de transferˆ encia f (Xt ), ser´a utilizado um exemplo cl´assico extra´ ıdo de Box e Jenkins (1970). Tal exemp lo investiga a otimiza¸c˜ ao adaptativa
˜ DE TRANSFERENCIA ˆ 226CAP´ITULO 7. MODELO DE BOX & JENKINS COM FUN C ¸ AO de um aquecedor a g´as, isto ´e, foi utilizado uma combina¸ca˜o de ar e metano para formar uma mistura de gases contendo CO
2
(di´oxido de carbono). A alimenta¸c˜ao de ar foi mantida
constante, mas a taxa de alimenta¸c˜ao de metano poderia ser variada de qualquer maneira desejada. Ap´os a combina¸c˜ ao, a concentra¸c˜ao de CO 2 resultante nos gases de exaust˜ao foi medida. A finalidade do exemplo ´e encontrar a forma como a vari´avel Taxa de Alimenta¸c˜ao de Metano ( Xt ) se relaciona com Concentra¸c˜ao de CO 2 (Yt ). Cada vari´avel representa uma s´erie temporal de 296 observa¸c˜oes e os dados podem ser baixados diretamente pelo
R executando
as linhas de comando a seguir.
> devtools::source_url("http://git.io/vCXJC") > gas
As colunas do objeto gas referem-se `a vari´avel independente Xt e `a vari´avel dependente eries em an´alise. Yt , nessa ordem. Observamos na figura 7.1 o comportamento de ambas as s´ Como visto no cap´ıtulo sobre a modelagem BJ, as s´eries n˜ ao apresentam um comportamento estacion´ario em todo o espa¸co de tempo, com varia¸c˜oes n˜ao constantes e uma leve tendˆ encia1 de queda para Xt e crescimento para Yt .
> plot(gas, main = "Input Gas Rate (X) e CO2 (Y)")
1
Lembre-se que para confirmar essa afirma¸c˜ ao o mais correto ´e fazer um teste de raiz unit´ aria.
7.4. METODOLOGIA
te a R s a tG u p n I
2 O C
227
2 0 2 − 0 6 5 5 0 5
0
50
100
150
200
250
300
Time
Figura 7.1: Input Gas Rate (X) e CO
2
(Y)
Metodologia Agora que vocˆ e j´ a foi apresentado `as STs, apresentamos os passos de identifica¸ c˜ao da f (Xt ), que segundo a metodologia de BJ s˜ao:
1. Calcular a fun¸c˜ao de correla¸c˜ao cruzada entre Yt e Xt ; 2. Identificar r , s e b; 3. Estimar o modelo BJFT; 4. Verificar se o modelo ´e adequado. Vamos discutir cada etapa nas se¸c˜ oes seguintes.
Calcular a fun¸c˜ ao de correla¸ c˜ ao cruzada entre Y e X Como vimos na defini¸c˜ ao de FT, para identific´a-las, inicialmente, basta estipularmos valores para r , s e b (lembre-se que estamos trabalhando apenas com s´eries quantitativas). A identifica¸c˜ao desses valores ´e feita calculando a fun¸c˜ao de correla¸c˜ao cruzada (CCF) entre Yt e as vari´aveis auxiliares (apenas uma neste exemplo). A CCF entre as s´eries temporais Yt e
˜ DE TRANSFERENCIA ˆ 228CAP´ITULO 7. MODELO DE BOX & JENKINS COM FUN C ¸ AO Xt mostra as correla¸c˜ oes entre elas para diferentes defasagens no tempo, sendo definida como:
cc f (k) =
cxy (k) , sx sy
k = 0 , ±1, ±2,...
(7.3)
onde: sx e sy representam, respectivamente, os desvios-padr˜ ao de Xt e Yt . cxy (k) representa a covariˆ ancia entre as duas vari´aveis no lag k:
( )=
cxy k
1 n−k
∑ (xt − x¯ )(yt +k − y¯ ),
n t =1 1
k = 0, 1, 2,...
n+k
∑ (yt − y¯ )(xt −k − x¯ ),
n t =1
k = 0, −1, −2,...
Para k > 0 , a CCF mostra o relacionamento entre X no tempo t e Y no tempo futuro t + k. Em contrapartida, para valores negativos de k, tem-se o relacionamento entre X no
tempo t e Y no tempo passado t − k.
´ importante saber que a CCF ´e afetada pela autocorrela¸c˜ao de Xt e Yt , e se as STs n˜ao E forem estacion´arias, o resultado da CCF n˜ ao refletir´a realmente o grau de associa¸ c˜ao entre elas ( Hamilton, 1994c; Phillips e Perron , 1988). Para corrigir esse problema, BJ sugeriram o m´etodo de pr´ e-branqueamento2 .
O pr´ e-branqueamento permite eliminar a estrutura de tendˆ encia (determin´ıstica ou estoc´astica) presente numa s´erie temporal. O m´etodo consiste nas seguintes etapas: (a) Ajustar um modelo ARIMA para a s´erie independente Xt ; (b) Filtrar Yt pelo modelo encontrado em (a), isto ´e, o modelo de Yt e´ o mesmo modelo de Xt (com os mesmos parˆametros estimados);
(c) Salvar os res´ıduos dos dois modelos; (d) Calcular a CCF entre os res´ıduos obtidos em (c). 2 Existe tamb´ em o pr´ e-branquamento duplo, em que ´e ajustado para cada vari´ avel seu pr´oprio modelo ARIMA. No entanto, por tornar as duas s´ eries um ru´ıdo branco, a correla¸ca˜o entre elas pode ser puramente devida ao acaso.
7.4. METODOLOGIA
229
A seguir discute-se cada etapa separadamente aplicando-as ` as ST dispon´ıveis por BJ. (a) Ajustar um modelo ARIMA para a s´ erie independente Xt : J´ a aprendemos a identificar as ordens de um modelo ARIMA para
ao Xt usando a fun¸c˜
de autocorrela¸ca˜o (ACF) e a fun¸c˜ao de autocorrela¸c˜ ao parcial (PACF)3 . > acf(gas[,"InputGasRate"], lag.max = 36) > pacf(gas[,"InputGasRate"], lag.max = 36)
0 . 1 .8 0
F C A
F C A l a ti r a P
.4 0
.5 0
0 . 0 5 . 0
.0 0
−
0
5
10
15
20
25
30
35
Lag
0
5
10
15
20
25
30
35
Lag
Figura 7.2: ACF and PACF: Input Gas Rate (X) A queda exponencial da ACF e o corte brusco da PACF no lag 3 (figura
7.2) sugerem
um modelo ARIMA (3,0,0). Ao a justar o modelo ARIMA (fun¸c˜ao Arima() do pacote forecast), a constante n˜ ao foi significativa, sendo esta exclu´ıda do modelo. Veja os
c´odigos a seguir para a estima¸c˜ ao do modelo. > library("forecast") > (modelo_x <- Arima(gas[,"InputGasRate"], + order = c(3,0,0), include.mean = F))
3 Um m´ etodo que auxilia na identifica¸ca˜o de modelos ARIMA s˜ ao os crit´ erios de informa¸ca˜o, como por exemplo AIC (Akaike, 1973) e BIC ( Schwarz, 1978).
˜ DE TRANSFERENCIA ˆ 230CAP´ITULO 7. MODELO DE BOX & JENKINS COM FUN C ¸ AO Series: gas[, "InputGasRate"] ARIMA(3,0,0) with zero mean Coefficients: ar1 ar2 ar3 1.9696 -1.3659 0.3399 s.e. 0.0544 0.0985 0.0543 sigma^2 estim ated as 0.0353 1: log likel ihood=72.52 AIC=-137.04 AICc=-136.9 BIC=-122.27
(b) Filtrar Yt pelo modelo encontrado em (a): Para filtrar Yt por meio do modelo de
Xt , tamb´ em vamos usar a fun¸c˜ao Arima(), no
entanto, agora acrescentaremos o argumento model indicando o modelo j´a estimado anteriormente. > (modelo_y <- Arima(gas[,"CO2"], model = modelo_x)) Series: gas[, "CO2"] ARIMA(3,0,0) with zero mean Coefficients:
s.e.
ar1 1.9696 0.0000
ar2 ar3 -1.3659 0.3399 0.0000 0.0000
sigma^2 estim ated as 9.56: AIC=1514.94 AICc=1514.96
log likel ihood=-756.47 BIC=1518.63
(c) Salvar os res´ıduos dos dois modelos: Os res´ıduos podem ser obtidos pela fun¸c˜ao resid() e ser˜ao salvos em novos objetos: alpha e beta para os modelos de X e Y , respectivamente. > alpha <- resid(modelo_x) > beta <- resid(modelo_y)
(d) Calcular a CCF entre os res´ıduos obtidos em (c): Agora que as vari´aveis foram filtradas, podemos calcular a CCF (figura
7.3) entre os
7.4. METODOLOGIA
231
res´ıduos utilizando a fun¸ca˜o ccf() do pacote stats. A CCF nesse gr ´afico mostra o relacionamento entre Yt e os lags defasados de Xt a partir dos coeficientes de correla¸c˜ao. Veja que n˜ao h´a correla¸c˜ ao significativa entre Yt e Xt no tempo presente (t = 0) e a primeira correla¸ca˜o significativa ´e dada para t = 3, ou seja, entre Y no tempo presente e X defasada em 3 lags. > ccf(beta, alpha, xlim = c(0,20))
.1 0 F C A
.1 0 − .3 0 −
0
5
10
15
20
Lag
Figura 7.3: CCF: Input Gas Rate (X) and CO
2
(Y)
Identificar r, s e b Com a CCF estimada, pode-se descobrir as ordens r, s e b : •
b: refere-se ao primeiro lag significativo. Representa a primeira defasagem de X que
entrar´ a no modelo. Neste caso, b = 3 . •
umero de lags crescentes depois de b. Representa as pr´oximas defasagen s de X que s: n´ entrar˜ ao no modelo. Logo, s = 2 .
•
r: por haver queda exponencial
4
ap´os os lags crescentes, r = 1 .
Portanto, o modelo cont´ em Xt −3 , Xt −4 e Xt −5 e a f (Xt ) ´e definida como 2
f (Xt ) = ( w0 + w1 L + w2 L ) Xt −3 (1 − δ L) 1
4
Queda exponencial na CCF indica parˆ ametros no denominador (r ), enquanto picos indicam parˆametros no numerador (s). Veja um exemplo em ( Box e Jenkins, 1970, fig. 10.6).
˜ DE TRANSFERENCIA ˆ 232CAP´ITULO 7. MODELO DE BOX & JENKINS COM FUN C ¸ AO
Estimar o modelo BJ com FT Uma vez que identificamos a forma de
ao. f (Xt ), passaremos para a etapa de estima¸ c˜
Inicialmente, ´e preciso identificar a ordem do modelo ARIMA para a s´ erie Yt , assim como foi feito para Xt .
> acf(gas[,"CO2"], lag.max = 36, main = "ACF: CO2 (Y)") > pacf(gas[,"CO2"], lag.max = 36, main = "PACF: CO2 (Y)")
0 . 1 .8 0
F C A
F C A l ia t r a P
4 . 0
.5 0
.0 0 .5 0 −
0 . 0
0
5
10
15
20
25
30
35
0
5
10
15
Lag
20
25
30
35
Lag
Figura 7.4: ACF and PACF: CO
2
(Y)
A queda exponencial da ACF e o corte brusco da PACF no lag 2 (figura
7.4) sugerem
um modelo ARIMA(2,0, 0).
Finalmente, vamos estimar o modelo com fun¸c˜ao de transferˆ encia utilizando a fun¸ca˜o ao s˜ao: arimax() do pacote TSA. Os argumentos utilizados na fun¸c˜ •
x: s´ erie dependente (Yt );
•
order: ordem do modelo ARIMA para Yt ;
•
xtransf: s´ erie independente (Xt ) j´a defasada no lag b;
•
transfer: valores de r e s na forma list(c(r,s)).
Para defasar a vari´avel Xt em trˆes lags, o leitor pode usar a fun¸c˜ao lag() do pacote stats.
7.4. METODOLOGIA
233
> x_novo <- lag(gas[,"InputGasRate"], k = -3)
Como trˆes valores de Xt foram“perdidos” para estimar o modelo, ´e preciso cortar os trˆ es primeiros valores de Yt para os dois conjuntos de dados terem o mesmo tamanho. > gas_novo <- na.omit(cbind(x_novo, gas[,"CO2"])) > colnames(gas_novo) <- c("InputGasRate", "CO2") > head(gas_novo)
InputGasRate -0.109 0.000 0.178 0.339 0.373 0.441
CO2 53.5 53.4 53.1 52.7 52.4 52.2
Com os dados na forma correta, estima-se um modelo para a vari´ avel dependente CO2 .
> (modelo_ft <- arimax(x = gas_novo[,"CO2"], order = c(2,0,0), + xtransf = gas_novo[,"InputGasRate"], + transfer = list(c(1,2))) )
Call: arimax(x = gas_novo[, "CO2"], order = c(2, 0, 0), xtransf = gas_novo[, "InputGasRate"], transfer = list(c(1, 2))) Coefficients: ar1 ar2 i ntercept T1 -AR1 1.5272 -0.6288 53.3618 0.5490 s.e. 0.0467 0.0495 0.1375 0.0392 sigma^2 estimated as 0.0 571:
T1-MA0 -0.5310 0.0738
T1-MA1 -0.3801 0.1017
log likelihood = 2.08,
T1-MA2 -0.5180 0.1086
aic = 9.83
O modelo apresentado na sa´ıda do R pode ser representado pela seguinte equa¸c˜ao:
Yt = 53 .4 +
(−0.5310 − 0.3801L − 0.5180L2 ) 1 Xt −3 + et (1 − 0.5490L) 1 − 1.5272L + 0.6288L2
˜ DE TRANSFERENCIA ˆ 234CAP´ITULO 7. MODELO DE BOX & JENKINS COM FUN C ¸ AO Uma vez estimado, o modelo sempre precisa ser avaliado. Se ao final verificarmos que o modelo n˜ao ´e adequado, ent˜ ao o modelo foi identificado incorretamente, e precisaremos corrigir essa etapa. Vamos ver na se¸c˜ao seguinte como avaliar a adequa¸c˜ao do modelo BJFT.
Verificar se o modelo ´ e adequado Para avaliar se o modelo ajustado ´e adequado, vamos executar as seguintes an´alises: •
Calcular autocorrela¸c˜ao dos res´ ıduos;
•
CCF entre os res´ıduos e a vari´ avel auxiliar Xt pr´ e-branqueada. Pretendemos n˜ao encontrar padr˜oes de correla¸c˜ao, pois isso sugere que o modelo n˜ ao
esteja bem especificado, e consequentemente deve ser modificado. A seguir temos a ACF dos res´ıduos e o teste de autocorrela¸c˜ao de Ljung e Box (1978a) utilizando a fun¸c˜ao Box.test() do pacote stats. > residuos <- resid(modelo_ft) > acf(residuos, na.action = na.omit, lag.max = 36) > ccf(residuos, alpha, na.action = na.omit)
0 .1 0 ls a u id s e R : F C A
a h lp a . s v s l a u d i s e R : F C C
0 0 . 0
0 .1 0 −
0
5
10
15
20
25
30
5 0 . 0
5 .0 0 −
5 1 . 0 −
35
−20
Lag
−10
0
10 Lag
Figura 7.5: ACF: Res´ıduos
> Box.test(residuos, type = "Ljung-Box", lag = 24)
Box-Ljung test data: residuos X-squared = 27.969, df = 24, p-va lue = 0.2613
20
7.4. METODOLOGIA
235
A partir da an´alise das fun¸c˜oes de correla¸c˜ao (figura 7.5) e do teste de autocorrela¸ c˜ ao residual de Ljung-Box, podemos concluir que esse modelo BJFT est´ a adequado. O gr´afico dos valores observados versus ajustados pelos modelos com e sem fun¸ c˜ao de transferˆ encia ´e exposto na figura 7.6.
> modelo_y <- Arima(gas[,"CO2"], order = c(2,0,0), include.mean = T) > > > + > + + >
ajustados <- fitted(modelo_y) ajustados_ft <- fitted(modelo_ft) ts.plot(gas[,"CO2"], ajustados, ajustados_ft, lty = c(1,3,2), lwd = c(1,3,2), col = c(1, "orangered","dodgerblue")) legend("bottomright", col = c(1,"dodgerblue", "orangered"), legend = c("Observados", "Ajustados c/ FT", "Ajustados s/ FT"), lty = c(1,2,3), lwd = c(1,2,2), cex = 0.7)
0 6
5 5
0 5
Observados Ajustados c/ FT Ajustados s/ FT
5 4
0
50
100
150
200
250
300
Time
Figura 7.6: TS observada (CO 2 ) e valores ajustados com e sem FT
A partir da an´alise dos modelos com e sem FT, vemos que ambos s˜ ao adequados para a modelagem de CO
2
dentro da amostra. Se vocˆe aplicar a fun¸c˜ ao summary() para os dois
modelos, ver´a que o MAPE ( Mean Absolute Percent Error ) para o modelo com fun¸ c˜ao de transferˆ encia ´e de 0,3% e para o outro modelo ´e de 0.5%, confirmando o melhor desempenho do mo delo BJFT dentro da amostra. Outra forma de verificar qual dos dois modelos ´e mais eficiente ´e analisar suas respectivas previs˜ oes para fora da amostra. No entanto, a fun¸c˜ ao arimax() n˜ao suportava previs˜ oes at´e o momento de edi¸ c˜ao desse livro.
˜ DE TRANSFERENCIA ˆ 236CAP´ITULO 7. MODELO DE BOX & JENKINS COM FUN C ¸ AO
Considera¸ c˜ oes finais Neste cap´ıtulo aprendemos empiricamente como modelar uma s´erie temporal utilizando outra vari´avel que possui um relacionamento causal com a vari´ avel de interesse com base na metodologia proposta por Box & Jenkins. Aprendemos os passos para aplicar a metodologia, bem como filtrar as STs utilizadas para que os passos possam ser aplicados corretamente.
Foram abordados os pacotes ´uteis para esse tipo de modelagem, discutimos algumas fun¸c˜oes e chamamos a aten¸c˜ao para algumas limita¸c˜oes das mesmas. Apesar de ter sido uma experiˆencia interessante, sabemos que ainda ficaram faltando alguns p ontos a serem abordados, como por exemplo, a previs˜ ao das s´eries para fora da amostra e a identifica¸c˜ao de vari´ aveis do tipo bin´ario na fun¸c˜ao de transferˆ encia.
Nesse sentido, ´e importante que o leitor que estiver usando esse manual para construir o seu modelo ARIMA com fun¸c˜ ao de transferˆ encia, tenha ciˆencia de suas limita¸ c˜oes e busque, sempre que poss´ıvel, aprofundar o seu conhecimento sobre o assunto.
Regress˜ ao Dinˆ amica Ingrid Christyne Luquett de Oliveira Pedro Costa Ferreira
˜ DINAMICA ˆ CAP´ITULO 8. REGRESS AO
238
Introdu¸ c˜ ao Modelos Dinˆamicos estudam a rela¸ca˜o entre vari´aveis observadas em instantes de tempo diferentes. Podemos, por exemplo, investigar se o ´Indice de Pre¸cos ao Consumidor Amplo (IPCA)
1
em um determinado mˆes influencia a maneira como os consumidores brasileiros
formam suas expectativas de infla¸c˜ao em meses subsequentes. Sob esta ´otica, pretendemos neste cap´ıtulo explorar as implica¸c˜oes do emprego do modelo cl´assico de regress˜ao linear em vari´ aveis observadas ao longo do tempo e apresentar a metodologia de regress˜
ao dinˆamica
como alternativa ao uso dos modelos usuais. As se¸c˜oes que seguem dividem-se da seguinte forma: iniciaremos o cap´ıtulo com a descri¸ca˜o do modelo cl´assico de regress˜ao linear, seus pressupostos e as consequˆ encias em viola-los na Se¸c˜ao 8.2. Posteriormente, a Se¸c˜ao 8.3 aborda especificamente a presen¸ca de correla¸c˜ao serial nos erros do modelo cl´ assico de regress˜ao e exp˜oe maneiras para contornar o problema. Sob outra perspectiva, na Se¸c˜ao 8.4 tratamos as viola¸c˜ oes dos pressupostos como uma especifica¸c˜ao inadequada do modelo e apresentamos os modelos autoregressivos de defasagens distribu´ ıdas. Explorando o contexto de vari´aveis n˜ao estacion´arias, a Se¸c˜ao 8.5 discute o modelo de corre¸c˜ ao de erro . A Se¸c˜ao 8.6 apresenta uma aplica¸c˜ao dos modelos na an´alise da forma¸c˜ao da expectativa de infla¸ca˜o por parte dos consumidores brasileiros baseada no IPCA. Por fim, a Se¸c˜ ao 8.7 resume todos os modelos apresentados.
Modelo Cl´ assico de Regress˜ ao Linear Em diferentes contextos estamos interessados em estudar se o comportamento de uma determinada vari´avel (dependente) ´e influenciado por uma ou mais vari´ aveis (explicativas). A estrutura desta rela¸c˜ao pode assumir diferentes formas e, em alguns casos, apresenta comportamento linear. Os modelos que assumem estrut ura linear entre vari´avel dependente e vari´ aveis explicativas s˜ao chamados modelos de regress˜ao linear ou modelos lineares. Considere a vari´avel dependente Yt , observada ao longo do tempo, e k vari´ aveis explica1
Divulgado p elo Instituto Brasileiro de Geografia e Estat´ıstica (IBGE)
´ ˜ LINEAR 8.2. MODELO CL ASSICO DE REGRESS AO
239
tivas { X1,t , X2,t ,... Xk,t }. O modelo linear usualmente encontrado na literatura pode ser escrito como
Yt = β0 + β1 X1,t + β2 X2,t + · · · + βk Xk,t + εt ,
(8.1)
onde β0 e´ um n´ıvel globla, os βk ’s, k ∈ {1, 3,..., k}, s˜ao os parˆametros correspondentes aos respectivos efeitos isolados de cada Xk,t sobre Yt e ε t ´e o erro do modelo no tempo t . Ao longo do cap´ ıtulo a equa¸ c˜ao (8.1) ser´a evetualmente referida como modelo est´atico. A constru¸c˜ao dos modelos de regress˜ao linear ´e fundamentada na aceita¸ c˜ao dos seguintes pressupostos sobre o erro ε t : 1. Exogeneidade estrita: As vari´aveis explicativas Xk s˜ao estritamente ex´ogenas com respeito ao termo de erro ε t de maneira que
E (εt | X ) = 0, t = 1 , 2,..., T
onde X inclui todos as k vari´ aveis explicativas e todos os instantes de tempo T :
X
X1,1 X1,2
= . ..
X1,T
X2,1 X2,2
Xk−1,1 Xk−1,2
.. .
··· ··· .. .
X2,T
···
Xk−1,T
.. .
Xk,1 Xk,2
. .. .
Xk,T
2. Ausˆ encia de colinearidade perfeita: Nenhuma vari´avel explicativa Xk,t e´ constante ou po de ser expressa como uma fun¸c˜ ao linear de outras regressoras. Em outras palavras, n˜ao existe conjunto de constantes ak tal que todos seus elementos s˜ao n˜ao nulos e
a0 + a1 X1,t + · · · + ak Xk,t = 0, ∀t = 1 , 2,..., T .
3. Homocedasticidade: A variˆancia do erro ´e a mesma para todas as observa¸c˜ oes, ou seja, Var(εt | X ) = σ 2 , t = 1, 2,..., T .
240
˜ DINAMICA ˆ CAP´ITULO 8. REGRESS AO
4. Ausˆ encia de correla¸ c˜ ao serial: Os termos de erro s˜ao independentes (condicionalmente a X ), ou seja, Cov(εt , εt −s | X ) = 0 , s = 1, 2,..., T − 1. 5. Normalidade: Os ε t ’s s˜ao identicamente distribu´ıdos como εt ∼ N (0, σ 2 ). Se as trˆ es primeiras condi¸ c˜oes forem satisfeitas, o estimador de m´ınimos quadrados ordin´arios (MQO) ser´a n˜ ao viesado. Ainda, caso vigorem as suposi¸c˜oes 4 e 5 podemos empregar as t´ecnicas usuais de inferˆencia dos parˆ ametros e o estimador de MQO ser´a tamb´ em eficiente, no sentido de possuir a menor variˆancia se comparado a outros estimadores n˜ao viesados. Por fim, se o pressuposto 6 for observado tem-se que os
βk ’s seguem distribui¸c˜ ao gaussiana e a
raz˜ao entre cada coeficiente e seu erro padr˜ao segue distribui¸c˜ao t-Student. Os pressupostos expostos acima s˜ao razo´aveis em contextos onde as observa¸c˜oes s˜ao independentes. Na an´alise de s´ eries temporais, entretanto, algumas suposi¸c˜oes frequentemente n˜ao s˜ao satisfeitas. Em particular, a suposi¸c˜ ao de que as vari´aveis explicativas s˜ao independentes de toda a hist´oria de Y (exogeneidade estrita) e que choques em Y no per´ıodo t n˜ ao persistem em t + 1 (correla¸c˜ao serial) s˜ao usualmente violadas.
O emprego de modelos est´aticos em s´eries temporais requer, portanto, que sejamos capazes de lidar com a viola¸c˜ao dos pressupostos 1 e 4. A suposi¸ c˜ao de exogeneidade estrita pode ser relaxada em situa¸c˜oes onde as vari´aveis em an´alise s˜ao estacion´arias e erg´odicas, sendo necess´ ario somente independˆ encia contemporˆ anea entre os erros e X (exogeneidade fraca), ou seja, E (εt | X1,t , X2,t ,..., Xk,t ) = 0. Se, al´em disso, a amostra for grande o suficiente, o estimador de m´ınimos quadrados ter´ a as propriedades assint´oticas desejadas. Caso as suposi¸c˜oes 1-3 sejam satisfeitas, mesmo na presen¸ca de correla¸c˜ao serial no vetor de erros ε = {ε1 , ε2 ,..., εT }, os estimadores de MQO ser˜ao consistentes. Entretanto, o mesmo n˜ao ocorre com respeito `a eficiˆ encia, ou seja, existe algum estimador cuja variˆ ancia ´e menor do que a variˆancia do estimador de MQO ( Pindyck e Rubinfeld, 1998). Como consequˆ encia, a inferˆ encia acerca dos coeficientes do modelo n˜ao fornecer´a conclus˜oes corretas.
˜ SERIAL 8.3. CORRELAC ¸ AO
241
Correla¸ c˜ ao Serial Vimos que a presen¸ca de correla¸c˜ao serial nos erros afeta a inferˆ encia do modelo, impossibilitando a realiza¸c˜ao dos testes usuais sobre os parˆametros. Devemos, portanto, verificar se os pressupostos do modelo est´atico s˜ao satisfeitos antes de tirar qualquer conclus˜ ao. A Subse¸ca˜o 8.3.1 aborda metodologias para diagnosticar a presen¸ ca de correla¸c˜ ao serial enquanto a Subse¸c˜ao 8.3.2 apresenta caminhos para a corre¸c˜ ao do problema.
Testando a Correla¸c˜ ao Serial A viola¸c˜ao do pressuposto de correla¸ca˜o serial ocorre quando Cov(εt , εt −s ) = 0 para algum encia de correla¸c˜ao serial de ordem s nos erros ( H0 : s. Para testar a hip ´otese nula de ausˆ Cov(εt , εt −s ) = 0) ´e necess´ ario que os estimadores de ε t sejam consistentes. A escolha natural ´e
utilizar os res´ ıduos εˆt do modelo ( 8.1), estimado via MQO, de forma que os testes envolver˜ ao a an´alise da correla¸c˜ao entre εˆt e εˆt −s para s positivo at´e algum valor m´aximo arbitrado p. A literatura disp˜oe de uma gama de testes de correla¸c˜ ao serial, todavia nos concentraremos na descri¸ca˜o de dois deles: (i) Durbin-Watson
2
e (ii) Breusch-Godfrey 3 .
Teste de Durbin-Watson A estat´ıstica de Durbin-Watson ´e dada por T
2
∑ (εˆt − εˆt −1 ) d=
t =2 T
,
(8.2)
∑ εˆt2 t =1
onde εˆt , t = 1 ,..., T s˜ao os res´ıduos da estima¸c˜ao de ( 8.1) por m´ınimos quadrados ordin´ arios. Intuitivamente, quando εˆt e´ pr´oximo a εˆt −1 h´a ind´ıcios de que os erros s˜ ao correlacionados. Ap´ os algumas aproxima¸c˜oes, tem-se que d ≈ 2(1 − ρˆ ), onde ρˆ e´ a correla¸c˜ao de primeira ordem de εˆ = {εˆ1 ,..., εˆ T }. Como − 1 ≤ ρˆ ≤ 1, a estat´ıstica d pertence ao intervalo entre 0 e 4, 2 3
Durbin e Watson (1950, 1951, 1971) Breusch (1978), Godfrey (1978)
˜ DINAMICA ˆ CAP´ITULO 8. REGRESS AO
242
sendo a ausˆ encia de correla¸ c˜ao serial correspondente a d pr´ oximo a 2. Dados os limites inferior e superior da regi˜ ao de rejei¸c˜ ao, dL e dU respectivamente, podemos concluir sobre a correla¸c˜ao serial segundo a Figura 8.1.
Figura 8.1: Regi˜oes do teste de Durbin-Watson
A aplica¸c˜ao do teste de Durbin-Watson apresenta, entretanto, algumas limita¸ c˜ oes: (i) d
d
os valores cr´ıticos L e U dependem das regressoras do modelo e n˜ao podem ser obtidos para o caso geral; (ii) o teste ´e inv´ alido na presen¸ca da vari´avel dependente defasada no lado direito da equa¸c˜ao (8.1) 4; e (iii) o teste somente aborda correla¸c˜ao de primeira ordem, n˜ao sendo aplic´avel `a correla¸c˜oes de maior ordem. Existem no R diferentes maneiras de obter a estat´ ıstica do teste de Durbin-Watson, entre as quais podemos citar: dwtest() no pacote lmtest((Hothorn et al., 2014 )), durbinWatsonTest() no pacote car((Fox et al., 2015)), test.DW() no pacote dcv((Li)), dw.test() no pacote bstats((Wang, 2014)), etc.
Teste de Breusch-Godfrey ou Teste LM O segundo teste de correla¸ca˜o serial ´e o teste de Breusch-Godfrey, que permite a inclus˜ ao 4
Durbin (1970) prop˜oe uma modifica¸c˜ ao do teste de Durbin-Watson que permite a inclus˜ ao de vari´aveis dependentes defasadas no modelo.
˜ SERIAL 8.3. CORRELAC ¸ AO
243
de vari´aveis dependentes defasadas modelo al´em de poder ser usado para testar correla¸c˜ oes de ordem p, p ≥ 1. A hip´oteste nula do teste ´e de que os erros s˜ao ru´ıdo branco. Se de fato essa hip´ otese for verdadeira, ent˜ao os res´ ıduos εˆt obtidos da estima¸c˜ao da equa¸c˜ao (8.1) via MQO s˜ao independentes dos res´ıduos defasados εˆt −1 , . . . , εˆt − p . Deste modo, para avaliar a presen¸ca de correla¸c˜ao serial de ordem p o teste baseia-se no modelo
εˆt = γ1 εˆt −1 + · · · + γ p εˆt − p + β0 + β1 X1,t + β2 X2,t + · · · + βk Xk,t + νt ,
(8.3)
onde εˆ = {εˆ1 ,..., εˆ T } s˜ao os res´ıduos da equa¸ ca˜o (8.1). A estat´ıstica de teste ´e calculada como BG( p) = ( T − p)R2 ,
onde R2 ´e o coeficiente de determina¸ca˜o do modelo ( 8.3). A ausˆencia de correla¸c˜ao serial e o baixo poder explicativo de εˆ pelas vari´aveis independentes implica em valores pequenos do coeficiente R2 e, consequentemente, da estat´ıstica BG( p), levando `a n˜ao rejei¸ca˜o da hip´otese nula de que os res´ıduos s˜ ao ru´ıdo branco. Computacionalmente, a estat´ıstica do teste de Breusch-Godfrey pode ser obtido no R pela fun¸ca˜o bgtest() do pacote lmtest((Hothorn et al. , 2014)).
Corrigindo a correla¸c˜ ao serial Identificada a presen¸ca de correla¸c˜ao serial nos erros atrav´ es dos m´etodos apresentados na se¸c˜ ao anterior, precisamos encontrar alternativas ao modelo est´ atico para lidar com tal problema. Nos limit aremos, nesta se¸c˜ao, `a descri¸c˜ao de duas abordagens:
(i) inclus˜ao de
estrutura para os termos de erro no modelo ( 8.1); e (ii) aplica¸ca˜o do m´etodo de Newey-West para corre¸c˜ao dos erros padr˜ao das estimativas de MQO. Assuma que as suposi¸c˜oes do modelo de regress˜ao linear s˜ao satisfeitas, por´em os erros n˜ao s˜ao independentes ao longo do tempo. Supondo um processo autoregressivo de primeira
˜ DINAMICA ˆ CAP´ITULO 8. REGRESS AO
244
ordem, denotado por AR(1), para descrever o comportamento dos erros de regress˜ ao temos o modelo
Yt = β0 + β1 X1,t + β2 X2,t + · · · + βk Xk,t + εt
(8.4)
εt = ρεt −1 + νt ,
(8.5)
0 ≤| ρ | < 1 ,
onde νt tem distribui¸c˜ao N (0, σν2 ) e ´e independente de ν j , para j = t bem como ´e independente de εt , ∀t . De modo similar, ε t ∼ N (0, σε2 ) por´ em os termos de erro s˜ ao correlacionados ao longo do tempo. O termo ρ reflete a correla¸c˜ ao entre εt e εt −1 de modo que ρ = 0 implica ausˆ encia de autocorrela¸ca˜o nos erros e ρ pr´ oximo a um resulta em correla¸c˜ao serial de primeira ordem. Cabe destacar que, pela constru¸c˜ao do modelo em ( 8.4)-(8.5), o efeito de εt ser´a sentido em todos os per´ıodos posteriores, com magnitude descrescente ao longo do tempo. Podemos reescrever as equa¸co˜es (8.4)-(8.5) em uma ´unica equa¸c˜ao. Para tal, multiplicamos o termo ( 1 − ρ L) em todos os termos da equa¸c˜ao (8.4), obtendo-se ∗
∗
∗
∗
Yt =β1 (1 − ρ ) + β1 X1,t + β2 X2,t + · · · + βk Xk,t + νt ,
(8.6)
onde L e´ o operador de defasagem tal que LYt = Yt −1 e Yt∗ = Yt − ρYt −1 ,
X j∗,t = X j,t − ρ X j,t −1
e
νt = εt − ρεt −1 .
Por constru¸c˜ao, o modelo em ( 8.6) possui erros independentes e identicamente distribu´ıdos com m´edia 0 e variˆ ancia constante. Deste modo, se ρ for conhecido podemos aplicar o m´etodo de m´ınimos quadrados ordin´ arios para obter estimativas eficientes de todos os parˆametros do modelo. Cabe a ressalva de que o intercepto ´e estimado como β 1∗ = β1 (1 − ρ ), de onde obtemos β1 simplesmente por β1 =
β1∗ 1−ρ
´ usual, entretanto, n˜ao conhecermos o valor . E
de ρ , sendo necess´aria a ado¸c˜ ao de procedimentos para estima¸ca˜o desse parˆametro. Um primeiro m´etodo atribui-se a Cochrane and Orcutt (1949) e consiste na estima¸c˜ ao
˜ SERIAL 8.3. CORRELAC ¸ AO
245
iterativa de ρ considerando o conceito de correla¸c˜ ao entre termos adjacentes normalmente atribu´ ıdo a esse parˆ ametro. O procedimento ´e descrito pelos seguintes passos: 1 Estimar os parˆametros do modelo ( 8.1) via m´ınimos quadrados ordin´ arios; 2 Obter os res´ ıduos εˆt , t = 1 ,..., T , a partir do passo 1; 3 Estimar ρ via MQO na equa¸c˜ao εˆt = ρ εˆt −1 + νt ; 4 Transformar as vari´aveis do modelo usando X j∗,t = X j,t − ρˆ X j,t −1 , j ∈ 1,..., k, e Yt∗ = Yt − ρˆ Yt −1 ;
5 Estimar os coeficientes do passo 4 via MQO; 6 Obter os res´ıduos do modelo ajustado em 5; 7 Estimar ρ no modelo ( 8.5) via MQO; 8 Repetir os passos 4 - 6 at´e que a diferen¸ca entre as estimativas de ρ para duas itera¸c˜ oes consecutivas seja inferior a algum crit´erio de convergˆ encia. Note que o procedimento de Cochrane-Orcutt elimina a primeira observa¸ c˜ao ao transformar as vari´aveis (passo 4), o que n˜ao implica em perda significativa de informa¸c˜ao `a medida que a amostra cresce. Computacionalmente, podemos obter as estimativas dos coeficientes por meio da fun¸c˜ ao cochrane.orcutt() no pacote orcutt((Spada, 2012)). Outro m´etodo de estima¸ca˜o do modelo ( 8.4) - (8.5) foi introduzido por Prais e Winsten (1954) como uma modifica¸c˜ao do procedimento de Cochrane-Orcutt no sentido de que n˜ ao ´e necess´ aria a exclus˜ao da primeira observa¸c˜ao. O algoritmo de estima¸c˜ ao assemelha-se ao anteriormente apresentado, com a excess˜ao de que no passo 4 as vari´aveis no primeiro instante de tempo s˜ao constru´ ıdas como Y1∗ =
−ρ 1
2Y 1
e X j∗,1 =
−ρ 1
2X
j,1 ,
j ∈ {1,..., k }. Este m´etodo
se mostra mais eficiente em amostras pequenas, visto que n˜ ao elimina nenhuma observa¸c˜ ao da amostra. No R encontra-se dispon´ıvel a fun¸ca˜o prais.winsten() do pacote prais((Mohr e Mohr, 2015 )) que realiza tal procedimento de estima¸ c˜ao iterativamente. Os procedimentos tratados acima dependem da suposi¸ c˜ao de que os res´ıduos s˜ao estimadores consistentes do termo de erro, o que requer estimativas consistentes dos coeficientes usados no c´alculo dos res´ıduos. Um caso importante onde os res´ıduos n˜ao s˜ao estimados consistentemente aparece em contextos onde a vari´ avel dependente defasada ´e usada como
˜ DINAMICA ˆ CAP´ITULO 8. REGRESS AO
246
regressora no modelo e os erros s˜ ao autocorrelacionados. Para situa¸c˜oes dessa natureza, os res´ıduos obtidos via MQO n˜ ao podem ser usados para estimar ρ . Uma alternativa aos m´etodos anteriores aparece em Hildreth e Lu (1960), cujo estimador procura na regi˜ao − 1 ≤ ρ ≤ 1 o valor de ρ que minimiza a soma dos quadrados dos res´ıduos no modelo (8.6). Todas as metodologias descritas exigem cautela em sua realiza¸
c˜ao, uma vez que os
algoritmos podem resultar em m´ınimos locais ao inv´ es de globais. A segunda abordagem para lidar com a correla¸ c˜ ao serial dos erros segue em dire¸ c˜ ao oposta ao apresentado anteriormente, tornando a inferˆ encia v´alida atrav´ es da corre¸ca˜o dos erros padr˜ao dos estimadores de MQO pelo m´etodo descrito em Newey e West (1987) ao inv´ es de introduzir uma estrutura para o erro. A implementa¸c˜ao do m´etodo pode ser realizada atrav´ es do pacote sandwich((Lumley et al., 2015 )) do R, todavia maior detalhamento do m´etodo encontra-se fora escopo do presente cap´ıtulo.
Exemplo com dados artificiais Apresentaremos agora um breve exemplo com dados criados artificialmente para ilustrar a situa¸c˜ ao em que o modelo de regress˜ ao cl´assico n˜ao satisfaz a suposi¸c˜ ao de ausˆencia de correla¸c˜ao serial dos erros. A seguir temos o in´ıcio da nossa base de dados, que cont´ em 4 vari´ aveis coletadas ao longo do tempo num total de 30 observa¸c˜oes (cons, price, income, temp).
> head(dados)
1 2 3 4 5 6
cons 0.39 0.37 0.39 0.42 0.41 0.34
price income temp 0 .27 78 41 0 .28 79 56 0 .28 81 63 0 .28 80 68 0 .27 76 69 0 .26 78 65
˜ SERIAL 8.3. CORRELAC ¸ AO
247
Iniciamos o exemplo estimando a regress˜ao
Const = β0 + β1 Pricet + β2 Incomet + β3 Tempt + εt
(8.7)
atrav´ es da fun¸ c˜ao lm(). Como o modelo n˜ao considera defasagens da vari´avel dependente no lado direito de ( 8.7), podemos estimar ε = {ε1 ,..., εT } consistentemente atrav´ es dos res´ ıduos da estima¸c˜ ao via MQO de ( 8.7). > # Estimando a Regress~ao Linear Cl´ assica > reg<-lm(cons ~ price + income + temp, data = dados)
Lembrando que tanto o teste de Durbin-Watson quanto o de Breusch-Godfrey tem como hip´otese nula a ausˆencia de correla¸ca˜o serial dos erros, conduzimos no R ambos os testes considerando autocorrela¸ca˜o de primeira ordem e os res´ıduos da regress˜ ao acima. Assumindo n´ıvel de significˆ ancia igual a 5 %, os dois testes concluem pela rejei¸c˜ ao da hip´otese nula uma vez que os p-valores de ambos s˜ao inferiores a 0.05 (p-valor
DW
= 0 .04% e p-valorBG = 4 .7).
> # Testando correla¸cao ~ serial de primeira ordem > require(lmtest) > # Durbin-Watson > dw_reg = dwtest(cons ~ price + income + temp, data = dados) > dw_reg
Durbin-Watson test data: cons ~ price + income + temp DW = 1.0384, p-value = 0.0003768 alternative hypothesis: true autocorrelation is greater than 0
> > >
# Breusch-Godfrey bg_reg = bgtest(cons ~ price + income + temp, data = dados) bg_reg
˜ DINAMICA ˆ CAP´ITULO 8. REGRESS AO
248
Breusch-Godfrey test for serial correlation of order up to 1 data: cons ~ price + income + temp LM test = 3.928, df = 1, p-value = 0.04749
Devido `a presen¸ca de correla¸c˜ao serial de primeira ordem nos erros do modelo (8.7), surge a necessidade de incluirmos uma estrutura em ε t que reflita tal comportamento. Assumimos, ent˜ ao, o modelo Const = β0 + β1 Pricet + β2 Incomet + β3 Tempt + εt εt = ρεt −1 + νt .
(8.8)
Explicitamos na Se¸c˜ao 8.3.2 dois procedimentos de estima¸c˜ao do modelo 8.8: CochraneOrcutt e Prais-Winsten. Ambos foram implementados no R e os resultados s˜ ao apresentados a seguir. > # Estima¸c~ ao do modelo com estrutura no erro > # Cochrane-Orcutt > require(orcutt) > co_reg = cochrane.orcutt(reg) > co_reg
$Cochrane.Orcutt Call: lm(formula = YB ~ XB - 1) Residuals: Min 1Q -0.072610 -0.012760
Median 0.000906
3Q 0.015209
Max 0.077841
Coefficients: XB(Intercept) XBprice XBincome XBtemp ---
Estimate Std. Error t value Pr(>|t|) 0.2424113 0.2531469 0.958 0.3474 -1.1927018 0. 6873988 -1 .735 0.0950 . 0.0031820 0 .0014969 2.126 0.0436 * 0.0035572 0. 0005339 6.662 5.56e-07 ***
˜ SERIAL 8.3. CORRELAC ¸ AO Signif. codes:
0
***
'
'
0.001
249 **
'
'
0.01
*
'
'
0.05
.
'
'
0.1
'
'
1
Residual standard error: 0.0317 on 25 degrees of freedom Multiple R-squared: 0.9837, Adjusted R-squared: 0.9811 F-statistic: 378 .3 on 4 and 25 DF, p-value: < 2.2e-16
$rho [1] 0.3788941 $number.interaction [1] 12
> > > >
# Prais-Winsten require(prais) pw_reg = prais.winsten(cons ~ price + income + temp, data = dados) pw_reg
[[1]] Call: lm(formula = fo) Residuals: Min 1Q Median -0.079171 -0.017838 -0.000846
3Q 0.010029
Max 0.080424
Coefficients: Estimate Std. Error t value Pr(>|t|) Intercept 5.709e-01 2.594e-01 2.201 0.036834 * price -1.297e+00 6.756e-01 -1.920 0.065873 . income 6.857e-05 1.928e-03 0.036 0.971899 temp 3.076e-03 6.847e-04 4.492 0.000128 *** --Signif. codes: 0 *** 0.001 ** 0.01 * 0.05 . 0.1 '
'
'
'
'
'
'
'
'
'
1
Residual standard error: 0.03255 on 26 degrees of freedom Multiple R-squared: 0.9435, Adjusted R-squared: 0.9348 F-statistic: 108 .5 on 4 and 26 DF, p-value: 7.947e-16
[[2]] Rho Rho.t.statistic Iterations 0.7018387 4.481754 49
˜ DINAMICA ˆ CAP´ITULO 8. REGRESS AO
250
Na Tabela 8.1 resumimos os valores estimados dos parˆametros pelos trˆ es diferentes m´etodos abordados. Note que os coeficientes para o modelo cl´assico de regress˜ao e para o m´etodo de Cochrane-Orcutt s˜ ao bastante similares para todo βk , k = 0 , 1, 2, 3, mesmo que ρ seja estimado diferente de zero. J´a o procedimento de Prais-Winsten apresenta resultados ligeiramente diferentes. Como o n´umero de observa¸c˜oes ´e pequeno, o segundo procedimento parece mais eficiente ao incluir a primeira observa¸ c˜ ao.
Parˆ ametro β0 β1 β2 β3 ρ
Prais-Winsten 0.5709 -1.2973 0.0001 0.0031 0.7018
Cochrane-Orcutt 0.2424 -1.1927 0.0032 0.0036 0.3790
Regress˜ao Cl´assica 0.2672 -1.2528 0.0032 0.0034 -
Tabela 8.1: Estimativas Nesse exemplo tentamos ilustrar a implementa¸ c˜ao dos teste de correla¸ c˜ao serial e dos procedimentos de estima¸c˜ao do modelo de regress˜ ao linear com estrutura autoregressiva de primeira ordem para os erros. Ainda que os dados tenham sido gerad os artificialmente e pouca, ou nenhuma, interpreta¸c˜ ao possa ser dada a eles, nosso intuito principal foi expor a sintaxe das fun¸co˜es no R e prover base para maior aprofundamento do leitor.
Modelos Autoregressivos com Defasagens Distribu´ıdas At´ e o momento tratamos a correla¸ ca˜o serial de ε = {ε1 ,..., εT } simplesmente como uma viola¸c˜ao das suposi¸c˜oes do modelo cl´assico de regress˜ao linear. Podemos, em contrapartida, enxergar tal comportamento dos erros como um ´ındicio de incorre¸c˜ao na especifica¸c˜ ao do modelo. O impacto de um choque em determinada vari´ avel explicativa X sobre Y pode n˜ao ocorrer imediatamente, sendo Y afetado somente ap´os alguns instantes de tempo, ou mesmo ao dessa dinˆamica pode induzir Y pode afetar seu pr´oprio valor em tempos posteriores. A omiss˜ correla¸c˜ao serial nos erros, sendo interessante nessas circunstˆancias optar pelo uso de modelos
8.4. MODELOS AUTOREGRESSIVOS COM DEFASAGENS DISTRIBU´IDAS
251
dinˆ amicos. Quando a dinˆamica do modelo ´e ditada pelo comportamento das vari´ aveis independentes defasadas nos referimos a modelos de defasagens distribu´ıdas , sendo as defasagens respons´aveis por dar conta do ajustamento ao longo do tempo. Se somente os valores passados de Y determinam seu processo em t , a dinˆamica de Y pode ser descrita segundo modelos auto-
regressivos. Ainda, ´e poss´ıvel combinar os dois modelos anteriores em uma u ´ nica equa¸c˜ao, srcinando os chamados modelos autoregressivos de defasagens distribu´ ıdas (do inglˆes, ADL Autoregressive Distributed Lag)5 . A forma geral do modelo ADL, denotada por ADL(p,q), ´e dada por
φ (L)Yt = α + θ (L)Xt + νt ,
(8.9)
onde φ (L) = 1 − φ1 L − φ2 L2 −···− φ p L p cujas ra´ ızes n˜ ao pertencem ao c´ırculo unit´ ario, θ (L) = θ0 − θ1 L + θ2 L2 + · · · + θq Lq e L e´ um operador de defasagem tal que LkYt = Yt −k . Podemos
reescrever (8.9) como
Yt = α + φ1Yt −1 + · · · + φ pYt − p + θ0 Xt + θ1 Xt −1 + · · · + θq Xt −q + νt .
(8.10)
Supondo que os erros ν = {ν1 ,..., νT } s˜ao ru´ıdo branco, o modelo (8.10) pode ser estimado via m´ınimos quadrados ordin´ arios. A fun¸c˜ ao dynlm()((Zeileis e Zeileis , 2014)) do pacote de mesmo nome permite a inclus˜ao de defasagens e diferen¸cas das vari´aveis inseridas no modelo, retornando as estimativas de MQO dos parˆametros.
Escolhendo as defasagens p e q: O emprego do modelo ADL requer a especifica¸c˜ao a priori do n´umero de defasagens de X e Y a serem inclu´ ıdos na estima¸ c˜ao. Entretanto s˜ao raras as situa¸c˜oes onde a teoria nos informa sobre os valores exatos de p e q, sendo necess´ario determina-los empiricamente. Diferentes 5 O cap´ıtulo se restringe a` descri¸c˜ ao do modelo ADL, sendo os outros dois modelos casos particulares deste. Mais detalhes sobre os modelos podem ser vistos em Greene (2003)
˜ DINAMICA ˆ CAP´ITULO 8. REGRESS AO
252
m´etodos est˜ ao dispon´ıveis para avaliar o n´ umero apropriado de defasagens no modelo, n˜ao existindo um “m´ etodo correto”. A escolha ´e, portanto, usualmente feita pela combina¸c˜ao de m´etodos. Um primeiro m´etodo trata da especifica¸c˜ao da defasagem atrav´ es de testes de significˆancia dos parˆametros. Podemos come¸car com um n´umero elevado de defasagens e avaliar a significˆancia do coeficiente de maior defasagem. Caso esse coeficiente seja estatisti camente significativo optamos por esse modelo, em contrapartida, se o coeficiente n˜ ao for significativo estimamos o modelo com uma defasagem a menos e continuamos o processo at´e que a maior defasagem seja significativa. O caminho contr´ario tamb´ em pode ser empregado, ou seja, come¸camos pelo modelo com menor defasagem e inserimos novas defasagens at´e que o coeficiente para a vari´avel de maior defasagem n˜ao seja mais significativo. Outro m´etodo de determina¸ca˜o de p e q envolve o c´alculo de crit´ erios de informa¸c˜ao. Tais crit´erios mensuram a quantidade de informa¸c˜ao sobre a vari´avel dependente contida no conjunto de vari´aveis independentes, considerando o erro padr˜ao das estimativas dos coeficientes e penalizando pelo n´umero de parˆametros do mo delo. A literatura disp˜oe de uma gama de crit´erios de informa¸c˜ao, figurando entre os mais utilizados o crit´ erio de informa¸c˜ ao de Akaike (AIC) e o crit´ erio de informa¸c˜ ao bayesiano (BIC). Por meio dessa metodologia, escolhemos o n´umero de defasagens com base no modelo que retorna o menor valor desses crit´erios. Cabe a ressalva que o c´alculo dessas medidas deve considerar o mesmo intervalo de tempo para todos os modelos a fim de torn´a-los compar´aveis. Os procedimentos apresentados acima podem ser aplicados tanto na escolha de
p, de-
´ fasagens da vari´avel dependente, quanto de q, defasagens das vari´aveis independentes. E importante enfatizar, ainda, que usualmente nenhuma defasagem at´e p e q e´ omitida. No R, a fun¸c˜ao glmulti() do pacote glmulti((Calcagno et al., 2013 )) recebe as vari´aveis dependentes e independentes do modelo e seleciona automaticamente o melhor modelo segundo o crit´ erio de informa¸c˜ao escolhido.
˜ DE ERROS 8.5. MODELO DE CORRE C ¸ AO
253
Modelo de Corre¸c˜ ao de Erros
Por todo este cap´ıtulo descrevemos diferentes metodologias para lidar com vari´aveis observadas ao longo do tempo. Os modelos apresentados sup˜oem que tais vari´aveis s˜ao estaci´ comum, entretanto, encontrarmos situa¸c˜oes onde esse pressuposto n˜ao ´e satisfeito on´arias. E como, por exemplo, contextos onde h´a uma quebra estrutural em determinado instante de tempo ou mesmo quando a vari´avel apresenta um comportamento explosivo. Supor estacionariedade das vari´aveis em modelos de regress˜ao linear quando de fato esse pressuposto ´e violado pode conduzir a conclus˜ oes inapropriadas. Mesmo que duas var i´aveis n˜ao sejam relacionadas, ocasionalmente a estima¸ca˜o via m´ınimos quadrados ordin´ arios resulta em coeficiente de determina¸c˜ao (R2 ) elevado, significando que as covari´aveis conseguiram explicar bem a vari´avel dependente, e estat´ısticas de teste que levam a` conclus˜ao de significˆancia dos parˆametros. Esse ´e um exemplo de regress˜ ao esp´uria, introduzido por Granger e Newbold (1974). Existem diferentes padr˜oes de n˜ao estacionariedade, por´em nos concentraremos nessa se¸ca˜o somente em explorar modelos para vari´aveis integradas. Lembre-se que uma vari´avel esima diferen¸ca ´e estacion´ aria, ou seja, Zt ∼ I (k) se Z e´ dita integrada de ordem k se sua k-´ ∆k Zt = Zt − Zt −k e ent˜ao ∆k Zt ∼ I (0).
Considere um modelo de regress˜ao com apenas duas vari´aveis integradas de primeira ordem, Yt ∼ I (1) e Xt ∼ I (1), dado por Yt = φ Xt + νt . Uma alternativa para contornar os problemas induzidos pela n˜ao estacionariedade consiste em realizar a regress˜ ao tomando a primeira diferen¸ca das vari´aveis, isto ´e, ∆Yt = β ∆Xt + ηt , onde ∆Yt e ∆Xt s˜ao estacion´arias. Um aspecto negativo dessa metodologia decorre da perda de eventual informa¸ c˜ao de longo prazo entre as vari´aveis. Um caso de especial interesse em econometria surge quando a combina¸c˜ao linear de duas vari´ aveis integradas de primeira ordem resulta em um termo de erro estacion´ario. Retornando ao exemplo do par´agrafo anterior, ter´ıamos Yt , Xt ∼ I (1) mas ν t ∼ I (0). Este caso define o con-
˜ DINAMICA ˆ CAP´ITULO 8. REGRESS AO
254
ceito de cointegra¸ c˜ ao, que em economia usualmente est´a relacionado ao conceito de equil´ ıbrio de longo prazo. A presen¸ca de cointegra¸c˜ao entre X e Y permite que os modelos cl´assicos de regress˜ ao sejam estimados corretamente pelo m´ etodo de m´ınimos quadrados ordin´ arios. Quando duas s´eries s˜ ao cointegradas existe entre elas uma rela¸ c˜ ao de equil´ ıbrio e qualquer perturba¸c˜ao em X provocar´a um desequil´ıbrio. Modelos que estimam diretamente a taxa `a qual mudan¸cas em Y retornam ao equil´ ıbrio ap´os perturba¸co˜es em X s˜ao chamados modelos de corre¸ c˜ ao de erro (ECM)
6
e s˜ ao escritos como
∆Yt = β ∆Xt + γ (Yt − φ Xt ) + ηt ,
(8.11)
onde a taxa de retorno ao equil´ ıbrio ´e tal que γ < 0 e β nos informa sobre os efeitos de curto prazo de Xt sobre Yt . Note que o modelo de corr e¸c˜ao de erro ´e “balanceado” no sentido que todas as vari´aveis no lado direito de ( 8.11) s˜ao estacion´arias e, portanto, o m´etodo de m´ınimos quadrados ´e aplic´ avel.
Equivalˆ encia entre ADL(1,1) e ECM: Considere o modelo ADL(1,1) dado pela equa¸ c˜ ao
Yt = β0 Xt + β1 Xt −1 + ρ Yt −1 + νt .
(8.12)
Subtraindo Yt −1 em ambos os lados e substituindo Xt por ∆Xt + Xt −1 temos
∆Yt = β0 ∆Xt + (β0 + β1 )Xt −1 + (ρ − 1)Yt −1 + νt .
(8.13)
6 Os modelos de corre¸c˜ ao de erro n˜ao s˜ao aplicados, necessariamente, a vari´aveis n˜ ao estacion´ arias (Keele e De Boef, 2004 )
˜ DE ERROS 8.5. MODELO DE CORRE C ¸ AO
255
Rearrumando a equa¸ca˜o (8.13) encontramos
∆Yt = β0 ∆Xt + (ρ − 1) Yt −1 +
Assumindo γ = (ρ − 1), φ =
β +β 0
1
ρ −1
Xt −1 + νt .
(8.14)
e β = β em (8.15) chegamos ao modelo de corre¸c˜ao β0 +β1 ρ −1
0
de erro
∆Yt = β ∆Xt + γ (Yt −1 + φ Xt −1 ) + νt .
(8.15)
Note que a equivalˆ encia n˜ ao ´e exata, visto as restri¸co˜es que devemos impor a alguns parˆ ametros.
Estima¸ c˜ ao do modelo: O modelo de corre¸ca˜o de erro apresentado em (8.11) pode ser estimado de duas maneiras diferentes. O primeiro m´etodo consiste no procedimento de Engle-Grangere segue as seguintes etapas: 1 Estimar o modelo Yt = φ Xt + εt ; 2 A partir dessas estimativas obter os res´ıduos εˆt = Yt − φˆ Xt ; 3 Estimar o modelo ∆Yt = β0 + β1 ∆Xt + γ εˆt −1 + νt . Na segunda metodologia nos valeremos da equivalˆencia entre o modelo ADL(1,1) e o ECM e obteremos as estimativas dos coeficientes do modelo de equa¸ c˜ao u ´ nica
∆Yt = β ∆Xt + γ (Yt −1 − φ Xt −1 )
= β ∆Xt + γ Yt −1 − γφ Xt −1 .
(8.16)
O coeficiente ρ em (8.16) corresponde ao coeficiente de corre¸c˜ao de erro e β1 consiste
˜ DINAMICA ˆ CAP´ITULO 8. REGRESS AO
256 no efeito de curto prazo de Xt sobre Yt .
Aplica¸ ca ˜o ` a Expectativa de Infla¸ c˜ ao dos Consumidores Apresentados os conceitos relacionados `a regress˜ao dinˆamica, trataremos nessa se¸c˜ ao da implementa¸c˜ao desses modelos `a expectativa de infla¸c˜ao dos consumidores brasileiros bem como da aplica¸c˜ ao dos testes de estacionariedade e correla¸ c˜ao cab´ıveis. Desde 2005, o Instituto Brasileiro de Economia (IBRE/FGV) inclui na Sondagem do Consumidor uma pergunta quantitativa sobre a expectativa de infla¸ c˜ao individual para os pr´ oximos 12 meses. Pretendemos estimar um modelo de corre¸c˜ao de erro baseado nos dois procedimentos da Se¸c˜ ao 8.5, com a expectativa de infla¸ c˜ao sendo explicada pelo ´Indice de Pre¸cos ao Consumidor Amplo (IPCA - IBGE). Os dados aplicados no exemplo pertencem ao per´ıodo entre setembro de 2005 e dezembro de 2013 e s˜ao parcialmente ilustrados na Tabela 8.2. Data Set/05 Out/05 Nov/05 .. . Nov/2013 Dez/2013
Expectativa de IPCA Infla¸c˜ao do Consumidor 9.44 6.04 9.50 6.36 9.13 6.22 .. .. . . 9.01 5.77 9.25 5.91
Tabela 8.2: Resumo dos dados O primeiro passo de nossa an´alise contempla o teste de estacionariedade das vari´ aveis em quest˜ao. A literatura disp˜oe de diversos testes, entretanto somente realizaremos o teste de Dickey-Fuller Aumentado (ADL) 7 . Esse teste tem como hip´ otese nula a presen¸ca de raiz unit´aria e pode ser implementado no R atrav´es da fun¸c˜ ao ur.df() do pacote urca(Pfaff (2005)). Iniciaremos os testes de estacionariedade com a expectativa de infla¸c˜ao. A seguir temos 7
Para mais detalhes sobre testes de estacionariedade consultar Enders (2008).
˜ A ` EXPECTATIVA DE INFLA¸ ˜ DOS CONSUMIDORES 8.6. APLICA¸CAO CAO
257
os resultados do teste ADF aplicado a essa vari´ avel, assumindo defasagem m´axima igual a 12 e adotando o valor do AIC como crit´ erio de escolha da defasagem. O teste retornou defasagem igual a 1 e estat´ıstica 0.5713. Como a estat´ıstica de teste ´e maior que o valor cr´ıtico ao n´ıvel de 5% de confian¸ca, a saber -1.95, aceitamos a hip´otese nula e, portanto, a vari´avel em quest˜ao n˜ao ´e estacion´ aria.
> # Expectativa de Infla¸cao ~ > adf_expinf = ur.df(expinf_cons, type = "none", lags = 13, selectlags = "AIC") > summary(adf_expinf)
############################################### # Augmented Dickey-Fuller Test Unit Root Test # ############################################### Test regression none
Call: lm(formula = z.diff ~ z.lag.1 - 1 + z.diff.lag) Residuals: Min 1Q Median -1.00779 -0.27690 0.02725
3Q 0.25452
Max 1.07022
Coefficients: Estimate Std. Error t value Pr(>|t|) z.lag.1 0.003152 0.005518 0.571 0.5694 z.diff.lag -0.190529 0.104648 -1.821 0.0722 . --Signif. codes: 0 *** 0.001 ** 0.01 * 0.05 . '
'
'
'
'
'
'
'
0.1
'
'
1
Residual standard error: 0.4045 on 84 degrees of freedom Multiple R-squared: 0.04016, Adjusted R-squared: 0.0 1731 F-statistic: 1.7 57 on 2 and 84 DF, p-value: 0.17 88
Value of test-statistic is: 0.5713 Critical values for test statistics: 1pct 5pct 10pct tau1 -2.6 -1.95 -1.61
˜ DINAMICA ˆ CAP´ITULO 8. REGRESS AO
258
Para avaliar se o teste ADF foi conduzido corretamente, a figura a seguir analisa a presen¸ca de autocorrela¸ca˜o nos res´ıduos do modelo utilizado pelo teste e consequente necessidade de inclus˜ao de mais defasagens no modelo. Como podemos observar, n˜ao existe autocorrela¸ca˜o significativa de nenhuma ordem e o teste parece correto.
> acf(adf_expinf@res, main = "")
.0 1
.6 0 F C A .2 0
2 . 0
−
0
5
10
15 Lag
Passaremos `a an´alise do IPCA. A seguir apresentamos os resultados do teste ADF e a correspondente fun¸c˜ao de correla¸c˜ao dos res´ıduos do teste. Novamente assumimos defasagem m´axima igual a 12 e sele¸c˜ao do modelo via AIC. O teste retornou o modelo com apenas uma defasagem como o de menor AIC e estat´ıstica de teste que nos leva `a conclus˜ao de n˜ao rejei¸ca˜o da hip´otese nula, ou seja, a vari´avel IPCA n˜ao ´e estacion´ aria. Corroborando com os resultados encontrados, a fun¸c˜ao de correla¸c˜ao dos res´ıduos n˜ ao fornece ind´ıcios de incorre¸ca˜o do teste visto que a aucorrela¸c˜ ao de nenhuma ordem ´e significativa.
> # IPCA > adf_ipca = ur.df(ipca, type = "none", lags = 12, selectlags = "AIC") > summary(adf_ipca)
˜ A ` EXPECTATIVA DE INFLA¸ ˜ DOS CONSUMIDORES 8.6. APLICA¸CAO CAO ############################################### # Augmented Dickey-Fuller Test Unit Root Test # ############################################### Test regression none
Call: lm(formula = z.diff ~ z.lag.1 - 1 + z.diff.lag) Residuals: Min 1Q Median -0.54453 -0.10688 0.04011
3Q 0.15284
Max 0.41034
Coefficients: Estimate Std. Error t value Pr(>|t|) z.lag.1 0.0004985 0.0042074 0.118 0.906 z.diff.lag 0.5559689 0.0905489 6.140 2.55e-08 *** --Signif. codes: 0 *** 0.001 ** 0.01 * 0.05 . 0.1 '
'
'
'
'
'
'
'
'
'
1
Residual standard error: 0.2096 on 85 degrees of freedom Multiple R-squared: 0.3104, Adjusted R-squared: 0.2942 F-statistic: 19. 13 on 2 and 85 DF, p-value: 1.378e-07
Value of test-statistic is: 0.1185 Critical values for test statistics: 1pct 5pct 10pct tau1 -2.6 -1.95 -1.61
259
˜ DINAMICA ˆ CAP´ITULO 8. REGRESS AO
260 > acf(adf_ipca@res, main = "")
.0 1
6 . 0 F C A
.2 0
2 . 0 −
0
5
10
15 Lag
Tendo conclu´ıdo pela n˜ ao estacionaridade das vari´aveis em estudo, os modelos cl´assicos de regress˜ao linear n˜ao podem ser em pregados. O pr´oximo passo ´e, ent˜ ao, verificar se as vari´ aveis s˜ao cointegradas. Esse teste avaliar´a se os res´ıduos da regress˜ao ExpInf t = α + β IPCAt + εt s˜ ao estacion´arios via teste ADF. Nos baseamos, portanto, em um teste de duas
etapas.
> # Expectativa de Infla¸cao ~ x IPCA > ajuste_coin1 = lm(expinf_cons ~ ipca - 1); summary(ajuste_coin1)
Call: lm(formula = expinf_cons ~ ipca - 1) Residuals: Min 1Q Median -2.8746 -0.4482 0.0905
3Q 0.8496
Max 2.1819
Coefficients: Estimate Std. Error t value Pr(>|t|) ipca 1.47992 0.01979 74.78 <2e-16 ***
˜ A ` EXPECTATIVA DE INFLA¸ ˜ DOS CONSUMIDORES 8.6. APLICA¸CAO CAO --Signif. codes:
0
***
'
'
0.001
**
'
'
0.01
*
'
'
0.05
.
'
'
0.1
Residual standard error: 1.06 on 99 degrees of freedom Multiple R-squared: 0.9826, Adjusted R-squared: F-statistic: 5593 on 1 and 99 DF , p-value: < 2.2e-16
'
'
261
1
0.9824
> adf_coin1 = ur.df(ajuste_coin1$residuals, "none", lags = 12, selectlags = "AIC") > summary(adf_coin1)
############################################### # Augmented Dickey-Fuller Test Unit Root Test # ############################################### Test regression none
Call: lm(formula = z.diff ~ z.lag.1 - 1 + z.diff.lag) Residuals: Min 1Q Median -1.37125 -0.31229 0.07097
3Q 0.36439
Max 0.84176
Coefficients: Estimate Std. Error t value Pr(>|t|) z.lag.1 -0.14800 0.05163 -2.867 0.00523 ** z.diff.lag 0.07835 0.10577 0.741 0.46092 --Signif. codes: 0 *** 0.001 ** 0.01 * 0.05 . '
'
'
'
'
'
'
'
0.1
'
'
1
Residual standard error: 0.4942 on 85 degrees of freedom Multiple R-squared: 0.0 884, Adjusted R-squared: 0.0 6695 F-statistic: 4.1 21 on 2 and 85 DF, p-value: 0.01 957
Value of test-statistic is: -2.8666 Critical values for test statistics: 1pct 5pct 10pct tau1 -2.6 -1.95 -1.61
˜ DINAMICA ˆ CAP´ITULO 8. REGRESS AO
262 > acf(adf_coin1@res, main = "")
0 . 1
6 . 0 F C A 2 . 0
2 . 0 −
0
5
10
15 Lag
A an´alise da estat´ıstica do teste ADF nos leva `a rejei¸c˜ao da hip´otese nula e, portanto, conclu´ ımos que as vari´ aveis s˜ao cointegradas. Assim, podemos estimar o modelo de corre¸ c˜ ao de erro para encontrar as rela¸co˜es de longo e curto prazo entre elas. A Tabela 8.3 apresenta os valores estimados dos parˆametros usando as duas metodologias descritas na Se¸ c˜ao 8.5. Como esperado, ambos os procedimentos resultam em estimativas similares. ´ Parˆ ametro Unica Equa¸c˜ao Duas Equa¸c˜oes β .2862 0 0.2860 γ -0.0933 -0.0933 φ .4830 1 1.4800 Tabela 8.3: Estimativas do Modelo de Corre¸ c˜ ao de Erros Para finalizar, apresentamos o c´odigo em R que gerou as estimativas da tabela acima.
> # Estima¸c~ ao do modelo > require(dynlm) > # Procedimento em duas etapas > reg1 = lm( expinf_mensal$x ~ IPCA$x - 1) > res = ts(reg1$residuals, sta rt = c(2005,09), freq = 12)
8.7. RESUMO DOS MODELOS > > >
263
reg2 = dynlm(d(expinf_cons, 1) ~ d(ipca, 1) + L(res, 1) -1 ) # Procedimento em ´unica etapa reg = dynlm(d(expinf_cons, 1) ~ d(ipca, 1) + L(expinf_cons, 1) + L(ipca, 1) -1)
Resumo dos modelos Finalizando este cap´ıtulo, apresentamos na Tabela 8.4 um resumo dos modelos cab´ıveis a diferentes situa¸c˜oes de estacionariedade e n˜ao estacionariedade. Vari´ avel Vari´avel Erro M´ etodo de Estima¸c˜ao Independente Dependente I(0) I(0) I(0) ADL I(1)
I(0)
I(1)
I(1)
I(1)
I(1)
I(1)
I(1)
I(0)
Modelo mal especificado Primeira diferen¸ca em todas as vari´aveis. Modelo ADL Vari´ aveis Cointegradas. ECM
Tabela 8.4: Resumo dos modelos
264
˜ DINAMICA ˆ CAP´ITULO 8. REGRESS AO
Vetor Auto-Regressivo (VAR)
Rafael Jorge Pereira Pedro Costa Ferreira
[Em constru¸c˜ao]
CAP´ITULO 9. VETOR AUTO-REGRESSIVO (VAR)
266
Introdu¸ c˜ ao Um dos principais modelos utilizados na an´alise de s´eries temporias ´e o modelo Vetorial Autorregressivo (VAR). O VAR se tornou relevante ao tratar de modelos de diversas vari´aveis pois permite a completa especifica¸c˜ao do modelo. Os modelos econˆomicos, em geral, s˜ao os principais objetos de an´alise no estudo do modelo VAR. Este cap´ıtulo discute os principais aspectos do VAR desde sua metodologia at´e sua implementa¸c˜ao em R.
O modelo Vetorial Autorregressivo (VAR) ´e um dos modelos mais f´aceis, flex´ ıveis e bem sucedidos na an´alise de s´eries de tempo multivariada sendo uma extens˜ ao natural dos modelos autorregressivos univariados para s´eries temporais multivariada (Zivot e Wangl (2003)). O VAR mostrou ser muito u ´ til na realiza¸ca˜o de previs˜ao e an´alise estrutural de s´eries financeiras ´ muito utilizado na an´alise de vari´aveis macroeconˆomicas, previs˜oes realizadas e econˆomicas. E pelo relat´orio de infla¸c˜ao do banco central e em outras ´ areas. Um aspecto fundam ental que se deve ressaltar ´e o fato de que p or tr´as de cada modelo existe uma teoria econˆ omica que estrutura o modelo. As principais referˆencias no assunto s˜ao Hamilton (1994a), L¨ utkepohl (2005) e Enders (2015).
Este cap´ıtulo foi dividido da seguinte forma: Na segunda se¸c˜ao ser´a introduzido o modelo VAR( p) e as condi¸c˜oes necess´arias para valida¸c˜ao do modelo; na terceira se¸ c˜ao ser˜ao exploradas as caracter´ısticas estruturais do modelo tais como decomposi¸ca˜o de Cholesky, fun¸c˜ao de resposta ao impulso e previs˜ao dos erros de decomposi¸c˜ ao da variˆancia; na quarta se¸c˜ ao ´e introduzido o conceito de cointegra¸ c˜ao e o modelo Vetorial de Corre¸c˜ ao de Erros (VECM). A quinta se¸c˜ao faz uma breve introdu¸c˜ ao a uma classe especial de modelos n˜ao lineares muito utilizados em s´eries financeiras conhecido como Self-Exciting Threshold Autoregressive models (SETAR) (TSAY (2002)); a sexta se¸c˜ao replica um estudo de caso na economia do Canad´ a (BREITUNG et al. (2004)) explorando os conceitos discutidos nas se¸c˜oes anteriores. A ´ultima se¸ca˜o faz uma breve introdu¸c˜ao sobre o conceito de causalidade de Granger.
9.2. VAR(P)
267
VAR(p)
Seja Yt = (y1t , y2t ,..., ynt ) um vetor ( n × 1) de vari´aveis de s´eries temporais. Um modelo b´asico de vetores autorregressivos com defasagem p (VAR(p)) ´e dado pela equa¸ c˜ao
Yt = c + Π1Yt −1 + Π2Yt −2 + . . . + Π pYt − p + εt ,
t = 1,..., T ,
(9.1)
onde Πi s˜ao as matrizes de coeficientes ( n × n) e ε t e´ um ru´ ıdo branco (n × 1) com E (εt ) = 0 e
matriz de covariˆancia E (εt εt ) = Σ.
Uma caracter´ıstica fundamental do processo VAR(p) ´e sua estacionariedade. Dizemos que um processo VAR( p) ´e estacion´ ario ou est´avel se as s´eries geradas pelo processo s˜ ao estacion´arias, ou seja, sob as condi¸c˜oes iniciais necess´arias possui m´edia estacion´ aria e matriz de covariˆ ancia positiva definida.
A condi¸ca˜o de estabilidade ´e verificada atrav´ es do c´ alculo do polinˆomio caracter´ıstico
det(In − Π1 z − . . . − Π p z p ) =0
para
|z| ≤ 1.
(9.2)
Se a solu¸c˜ao da equa¸c˜ ao acima tiver raiz para z = 1 , uma ou mais s´eries do processo ´e 1
integrado de ordem I ( ). Na pr´atica a estabilidade de um processo Vetorial Autorregressivo VAR(p) pode ser verificada atrav´es do c´ alculo dos autovalores da matriz de coeficientes.
CAP´ITULO 9. VETOR AUTO-REGRESSIVO (VAR)
268
O VAR(p) pode ser escrito como um processo VAR( 1) da seguinte forma
ξt = Πξt −1 + υt ,
(9.3)
onde,
ξ = t
yt
.. . yt − p+1
,
Π
=
Π1
Π2
I
0
0
I
. . . Π p−1 Π p ... 0 0
... .. . . . .
0
.. . 0
0
...
I
.. .
ε , υ = ... . .. ε .
0
1t
t
nt
0
O processo VAR( p) ´e est´ avel se o modulo dos autovalores de Π s˜ao menores que 1.
Para uma dada amostra de vari´ aveis end´ogenas y1 , y2 ,..., yt e uma pr´ e - amostragem suficientemente grande de valores y − p+1 ,..., y0 , os coeficientes do processo VAR( p) podem ser estimados eficientemente por m´ınimos quadrados, o m´etodo ´e aplicado separadamente para cada equa¸c˜ ao.
Uma vez que o modelo VAR( p) foi estimado uma gama de an´alises podem ser realizadas a posteriori. O pesquisador pode estar interessado em testes de diagn´osticos, tais como, testar a ausˆ encia de correla¸c˜ao, heterocedasticidade ou n˜ao normalidade do processo de forma¸c˜ ao dos erros. Ele pode al´em disso estar interessado na inferˆ encia causal, na realiza¸ c˜ ao de previs˜ao e em diagnosticar o comportamento dinˆamico do modelo emp´ırico, i.e, fun¸c˜oes de resposta ao impulso e previs˜ao dos erros de decomposi¸ c˜ao da variˆancia. Os dois ´ultimos resultados s˜ao baseados na decomposi¸c˜ao em m´edias m´ oveis de Wold para um processo VAR( p) est´avel difinido como:
Yt = Φ0 εt + Φ1 εt −1 + Φ2 εt −2 + ...,
(9.4)
9.3. VAR ESTRUTURAL
269
com Φ0 = In e Φs pode ser calculado recursivamente da seguinte forma
s
Φs =
∑ Φs− j Π j
, s = 1,..., p
(9.5)
j =1
e Π j = 0 para j > p .
Finalmente, previs˜oes para um horizonte h ≥ 1 passos `a frente de um processo emp´ırico VAR(p) podem ser geradas recursivamente de acordo com
YT +h|T = c + Π1YT +h−1|T + . . . + Π pYT +h− p|T ,
onde YT + j|T = YT + j
para
(9.6)
j ≤ 0 . A matriz de covariˆancia dos erros de previs˜ao s˜ao dadas
como
Cov
YT +1
− YT +1|T .
YT +h
− YT +h|T
=
I
0
Φ1
I
.. . Φh−1
... 0 0
.. Φh−2
. 0
...
I
(
Σε ⊗ Ih
)
T
I
0
Φ1
I
.. . Φh−1
... 0 0
.. Φh−2
. 0
...
I
,
e Φi s˜ao as matrizes de coeficientes na representa¸ca˜o de Wold do processo VAR( p). O operador
⊗ representa o produto de Kronecker ( Hamilton (1994a) apˆendice A4, p´agina 732).
VAR Estrutural Os modelos VAR( p) possuem muitos parˆametros e entender a rela¸c˜ ao entre esses parˆametros ´e fundamental na interpreta¸c˜ao do modelo, pois esclarece a rela¸c˜ao existente entre as vari´aveis facilitando o entendimento do modelo. Quanto mais complexo for o processo de intera¸c˜ao entre as vari´aveis mais dif´ıcil se torna a interpreta¸c˜ao dos parˆametros. Portanto, a
CAP´ITULO 9. VETOR AUTO-REGRESSIVO (VAR)
270
an´alise das propriedades dinˆamicas s˜ao frequentemente resumidas usando v´arios tipos de an´alises estruturais. Os principais tipos de an´alises estruturais s˜ao (1) fun¸c˜ ao impulso resposta; (2) previs˜ao dos erros de decomposi¸c˜ao da variˆancia.
Impulso Resposta Todo processo VAR( p) de covariˆancia estacion´aria pode ser representado na forma de Wold
Yt = µ + εt + Φ1 εt −1 + Φ2 εt −2 + . . .
(9.7)
´ tentador interpretar onde as matrizes Φs s˜ao determinadas recursivamente pela equa¸c˜ao ( 5). E o (i, j ) - ´esimo elemento, φisj da matriz Φs , como um multiplicador dinˆamico ou resposta ao impulso
∂ yi,t +s ∂ yi,t = = φisj , ∂ ε j,t ∂ ε j,t −s
i, j = 1,..., n
(9.8)
entretanto essa interpreta¸c˜ao somente ´e poss´ ıvel se var(εt ) = Σ for uma matriz diagonal, tal que os elementos de εt sejam n˜ao correlatos. Uma forma de tornar os erros n˜ao correlatos ´e estimar o modelo VAR estrutural triangular proposto por Sims ( 1980).
y1t
= c1 + γ11Yt −1 + . . . + γ1 pYt − p + ε1t
(9.9)
y2t
= c1 + β21 y1t + γ21Yt −1 + . . . + γ2 pYt − p + ε2t
y3t
= c1 + β31 y1t + β32 y2t + γ31Yt −1 + . . . + γ3 pYt − p + ε3t
.. . ynt
= c1 + βn1 y1t + . . . + βn,n−1 yn−1,t + γn1Yt −1 + . . . + γnp Yt − p + εnt
9.3. VAR ESTRUTURAL
271
Na forma matricial o VAR( p) estrutural triangular ´e dado por
BYt = c + Π1Yt −1 + Π2Yt −2 + . . . + Π pYt − p + υt
onde
1
0
−β .. .
1
21
B=
... 0 0
0
.. . . . .
.. .
−βn1 −βn2
... 1
(9.10)
´e uma matriz triangular inferior com 1 s ao longo da dia gonal. A ´algebra de m´ınimos quadrados garante que a estimativa da matriz de covariˆ ancia do vetor de erro υt e´ diagonal. Os erros ortogonais ou n˜ao correlacionados υ t s˜ao referidos como erros estruturais.
O modelo estrutural triangular acima imp˜oe uma ordena¸c˜ao causal recursiva
y1 → y2 → . . . → yn
(9.11)
Uma vez que uma ordena¸c˜ao recursiva tenha sido estabelecida a representa¸c˜ao de Wold de Yt com base nos erros ortogonais υ t e´ dada por
Yt = µ + Θ0 υt + Θ1 υt −1 + Θ2 υt −2 + . . .
∂ yi,t +s ∂ yi,t = = θisj , ∂ ε j,t ∂ ε j,t −s
i, j = 1 ,..., n,
s > 0.
(9.12)
(9.13)
O gr´afico de θ is, j , (i, j )-´esimo elemento de Θs , contra s e´ chamado de fun¸c˜ao de resposta ao impulso de yi com respeito a ε j .
Na pr´atica, a fun¸c˜ao de resposta ao impulso
9.13 baseada no VAR( p) triangular 9.9
CAP´ITULO 9. VETOR AUTO-REGRESSIVO (VAR)
272
pode ser calculada diretamente a partir dos parˆ ametros de um VAR( p) n˜ao triangular 9.7 da seguinte forma.
Em primeiro lugar, observe que a matriz Σ e´ sim´ etrica e possui uma decomposi¸c˜ao de Cholesky da seguinte forma
Σ = ADA ,
onde A ´e uma matriz triangular inferior invert´ıvel com 1’s ao longo da diagonal e D ´e uma matriz diagonal com elementos diagonais positiv os. Em seguida, defina os erros estruturais como υt = A−1 εt .
(9.14)
Esses erros estruturais s˜ao ortogonais por constru¸c˜ao desde var (υt ) = A−1 ΣA −1 = A−1 ADA A −1 = D. Usando o fato de A−1 A = I na equa¸c˜ ao 9.12, a equa¸c˜ao 9.7 pode ser reescrita como
Yt
= µ + AA−1 εt + Π1 AA−1 εt −1 + Π2 AA−1 εt −2 + . . .
(9.15)
= µ + Θ0 υt + Θ1 υt −1 + Θ2 υt −2 + . . . onde Θ j = Π j A. Note que a matriz estrutural B em 9.10 e´ igual a A−1 .
Previs˜ ao dos Erros de Decomposi¸c˜ ao da Variˆ ancia
A decomposi¸c˜ao da variˆancia dos erros de previs˜ao informa que parte da variˆancia dos erros de previs˜ao de Yt +s e´ devido ao choque estrutural υ t .
9.3. VAR ESTRUTURAL
273
A decomposi¸c˜ao de Wold representada na equa¸c˜ao 9.7 permite concluir que Yt +s − Yˆt +s|t = εt +s + Φ1 εt +s−1 + Φ2 εt +s−2 + . . . + Φs−1 εt +1 ,
(9.16)
portanto, o erro quadr´atico m´edio de previs˜ ao “s” per´ıodos `a frente ´e
EQM (Yˆt +s|t ) = E [(Yt +s − Yˆt +s|t )(Yt +s − Yˆt +s|t ) ] = Σ + Φ1 ΣΦ1 + Φ2 ΣΦ2 + . . . + Φs−1 ΣΦs−1 . (9.17)
Para entender como cada componente dos erros ortogonais ( υ1t ,..., υnt ) contribui na forma¸c˜ao MSE observe que a equa¸c˜ ao 9.14 da se¸c˜ao anterior permite escrever
εt = A υ = a1 υ1t + a2 υ2t + . . . an υnt ,
(9.18)
onde, a j denota a j−´esima coluna da matriz A. Lembrando que os υ jt s˜ao n˜ao correlatos,
pode - se multiplicar a equa¸c˜ao 9.18 por ε t e tomar seu valor esperado
Σ = E (εt εt ) = a 1 a1 .Var (υ1t ) + a2 a2 .Var (υ2t ) + . . . + an an .Var (υnt ),
(9.19)
onde, υ jt e´ o elemento diagonal ( j , j ) da matriz diagonal D.
Substituindo a equa¸c˜ao 9.19 na 9.17, o EQM de previs˜ao “s” per´ ıodos `a frente ´e representado em fun¸c˜ao da variˆancia dos erros de decomposi¸c˜ ao
EQM (Yˆt +s|t ) = Σnj=1 {Var (υ jt ).[a j a j + Φ1 a j a j Φ1 + Φ2 a j a j Φ2 + . . . + Φs−1 a j a j Φs−1 ]}.
(9.20)
Essa express˜ao permite calcular a contribui¸c˜ao da j−´esima pertuba¸ca˜o ortogonalizada na previs˜ao “s” passos `a frente do EQM.
CAP´ITULO 9. VETOR AUTO-REGRESSIVO (VAR)
274
Modelo Vetorial de Corre¸c˜ ao de Erros (VECM) As condi¸c˜oes de estacionariedade e os mecanismos de diferencia¸ c˜ao impostos at´e o momento foram essenciais na especifica¸c˜ ao do Modelo Vetorial Autorregressivo VAR( p). No entanto, as informa¸c˜oes perdidas ao se diferenciar estas s´eries podem comprometer as previs˜oes do modelo e para se obter o modelo mais adequado poss´ıvel esta se¸c˜ao introduz o conceito
de cointegra¸c˜ao. As componentes de um vetor Yt = (y1 ,..., yn ) ´e dita ser cointegrada de ordem d , b, denotado por Yt ∼ CI (d , b) se
1. Todas as componentes de Yt s˜ ao integradas de ordem d . 2. Se existe um vetor β = (β1 ,..., βn ) tal que a combina¸c˜ ao linear de β Yt = β1 y1t + . . . + βn ynt ´e integrada de ordem (d − b), onde b > 0. O vetor β ´e chamado de vetor de cointegra¸c˜ao. De forma mais clara, o vetor integrado Yt de ordem d e´ cointegrado se existe uma combina¸c˜ao linear β Yt = β1 y1t + . . . + βn ynt de ordem ( d − b).
Considere o modelo univariado a seguir
mt = β0 + β1 pt + β2 yt + β3 rt + et
(9.21)
onde, mt , pt , yt e rt s˜ ao vari´aveis econˆomicas integradas de ordem I (1) e βt um vetor de parˆametros.
Um pressuposto fundamental diz que a sequˆencia e t e´ estacion´aria, reescrevendo a equa¸c˜ao 9.21 na forma
et = mt − β0 − β1 pt − β2 yt − β3 rt
(9.22)
como et e´ estacion´ario, pela equa¸c˜ ao 9.22 conclui - se que existe uma combina¸c˜ ao linear de mt , pt , yt e rt estacion´ aria.
˜ DE ERROS (VECM) 9.4. MODELO VETORIAL DE CORRE C ¸ AO
275
Um pressuposto do modelo ´e que as vari´ aveis econˆomicas do sistema possuem equil´ıbrio de longo prazo dado por
β1 y1t + β2 y2t + . . . + βn ynt = 0
(9.23)
os desvios do equil´ıbrio de longo prazo s˜ ao chamados de erros de equil´ıbrio et .
Neste exemplo e ao longo de toda se¸ c˜ ao as vari´aveis consideradas s˜ao cointegradas de ordem CI ∼ (1, 1). Todavia, existem casos em que as vari´aveis em quest˜ao possuem diferentes ordem de integra¸c˜ ao podendo ocorrer a multicointegra¸c˜ao e os casos em que tem-se dois ou mais vetores de cointegra¸c˜ao linearmente independentes denominado m´ultipla cointegra¸ca˜o (Enders (2015)).
A seguir ser´a apresentado um caso simples bivariado do modelo vetorial de corre¸ c˜ ao de erros e a ideia por tr´as de sua constru¸c˜ao.
Considere o seguinte sistema de equa¸c˜oes:
∆rSt
= αS (rLt−1 − β rSt −1 ) + εSt ,
∆rLt
= −αL (rLt −1 − β rSt−1 ) + εLt ,
αS > 0,
(9.24)
αL > 0 ,
onde ε st e ε Lt s˜ao ru´ıdos aleat´ orios que podem ser correlatos.
Note a rela¸c˜ ao entre o modelo de corre¸c˜ao de erros e as vari´aveis cointegradas. Partindo da hip´otese que as vari´aveis s˜ao cointegradas de ordem (1, 1), tanto ∆rst quanto ∆rLt s˜ao estaci-
CAP´ITULO 9. VETOR AUTO-REGRESSIVO (VAR)
276
on´arios, portanto, o lado esquerdo da equa¸c˜ao 9.24 ´e I (1). No lado direito da mesma equa¸c˜ao, tanto ε st quanto ε Lt s˜ ao estacion´arios, logo, rLt −1 − β rst −1 tamb´ em deve ser estacion´ario, nada impede que se acrescente os valores defasados de
ao 9.24 obtendo - se o ∆rst e ∆rLt na equa¸c˜
seguinte modelo:
∆rSt
= αS (rLt −1 − β rSt −1 ) + Σa11 (i)∆rSt −i + Σa12 (i)∆rLt−i + εSt ,
∆rLt
= −αL (rLt −1 − β rSt−1 ) + Σa21 (i)∆rSt −i + Σa22 (i)∆rLt −i + εLt ,
αS > 0
(9.25)
αL > 0
a menos do termo de corre¸ c˜ ao de erros, note a semelhan¸ca deste modelo com com o modelo VAR bivariado, sendo um caso bivariado do modelo de corre¸ c˜ao de erros VECM.
Esse resultado pode ser facilmente generalizado para o caso
n−dimensional. Formal-
mente assuma que o vetor (y1t ,..., ynt ) seja integrado de ordem I (1) possui uma representa¸ca˜o de corre¸ca˜o de erros que pode ser expresso na forma:
∆Yt = Π0 + αβ Yt −1 + Π1 ∆Yt −1 + Π2 ∆Yt −2 + . . . + Πn ∆Yt −n
onde,
•
Π0 e´ o intercepto.
•
β ´e o vetor de corre¸c˜ ao de erros.
•
α e´ o termo que determina a velocidade do ajuste.
•
ao matrizes de coeficientes ( n × n) com elementos π jk (i). Πn s˜
(9.26)
˜ DE ERROS (VECM) 9.4. MODELO VETORIAL DE CORRE C ¸ AO
277
Teste de Cointegra¸c˜ ao de Johansen Os principais testes de cointegra¸ca˜o assumem que todas as vari´aveis sejam integradas de mesma ordem e na maior parte dos casos que as vari´ aveis sejam integradas de ordem I (1). Engle e Granger ( 1987) propusseram um procedimento em quatro etapas para determinar se duas vari´aveis integradas de ordem I (1) s˜ao cointegradas de ordem CI (1, 1) (Enders (2015), se¸ca˜o 6.4). A seguir ser´a apresentado o teste de cointegra¸c˜ao de Johansen assim como cada etapa da constru¸c˜ao do teste.
Os passos b´asicos para constru¸ca˜o do teste de Johansen s˜ao: •
Especificar e estimar o modelo VAR( p) para Yt .
•
Construir testes de raz˜ao de verossimilhan¸ca para o posto de Π e determinar o n´umero de vetores de cointegra¸c˜ao.
•
Se necess´ario, normalizar o vetor de cointegra¸ca˜o do modelo de acordo com as restri¸c˜ oes estruturais necess´arias.
•
Estimar o modelo VECM por m´axima verossimilhan¸ca. Seja r o posto da matriz Π de coeficientes do modelo VAR( p).
As hip´oteses do teste de Johansen s˜ao estabelecidas da maneira a seguir: 1. H0 (r = 0) × H1 (r > 0 ). Se a hip´otese nula n˜ao ´e rejeitada ent˜ ao se conclui que n˜ao existe cointegra¸c˜ao entre as n vari´ aveis Yt , caso contr´ario, seguir para o segundo passo. 2. Se a hip´otese nula n˜ao for rejeitada, ent˜ao, existe pelo menos um vetor de cointegra¸c˜ao e as hip´oteses neste caso s˜ao: H0 (r = 1) × H1 (r > 1). Se a hip´otese nula n˜ao ´e rejeitada ent˜ ao se conclui que existe um vetor de cointegra¸c˜ao entre as n vari´ aveis Yt , caso contr´ario, seguir para o terceiro passo. 3. A sequˆ encia continua at´e que a hip´ otese nula n˜ao seja rejeitada. O teste pode ser expresso de modo mais compacto a seguir
CAP´ITULO 9. VETOR AUTO-REGRESSIVO (VAR)
278 •
H0 (r0 ) :
r = r0 vs. H1 (r0 ) :
r0 = r 0 + 1
Modelo Threshold Autoregressive (TAR) O comportamento a longo prazo de s´eries temporais n˜ao lineares variam de acordo com estado do sistema, para captar tais varia¸ c˜ oes estruturais em 1983 Tong propˆos um modelo autorregressivo com parˆametro de threshold (TAR Model). Neste modelo a cada mudan¸ca de cen´ ario o parˆametro de threshold ajusta automaticamente os coeficientes do modelo autorregressivo.
O modelo autorregressivo com parˆametro de threshold ´e uma combina¸c˜ao de modelos AR( p). Uma poss´ıvel representa¸ c˜ao do modelo AR( 1) em um regime de dois parˆ ametros ´e dada por:
yt
onde os
ε s t
− . = .
1 5yt −1 + εt ,
se yt −1 < 0 ,
0 5yt −1 + εt ,
se yt −1 ≥ 0.
s˜ ao iid N (0, 1). Nesse exemplo a defasagem ´e 1 e o threshold ´e ponto 0.
Observe que o modelo descrito ´e uma combina¸ca˜o de modelos lineares por partes para obter uma melhor aproxima¸ca˜o da equa¸c˜ ao da m´edia condicional. A ideia central e´ otimizar a previs˜ ao ajustando os parˆametros de um modelo autorregressivo linear de acordo com a regi˜ao em que se encontrarem os valores de uma determinada vari´ avel.
Uma s´erie de tempo yt e´ dita seguir um modelo TAR auto excitado de k regimes (SETAR) com parˆametro de limiar yt −d se satisfaz
( j)
( j)
( j)
( j)
yt = φ0 + φ1 yt −1 + . . . + φ p yt − p + εt , se
γ j−1 ≤ yt −d ≤ γ j ,
(9.27)
˜ DO VAR(P) USANDO R PARA O CANAD A ´ 9.6. ESTIMA¸CAO
279
Estima¸ c˜ ao do VAR( p) usando R para o Canad´ a Esta se¸ca˜o replica o estudo de caso realizado por ( BREITUNG et al. (2004)) para um conjunto de dados macroeconˆomicos do Canad´a discutindo os principais m´etodos, fun¸ co˜es e a interpreta¸c˜ao dos resultados. As s´eries utilizadas foram: produtividade no trabalho, taxa de emprego, taxa de desemprego e sal´arios reais. Os dados foram coletados na base de dados da OECD do primeiro trimestre de 1980 at´e o u ´ltimo trimestre de 2004.
> library("vars") > data("Canada") > plot(Canada, nc = 2, xlab = "")
Um dos pressupostos do modelo VAR ´e que as s´eries s˜ ao estacion´arias e para testar a estacionariedade destas s´ eries ser´ a utilizado o teste de Dickey and Fuller, de modo an´ alogo ao realizado na se¸c˜ao 1.6 do cap´ıtulo anterior. A estat´ıstica de teste observada foi de (−1.9875), isto ´e, maior que o valor cr´ıtico de (−3.45) ao n´ıvel de significˆ ancia de 5%. Portanto, se aceita a hip´otese nula na qual a vari´avel em quest˜ao ´e n˜ ao estacion´aria.
> adf1 <- summary(ur.df(Canada[, "prod"], type = "trend", lags = 2)) > adf1
############################################### # Augmented Dickey-Fuller Test Unit Root Test # ############################################### Test regression trend
Call: lm(formula = z.diff ~ z.lag.1 + 1 + tt + z.diff.lag) Residuals: Min 1Q Median -2.19924 -0.38994 0.04294
3Q 0.41914
Max 1.71660
CAP´ITULO 9. VETOR AUTO-REGRESSIVO (VAR)
280 Coefficients:
Estimate Std. Error t value Pr(>|t|) (Intercept) 30.415228 15.309403 1.987 0.0506 . z.lag.1 -0.075791 0.038134 -1.988 0.0505 . tt 0.013896 0.006422 2.164 0.0336 * z.diff.lag1 0.284866 0.114359 2.491 0.0149 * z.diff.lag2 0.080019 0.116090 0.689 0.4927 --Signif. codes: 0 *** 0.001 ** 0.01 * 0.05 . '
'
'
'
'
'
'
'
0.1
'
'
1
Residual standard error: 0.6851 on 76 degrees of freedom Multiple R-squared: 0.1354, Adjusted R-squared: 0.08993 F-statistic: 2.9 76 on 4 and 76 DF, p-value: 0.02 438
Value of test-statistic is: -1.9875 2.3 2.3817 Critical values for test statistics: 1pct 5pct 10pct tau3 -4.04 -3.45 -3.15 phi2 6.50 4.88 4.16 phi3 8.73 6.49 5.47
Em seguida, se aplica o mesmo teste na s´ erie diferenciada (primeira diferen¸ca) e neste caso, 5%
5 1604
a estat´ıstica de teste observada ao n´ıvel de significˆ ancia de foi igual a ( − . ), ou seja, menor que o valor cr´ıtico de (−2.89), portanto, rejeita - se a hip´otese nula concluindo que a vari´ avel produtividade ´e integrada de primeira ordem.
O mesmo procedimento ´e realizado para as demais vari´aveis e os resultados obtidos mostram que todas as vari´aveis s˜ao integradas de primeira ordem, sendo necess´ario aplicar a primeira diferen¸ca em cada uma delas.
> adf2 <- summary(ur.df(diff(Canada[, "prod"]), type = "drift", lags = 1)) > adf2
############################################### # Augmented Dickey-Fuller Test Unit Root Test # ###############################################
˜ DO VAR(P) USANDO R PARA O CANAD A ´ 9.6. ESTIMA¸CAO
281
Test regression drift
Call: lm(formula = z.diff ~ z.lag.1 + 1 + z.diff.lag) Residuals: Min 1Q Median -2.05124 -0.39530 0.07819
3Q 0.41109
Max 1.75129
Coefficients: Estimate Std. Error t value Pr(>|t|) (Intercept) 0.11534 0.08029 1.437 0.155 z.lag.1 -0.68893 0.13350 -5.160 1.83e-06 *** z.diff.lag -0.04274 0.11275 -0.379 0.706 --Signif. codes: 0 *** 0.001 ** 0.01 * 0.05 . 0.1 '
'
'
'
'
'
'
'
'
'
1
Residual standard error: 0.6971 on 78 degrees of freedom Multiple R-squared: 0.3615, Adjusted R-squared: 0.3451 F-statistic: 22. 08 on 2 and 78 DF, p-value: 2.526e-08
Value of test-statistic is: -5.1604 13.3184 Critical values for test statistics: 1pct 5pct 10pct tau2 -3.51 -2.89 -2.58 phi1 6.70 4.71 3.86
Ap´ os a an´alise das condi¸c˜oes necess´arias para aplica¸c˜ ao do modelo ser´a feita a escolha do lag “ p” com aux´ ılio da fun¸c˜ao VARselect cujas sa´ıdas s˜ ao os testes AIC, HQ, SC ou FPE.
> VARselect(Canada, lag.max = 8, type = "both")
$selection AIC(n) HQ(n)
SC(n) FPE(n)
3213 $criteria 12345
CAP´ITULO 9. VETOR AUTO-REGRESSIVO (VAR)
282
AIC(n) -6.272579064 -6.636669705 -6.771176872 -6.634609210 -6.398132246 HQ(n) -5.978429449 -6.146420347 -6.084827770 -5.752160366 -5.319583658 SC(n) -5.536558009 -5.409967947 -5.053794411 -4.426546046 -3.699388378 FPE(n) 0.001889842 0.001319462 0.001166019 0.001363175 0.001782055 6 7 8 AIC(n) -6.307704843 -6.070727259 -6.06159685 HQ(n) -5.033056512 -4.599979185 -4.39474903 SC(n) -3.118280272 -2.390621985 -1.89081087 FPE(n) 0.002044202 0.002768551 0.00306012
Em seguida, ser´a realizada a estima¸c˜ ao dos coeficientes do modelo utilizando a fun¸ c˜ ao VAR(p), sendo “ p” selecionado a partir da escolha de um dos testes acima.
> Canada <- Canada[, c("prod", "e", "U", "rw")] > p1ct <- VAR(Canada, p = 1, type = "both") > p1ct
VAR Estimation Results: ======================= Estimated coefficients for equation prod: ========================================= Call: prod = prod.l1 + e.l1 + U.l1 + rw.l1 + const + trend prod.l1 0.96313671
e.l1 0.01291155
U.l1 rw.l1 const 0.21108918 -0.03909399 16.24340747
trend 0.04613085
Estimated coefficients for equation e: ====================================== Call: e = prod.l1 + e.l1 + U.l1 + rw.l1 + const + trend prod.l1 0.19465028 trend -0.04066045
e.l1 1.23892283
U.l1 0.62301475
Estimated coefficients for equation U: ======================================
rw.l1 const -0.06776277 -278.76121138
˜ DO VAR(P) USANDO R PARA O CANAD A ´ 9.6. ESTIMA¸CAO
283
Call: U = prod.l1 + e.l1 + U.l1 + rw.l1 + const + trend prod.l1 -0.12319201
e.l1 -0.24844234
U.l1 0.39158002
rw.l1 const 0.06580819 259.98200967
trend 0.03451663
Estimated coefficients for equation rw: ======================================= Call: rw = prod.l1 + e.l1 + U.l1 + rw.l1 + const + trend prod.l1 -0.22308744
e.l1 -0.05104397
U.l1 -0.36863956
rw.l1 const 0.94890946 163.02453066
> summary(p1ct, equation = "e")
VAR Estimation Results: ========================= Endogenous variables: prod, e, U, rw Deterministic variables: both Sample size: 83 Log Likelihood: -207.525 Roots of the characteristic polynomial: 0.9504 0.9504 0.9045 0.7513 Call: VAR(y = Canada, p = 1, type = "both")
Estimation results for equation e: ================================== e = prod.l1 + e.l1 + U.l1 + rw.l1 + const + trend Estimate Std. Error prod.l1 0.19465 0.03612 e.l1 1.23892 0.08632 U.l1 0.62301 0.16927 rw.l1 -0.06776 0.02828 const -278.76121 75.18295 trend -0.04066 0.01970
t value Pr(>|t|) 5.389 7.49e-07 *** 14.353 < 2e-16 *** 3.681 0.000430 *** -2.396 0.018991 * -3.708 0.000392 *** -2.064 0.042378 *
--Signif. codes:
'
0
***
'
'
0.001
**
'
0.01
*
'
'
0.05
.
'
'
0.1
'
'
1
trend 0.07142229
CAP´ITULO 9. VETOR AUTO-REGRESSIVO (VAR)
284
Residual standard error: 0.4701 on 77 degrees of freedom Multiple R-Squared: 0.9975, Adjusted R-squared: 0.9973 F-statistic: 6088 on 5 and 77 DF , p-value: < 2.2e-16
Covariance matrix of residuals: prod e U rw prod 0.469517 0.06767 -0.04128 0.002141 e 0.067667 0.22096 -0.13200 -0.082793 U -0.041280 -0.13200 0.12161 0.063738 rw 0.002141 -0.08279 0.06374 0.593174 Correlation matrix of residuals: prod e U rw prod 1.000000 0.2101 -0.1728 0.004057 e 0.210085 1.0000 -0.8052 -0.228688 U -0.172753 -0.8052 1.0000 0.237307 rw 0.004057 -0.2287 0.2373 1.000000
> plot(p1ct, names = "e")
Para testar a adequa¸c˜ao do modelo alguns testes s˜ ao realizados. O primeiro foi o “serial.teste”testa a correla¸c˜ao dos erros no caso multivariado. O segundo foi o teste de assimetria e curtose multivariados para os res´ıduos do VAR(p) “normality.test”. O terceiro e u ´ ltimo ´e o teste do efeito ARCH utilizando a fun¸c˜ao “arch.test”tanto para o caso multivariado quanto para o univariado.
> ser11 <- serial.test(p1ct, lags.pt = 16, type = "PT.asymptotic") > ser11$serial
Portmanteau Test (asymptotic) data: Residuals of VAR obje ct p1c t Chi-squared = 233.5, df = 240, p-value = 0.606
> norm1 <- normality.test(p1ct) > norm1$jb.mul
˜ DO VAR(P) USANDO R PARA O CANAD A ´ 9.6. ESTIMA¸CAO
285
$JB JB-Test (multivariate) data: Residuals of VAR obje ct p1c t Chi-squared = 9.9189, df = 8, p-value = 0.2708
$Skewness Skewness only (multivariate) data: Residuals of VAR obje ct p1c t Chi-squared = 6.356, df = 4, p-value = 0.1741
$Kurtosis Kurtosis only (multivariate) data: Residuals of VAR obje ct p1c t Chi-squared = 3.5629, df = 4, p-value = 0.4684
> arch1 <- arch.test(p1ct, lags.multi = 5) > arch1$arch.mul
ARCH (multivariate) data: Residuals of VAR obje ct p1c t Chi-squared = 570.14, df = 500, p-value = 0.01606
> plot(arch1, names = "e") > plot(stability(p1ct), nc = 2)
Em seguida ´e feita a an´ alise de cointegra¸c˜ao atrav´ es da fun¸ c˜ao “ca.jo”e a estima¸ca˜o dos parˆ ametros do modelo de corre¸c˜ao de erros VECM. Pode - se verificar que tanto para o lag 2
k=
3
e k=
5%
ao n´ıvel de
1
de significˆancia se aceita a hip´otese nula de r = .
> summary(ca.jo(Canada, type = "trace", ecdet = "trend", K = 3, spec = "transitory"))
CAP´ITULO 9. VETOR AUTO-REGRESSIVO (VAR)
286 ###################### # Johansen-Procedure # ######################
Test type: trace statistic , with linear trend in cointegration Eigenvalues (lambda): [1] 4.505013e-01 1.962777e-01 1.676668e-01 4.647108e-02 2.632104e-17 Values of teststatistic and critical values of test:
r r r r
<= 3 <= 2 <= 1 = 0
test 10pct 5pct 1pct | 3.85 10 .49 12. 25 16 .26 | 18.72 22.76 25.32 30.45 | 36.42 39.06 42.44 48.45 | 84. 92 59 .14 62. 99 70 .05
Eigenvectors, normalised to first column: (These are the cointegration relations) prod.l1 e.l1 U.l1 rw.l1 trend.l1 prod.l1 1.00000000 1.0000000 1.0000000 1.0000000 1.0000000 e.l1 -0.02385143 1.2946681 -2.8831559 4.2418087 -8.2903941 U.l1 3.16874549 3.4036732 -7.4261514 6.8413561 -12.5578436 rw.l1 1.83528156 -0.3330945 1.3978789 -0.1393999 2.4466500 trend.l1 -1.30156097 -0.2302803 -0.5093218 -1.5925918 0.2831079 Weights W: (This is the loading matri x)
prod.d e.d U.d rw.d
prod.l1 e.l1 U.l1 rw.l1 trend.l1 -0.006535281 -0.02763446 -0.070975296 -0.014754352 1.077469e-11 -0.008503348 0.11414011 -0.008156659 0.003988051 7.400296e-12 -0.004718574 -0.06154306 0.020719431 -0.006557248 -4.663893e-12 -0.046213350 -0.14579644 -0.016945105 0.011896044 6.952035e-12
> summary(ca.jo(Canada, type = "trace", ecdet = "trend", K = 2, spec = "transitory"))
###################### # Johansen-Procedure # ###################### Test type: trace statistic , with linear trend in cointegration
˜ DO VAR(P) USANDO R PARA O CANAD A ´ 9.6. ESTIMA¸CAO
287
Eigenvalues (lambda): [1] 4.483918e-01 2.323995e-01 1.313250e-01 4.877895e-02 9.508809e-17 Values of teststatistic and critical values of test:
r r r r
<= 3 <= 2 <= 1 = 0
test 10pct 5pct 1pct | 4.10 10 .49 12. 25 16 .26 | 15.65 22.76 25.32 30.45 | 37.33 39.06 42.44 48.45 | 86. 12 59 .14 62. 99 70 .05
Eigenvectors, normalised to first column: (These are the cointegration relations) prod.l1 e.l1 U.l1 rw.l1 trend.l1 prod.l1 1.0000000 1.0000000 1.00000000 1.000000 1.000000 e.l1 2.7132129 -6.3190324 0.49616472 16.333916 -10.368563 U.l1 8.8369211 -15.2682881 1.48062661 25.774259 -16.048489 rw.l1 -0.3716323 3.1817254 -0.04085215 -2.546391 4.927457 trend.l1 -0.4177976 -0.9335588 -0.26592659 -3.413555 -1.753060 Weights W: (This is the loading matri x)
prod.d e.d U.d rw.d
> > > + > > > > > > +
prod.l1 e.l1 U.l1 rw.l1 trend.l1 0.023155644 -0.02832697 -0.10914770 -0.006295988 -4.784701e-13 0.005602438 -0.01739149 0.08679396 -0.001019323 -4.385546e-13 -0.019277135 0.01381763 -0.03696147 -0.002276871 4.919886e-13 -0.084618968 -0.02739056 -0.07798404 0.003985020 -1.032315e-13
vecm <- ca.jo(Canada[, c("rw", "prod", "e", "U")], type = "trace", ecdet = "trend", K = 3, vecm.r1 <- cajorls(vecm, r = 1) vecm <- ca.jo(Canada[, c("prod", "e", "U", "rw")], type = "trace", ecdet = "trend", K = 3, spec = "transitory") SR <- mat rix(NA, nrow = 4, ncol = 4) SR[4, 2] <- 0 LR <- mat rix(NA, nrow = 4, ncol = 4) LR[1, 2:4] <- 0 LR[2:4, 4] <- 0 svec <- SVEC(vecm, LR = LR, SR = SR, r = 1, lrt est = FALSE, boo t = TRUE, runs = 100)
> summary(svec) SVEC Estimation Results:
CAP´ITULO 9. VETOR AUTO-REGRESSIVO (VAR)
288 ========================
Call: SVEC(x = vecm, LR = LR, SR = SR, r = 1, lrtest = FALSE, boot = TRUE, runs = 100) Type: B-model Sample size: 81 Log Likelihood: -161.838 Number of iterations: 11 Estimated contemporaneous impact matrix: prod e U rw prod 0.58402 0.07434 -0.152578 0.06900 e -0.12029 0.26144 -0.155096 0.08978 U 0.02526 -0.26720 0.005488 0.04982 rw 0.11170 0.00000 0.483771 0.48791 Estimated standard errors for impact matrix: prod e U rw prod 0.11004 0.12979 0.23632 0.08065 e 0.06727 0.06172 0.18378 0.03843 U 0.05338 0.05068 0.05606 0.02948 rw 0.14439 0.00000 0.67174 0.07648 Estimated long run impact matrix: prod prod 0.7910 e 0.2024 U -0.1592 rw -0.1535
e Urw 0.0000 0.0000 0.5769 -0.4923 -0.3409 0.1408 0.5961 -0.2495
0 0 0 0
Estimated standard errors for long-run matrix: prod e U rw prod 0.1 477 0.0000 0.0 000 0 e 0.2574 0.1794 0.5969 0 U 0.1206 0.0909 0.1531 0 rw 0.1865 0.1591 0.2718 0 Covariance matrix of reduced form residuals (*100): prod e U rw prod 37.4 642 -2. 096 -0.2512 2.509 e U rw
-2.0960 11.494 -6.9273 -4.467 -0.2512 -6.927 7.4544 2.978 2.5087 -4.467 2.9783 48.457
9.7. CAUSALIDADE DE GRANGER
289
> LR[3, 3] <- 0 > svec.oi <- update(svec, LR = LR, lrtest = TRUE, boot = FALSE) > svec.oi$LRover
LR overidentification data: vecm Chi^2 = 6.0745, df = 1, p-value = 0.01371
> svec.irf <- irf(svec, response = "U", n.ahead = 48, boot = TRUE) > plot(svec.irf) > fevd.U <- fevd(svec, n.ahead = 48)$U
Causalidade de Granger Um dos principais usos do VAR( p) ´e a realiza¸ c˜ao de previs˜ao, a estrutura do modelo VAR(p) utiliza informa¸c˜ oes sobre uma vari´avel ou um grupo de vari´aveis capacitando a previs˜ ao das demais vari´aveis do modelo. Neste sentido, uma das caracter´ısticas estruturais mais importante ´e a estrutura de correla¸ c˜ao entre as vari´aveis. No intuito de entender melhor como a estrutura de correla¸c˜ao afeta o modelo, Granger ( 1969) desenvolveu a no¸c˜ao de causalidade de Granger. Se uma vari´avel ou grupo de vari´aveis y 1 ´e u ´ til para prever outra vari´avel ou grupo de vari´ aveis y 2 ent˜ ao, y 1 e´ dito Granger-causa y 2 , caso contr´ario, y 1 e´ dito n˜ ao Granger-causa y 2 .
Formalmente, y1 n˜ao Granger-causa y2 se para todo s > 0 o EQM da previs˜ ao de y2,t +s com base em ( y2,t , y2,t −1 ,... ) ´e o mesmo que o EQM da previs˜ao de y2,t +s com base
em (y2,t , y2,t −1 ,... ) e (y1,t , y1,t −1 ,... ). A no¸c˜ao de causalidade de Granger n˜ ao implica uma rela¸ca˜o de causa e efeito e sim na capacidade de previs˜ ao.
2
Um exemplo do modelo no caso bivariado VAR( ) com Yt = (y1t , y2t ) , y2 n˜ ao Grangercausa y1 se as matrizes de coeficientes ( Π1 ,..., Π p ) s˜ ao triangulares inferiores para todo “ p”, neste caso, o modelo VAR( 2) possui a seguinte forma
CAP´ITULO 9. VETOR AUTO-REGRESSIVO (VAR)
290
= + π π y1 y2
c1
1 11
0
c2
1 21
1 22
π
y1t −1 y2t −1
+ . . . + π π
p 11
0
p
p
21
de modo que todos os coeficientes em valores defasados de
π22
y1t − p y2t − p
+ ε , ε 1t 2t
y2 s˜ ao iguais a zero na equa¸ c˜ ao
para y1 .
Da mesma forma, y1 n˜ ao Granger-causa y2 se todos os coeficientes de valores defasados de y1 s˜ ao zero na equa¸c˜ao para y2
= + π y1
c1
1 11
1 π12
y2
c2
0
1 π22
y1t −1 y2t −1
+ . . . + π
11
p
p π12
0
p π22
y1t − p y2t − p
+ ε . ε 1t
2t
No exemplo bivariado acima se y2 n˜ao Granger-causa y1 e se y1 n˜ ao Granger-causa y2 , as matrizes de coeficientes Π1 ,... , Π p s˜ ao diagonais. Se as vari´aveis do modelo VAR s˜ao estacion´arias, uma forma direta de testar as hip´oteses a causalidade de Granger ´e atrav´ es da estat´ıstica de teste Fn, p
•
H0 : π11 = π12 = π21 = π22 = 0,
•
= 0, H1 : πi j
para algum i, j = 1, 2.
Referˆ encias Bibliogr´ aficas
Akaike, H. (1973) Information theory and an extension of the maximum likelihood principle. 2nd International Symposium on Information Theory. Bai, J. e Perron, P. (2003) Computation and analysis of multiple structural change models. Journal of Applied Econometrics.
Bengtsson, H. (2015) utils: Various Programming Utilities. URL http://cran.r-project. org/package=R.utils. Box, G. E. P. e Jenkins, G. M. (1970)
Time Series Analysis forecasting and control . San
Francisco: Holden Day. — (1976) Time Series Analysis, forecasting and control . San Francisco: Third Edition. Holden Day. Series G. BREITUNG, J., Br u ¨ggemann, R. e L u ¨tkepohl., H. (2004) Structural vector autoregressive modeling and impulse responses. Applied time series econometrics. Breusch, T. S. (1978) Testing for autocorrelation in dynamic linear models*. Economic Papers, 17, 334–355. Calcagno, V., Calcagno, M. V., Java, S. e Suggests, M. (2013) Package ‘glmulti’.
Australian
292
ˆ ´ REFERENCIAS BIBLIOGRAFICAS
Chan, K. e Ripley, B. (2012a) Tsa: Time seri es analys is. r package version 1.01.
URL:
http://CRAN. R-project. org/package= TSA. Chan, K.-S. e Ripley, B. (2012b) TSA : Time Series Analysis. URL http://CRAN.R-project. org/package=TSA.
Chang, I., Tiao, G. C. e Chen, C. (1988) Estimation of time series parameters in the presence of outliers. Technometrics, 30, 193–204. Chow, G. C. (1960) Tests of equality between sets of coefficients in two linear regressions. Econometrica: Journal of the Econometric Society, 591–605. Cowpertwait, P. e Metcalfe, A. . (2009) Introductory Time Series with R. , vol. 1. Sringer Science+Business, LLC. Dickey, D. A. e Fuller, W. A. (1979a) Distribution of the estimators for autoregressive time series with a unit root. Journal of the American statistical association, 74, 427–431. — (1979b) Distribution of the estimators for autoregressive time series with a unit root. Journal of the American Statistical Association . Doldado, Juan, J. T. e Sosvilla-Rivero, S. (1979) Cointegration and unit roots.
Journal of
Economic Surveys. Dragulescu, A. A., Dragulescu, M. A. A. e Provide, R. (2012) Package ‘xlsx’.
Cell , 9, 1.
Durbin, J. (1970) Testing for serial correlation in least-squares regression when some of the regressors are lagged dependent variables. Econometrica: Journal of the Econometric Society, 410–421. Durbin, J. e Watson, G. (1971) Testing for serial correlation in least squares regression. iii. Biometrika, 58, 1–19. Durbin, J. e Watson, G. S. (1950) Testing for serial correlation in least squares regression. i. Biometrika, 37, 409–428.
ˆ ´ REFERENCIAS BIBLIOGRAFICAS — (1951) Testing for serial correlation in least squares regression. ii.
293 Biometrika, 159–177.
Eliott, G., Rothenberg, T. e Stock, J. (1996) Efficient test for an autoregressive unit root. Econometrica, 64, 813–836. Elliott, G., Rothenberg, T. J. e Stock, J. H. (1992) Efficient tests for an autoregressive unit root. Enders, W. (2008) Applied econometric time series . John Wiley & Sons. — (2015) Applied econometric time series., vol. 4. John Wiley & Sons Inc. Engle, R. F. (1984) Wald, likelihood ratio, and lagrange multiplier tests in econometrics. Handbook of econometrics, 2, 775–826. Ferreira, P. C., Gondin, J. L. e de Mattos, D. M. (2015) M´etodos de ajuste sazonal para s´eries de business tendency: um estudo de caso para a sondagem da ind´ustria utilizando o m´etodo x13-arimaseats. FGV | IBRE. Findley, D. F., Monsell, B. C., Bell, W. R., Otto, M. C. e Chen, B.-C. (1998) New capabilities and method of the x-12-arima seasonal adjustment program.
Journal of Business and
Economic Statistics, 16. Fok, D., Franses, P. H. e Paap, R. (2005) Performance of seasonal adjustment procedures: Simulation and empirical results. Econometric Institute Report. Fox, J., Weisberg, S., Adler, D., Bates, D., Baud-Bovy, G., Ellison, S., Firth, D., Friendly, M., Gorjanc, G., Graves, S. et al. (2015) Package ‘car’. French, M. W. (2001) Estimating changes in trend growth of total factor productivity: Kalman and h-p filters versus a markov-switching framework. Gavrilov, I., Pusev, R. e Pusev, M. R. (2014) Package ‘normtest’.
Godfrey, L. G. (1978) Testing against general autoregressive and moving average error models when the regressors include lagged dependent variables. Econometrica: Journal of the Econometric Society, 1293–1301.
294
ˆ ´ REFERENCIAS BIBLIOGRAFICAS
Granger, C. W. e Newbold, P. (1974) Spurious regressions in econometrics. Journal of econometrics, 2, 111–120. — (1976) Forecasting transformed series. Journal of the Royal Statistical Society. Series B (Methodological), 189–203. Graves, S. (2012) Fints: Companion to tsay (2005) analysis of financial time series. R package version 0.4-4, URL http://cran. r-project. org/web/packages/FinTS/index. html . — (2014) FinTS: Companion to Tsay (2005) Analysis of Financial Time Series . URL http: //cran.r-project.org/package=FinTS .
Greene, W. H. (2003) Econometric analysis. Pearson Education India. G´omez, V. e Maravall, A. (1997) Guide for using the programs tramo and seats (beta version). Banco de Espa˜na. URL http://www.bde.es/f/webbde/SES/Secciones/Publicaciones/ PublicacionesSeriadas/DocumentosTrabajo/98/Fic/dt9805e.pdf .
Hamilton, J. D. (1994a) Time series analysis. , vol. 2. Princeton: Princeton university press. — (1994b) Time series analysis , vol. 2. Princeton university press Princeton. — (1994c) Time Series Analysis. Princeton University Press. Harvey, A. e Shepard, N. (1993) Structural time series models.
Elsevier Science Publishers
B.V. Hildreth, C. e Lu, J. (1960) Demand relations with auto-correlated disturbances, michigan state university, agricultural experimental station. Technical Bulletin, 276, 185. Hodrick, R. e Prescott, E. (1997) Postwar business cycles. Jornal of Money, Credit and Banking. Hothorn, T., Zeileis, A., Farebrother, R. W., Cummins, C., Millo, G., Mitchell, D. e Zeileis, M. A. (2014) Package ‘lmtest’.
ˆ ´ REFERENCIAS BIBLIOGRAFICAS
295
Hungarian Central Statistical Office (2007) Seasonal adjustment methods and pratices.
Eu-
ropean Commission Grant. Hylleberg, S., Engle, R. F., Granger, C. W. e Yoo, B. S. (1990) Seasonal integration and cointegration. Journal of econometrics, 44, 215–238. Hyndman, R. J. (2015) forecast: Forecasting Functions for Time Series and Linear Models . URLhttp://cran.r-project.org/package=forecast . Hyndman, R. J., Razbash, S. e Schmidt, D. (2012) Forecasting functions for time series and linear models. R package version (http://cran. r-project. org/web/packages/forec ast/). IBGE (2015a) Pesquisa de or¸camentos familiares. URLhttp://www.ibge.gov.br/home/xml/ pof_2008_2009.shtm.
— (2015b) Pesquisa industrial mensal - produ¸ c˜ao f´ısica. URLhttp://www.ibge.gov.br/ home/estatistica/indicadores/industria/pimpfbr/ .
— (2015c) Pesquisa industrial mensal produ¸c˜ao f´ısica - brasil - notas metodol´ogicas.
URL http://www.ibge.gov.br/home/estatistica/indicadores/industria/
pimpfbr/notas_metodologicas.shtm .
IPEA (2015) Instituto de pesquisa econˆomica aplicada. URL http://www.ipea.gov.br/ portal/index.php?option=com_content&view=article&id=21971&catid=10&Itemid= 9.
Jarque, C. M. e Bera, A. K. (1980) Efficient tests for normality, homoscedasticity and serial independence of regression residuals. Economic Letters. Keele, L. e De Boef, S. (2004) Not just for cointegration: error correction models with stationary data. Documento de Trabajo. Departamento de Pol´ ıtica y Relaciones Internacionales, Nuffield College y Oxford University . Kerns, G. J. e Kerns, M. G. J. (2013) Package ‘prob’.
296
ˆ ´ REFERENCIAS BIBLIOGRAFICAS
Kleiber, C. e Zeileis, A. . (2008) Applied Econometrics With R., vol. 1. Sringer Verlag, New York. Komsta, L. e Novomestky, F. (2015) Moments, cumulants, skewness, kurtosis and related tests. Koopman, S. J., Harvey, A., Doornik, J. e Shepard, N. (2009) Structural time series analyser, modeler and predictor. Timberlake Consultants. Kwiatkowski, D., Phillips, P. C., Schmidt, P. e Shin, Y. (1992) Testing the null hypothesis of stationarity against the alternat ive of a unit root: How sure are we that economic time series have a unit root? Journal of econometrics, 54, 159–178. Li, M. Z. () Package ‘dcv’. Livsey, J., Pang, O. e McElroy, T. (2014) Effect of trading day regressors on seasonal adjustment of growth rates. RESEARCH REPORT SERIES, US Census Bureau . URL https: //www.census.gov/srd/papers/pdf/rrs2014-09.pdf .
Ljung, G. M. e Box, G. E. P. (1978a) On a measure of a lack of fit in time series models. Biometrika. — (1978b) On a measure of a lack of fit in time series models.
Biometrika, 65.
Lumley, T., Zeileis, A. e Zeileis, M. A. (2015) Package ‘sandwich’. L¨ utkepohl, H. (2005) New Introduction to Multiple Time Series Analysis., vol. 3. Springer. MacKinnon, J. G. (1996) Numerical distribution functions for unit root and cointegration tests. Journal of applied econometrics, 11, 601–618. Mohr, F. e Mohr, M. F. (2015) Package ‘prais’. Morettin, P. A. e Toloi, C. (2006) An´ alise de s´ eries temporais. Blucher. Newey, W. K. e West, K. D. (1987) A simple, positive semi-definite, heteroskedasticity and autocorrelation consistent covariance matrix. Econometrica, 55, 703–708.
ˆ ´ REFERENCIAS BIBLIOGRAFICAS
297
ONS (2015) Operador nacional do sistema el´etrico.
URL http://www.ons.org.br/
historico/.
Pfaff, B. (2005) Unit root and cointegration tests for time series data. Pfaff, B., Zivot, E. e Stigler, M. (2016)
urca:Unit Root and Cointegration Tests for Time
Series Data. URL https://cran.r-project.org/web/packages/urca/index.html . Phillips, P. C. e Perron, P. (1988) Testing for a unit root in time series regression. Biometrika. Pindyck, R. S. e Rubinfeld, D. L. (1998) Econometric models and economic forecasts, vol. 4. Irwin/McGraw-Hill Boston. Plosser, C. I. (1979) A time series analysis of seasonality in econometric models. The National Bureau of Economic Research. Prais, S. J. e Winsten, C. B. (1954) Trend estimators and serial correlation. Relat´ orio t´ ecnico, Cowles Commission discussion paper. R Core Team (2015a) graphics: The — (2015b) stats: The
R
R
Graphics Package.
Stats Package .
R. L. Brown J. Durbin, J. M. E. (1975) Techniques for Testing the Constancy of Regression Relationships over Time. Journal of the Royal Statistical Society. Series B (Methodological), 37, 149–192. URL http://www.jstor.org/stable/2984889 . Rasmussen, R. (2004) On time series data and optimal parameters. The International Journal of Management Science. Sax, C. (2015a) Github christoph sax. URL https://github.com/christophsax . — (2015b) seasonal:
R
Interface to X-13-ARIMA-SEATS. URL http://cran.r-project.
org/package=seasonal.
Schwarz, G. (1978) Estimating the dimension of a model.
Annals of Statistics, 6.
298
ˆ ´ REFERENCIAS BIBLIOGRAFICAS
Shapiro, S. S. e Wilk, M. B. (1965) An analys is of variance test for norma lity (complete samples). Biometrika, 52. Shiskin, J., Young, A. H. e Musgrave, J. C. (1967) The x-11 variant of the census method ii seasonal adjustment program. Bureau of the Census , 52. Spada, S. (2012) Package ‘orcutt’. Traplett, A., Hornik, K. e LeBaron, B. (2015) tseries: Time Series Analysis and Computational Finance. URL http://cran.r-project.org/package=tseries . Tsay, R. S. (1988) Outliers, level shifts, and variance changes in time series.
Journal of
forecasting, 7, 1–20. TSAY, R. S. (2002) Analysis of Financial Time Series , vol. 2. John Wiley & Sons. Ulrich, J., Ulrich, M. J. e RUnit, S. (2013) Package ‘ttr’. U.S. Census Bureau (2015) X13-arima-seats reference manual acessible html output version. URLhttps://www.census.gov/ts/x13as/docX13AS.pdf . Verzani, J., Verzani, M. J. e LazyData, T. (2015) Package ‘usingr’. Wang, B. (2014) bstats: Ordinary regression analysis with r.
R package version , 1–1.
Wickham, H., Chang, W. e Wickham, M. H. (2013) Package ‘ggplot2’. Zeileis, A., Leisch, F., Hornik, K. e Kleiber, C. (2001) strucchange. an r package for testing for structural change in linear regression models. Zeileis, A. e Zeileis, M. A. (2014) Package ‘dynlm’. Zellner, A. (1979) Front matter to ‘seasonal analysis of economic time series.
The National
Bureau of Economic Research. Zivot, E. e Andrews, D. W. K. (1999) Further evidence on the great crash, the oil-price shock, and the unit-root hypothesis. Journal of Business and Economic Statistics .
Zivot, E. e Wangl, J. (2003) Vector Autoregressive Models for Multivariate Time Series. Modeling Financial Time Series with S-Plus ®., vol. 3. Springer New York.
View publication stats