Análise de Séries Temporais em R - Um Curso Introdutório - Pedro Da Costa Ferreira - Gihub
Análise de Séries Temporais em R - Um Curso Introdutório - Pedro Da Costa Ferreira - Gihub
Análise de Séries Temporais em R - Um Curso Introdutório - Pedro Da Costa Ferreira - Gihub
em R
Um curso introdutório
Autor e Organizador
Autores
1 Introdução ao R 3
1.2 Iniciando o R . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5
2.1.2 Variáveis . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 28
2.2.1 Histograma . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 38
2.2.2 Boxplot . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 44
3.1 Introdução . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 70
3.5.1 Previsão . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 80
iv
CONTEÚDO
4 Processos Não-estacionários 93
4.1 Introdução . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 94
v
CONTEÚDO
vi
CONTEÚDO
vii
CONTEÚDO
viii
CONTEÚDO
Apresentação
Ao longo dos últimos dez anos tenho dedicado boa parte dos meus estudos a Séries Temporais:
a) tratei sobre o tema na minha dissertação de mestrado e na minha tese de doutorado; b) Prestei
consultoria sobre o assunto em importantes empresas como Light S.A, Operador Nacional do Sistema
Elétrico (ONS) e Duratex S.A.; e c) contribui para a geração de importantes resultados em projetos
importantes Journals como Journal of Applied Statistics, coordeno o Núcleo de Métodos Estatı́sticos
e Computacionais (FGV/IBRE) e, basicamente, nosso trabalho envolve Séries Temporais, Big Data e
Data Science.
importância e a necessidade de se trabalhar com softwares robustos e flexı́veis, mas, sobretudo, livres.
Tendo tais premissas como princı́pio, há três anos resolvemos adotar o R como nossa ferramenta de
O R, além de ser robusto, flexı́vel, livre, trabalhar muito bem com grandes bases de dados e
webscraping, datamining e, mais recentemente, com o Shiny (desenvolvido pela RStudio Inc) e todas
suas possibilidades na criação de páginas na web, por exemplo. Aliás, recomendo a visita a nossa página
É nesse contexto que esse livro se insere. Ele é a junção de diversos trabalhos que desenvolvemos
nos últimos anos no NMEC (FGV/IBRE) e de minhas aulas de Séries Temporais. O livro está muito
ix
CONTEÚDO
descritiva e Gráficos, que compreende dois capı́tulos, fazemos uma breve introdução do software
estatı́stica. Além disso, ensinamos como criar importantes gráficos, como boxplot e gráfico de dis-
persão. Por fim, ao final desta parte introdutória, apresentamos alguns exercı́cios com respostas no
séries com a presença das componentes de tendência e de sazonalidade ou as duas em conjunto. Além
disso, o leitor terá acesso a diversas bases de dados disponı́veis gratuitamente para fins didáticos. Os
modelos apresentados neste capı́tulo estão separados em NAIVE, Média Móvel, Suavização Exponen-
cial Simples, Suavização Exponencial de Holt e Suavização Exponencial de Holt-Winters. Para cada
ticas não são invariantes por translações no tempo. Começamos o capı́tulo mostrando as principais
uma. São apresentados testes de raiz unitária, além de testes para quebras estruturais, a fim de veri-
O capı́tulo 5 é dedicado à apresentação do modelo SARIMA. Para tal, fez-se uso da série tempo-
ral de vendas de passagens aéreas, mais conhecida como Airline. Trata-se de uma série temporal mensal
que registra o total de passageiros internacionais (em milhares) da linha aérea (Pan Am) no perı́odo
de janeiro de 1949 a dezembro 1960, nos EUA. Ao longo desse capı́tulo, discutiremos as caracterı́sticas
dessa série e os passos para modelá-la utilizando o software R. Ao ler esse capı́tulo, pretende-se que o
leitor esteja apto a modelar uma série temporal não complexa, seguindo a proposta de Box & Jenkins,
utilizando o software R.
Finalizando a parte 2, o capı́tulo 6 tem como objetivo analisar a sazonalidade presente em séries
temporais. Aborda-se como identificar tal componente e removê-la para que as análises a respeito da
x
CONTEÚDO
trajetória da série temporal sejam feitas adequadamente. O método utilizado para extrair a compo-
nente sazonal, isto é, dessazonalisar, é o X-13ARIMA-SEATS desenvolvido pelo U. S. Census Bureau.
Este é um programa mundialmente conhecido. Você vai aprender a utilizá-lo no R e a avaliar a quali-
modelos de séries temporais que levam em conta outras variáveis para explicar a variável de interesse.
O capı́tulo 7 apresenta como acrescentar outras variáveis aos modelos desenvolvidos por Box &
Jenkins. A metodologia é conhecida como Box & Jenkins com Função de Transferência e as variá-
veis inseridas, geralmente, possuem relação causal com a variável resposta, o que pode aperfeiçoar a
capacidade preditiva do modelo. Apresentamos o método originalmente desenvolvido para definir a
defasagem das variáveis auxiliares que serão inseridas no modelo e como diagnosticar o modelo final.
correlação serial nos resı́duos e apresentamos maneiras de contorná-la, tanto pela inclusão de estrutura
autorregressiva nos erros, quanto pelo uso de modelos autorregressivos com defasagens distribuı́das
Neste capı́tulo 9, apresentamos os modelos VAR e VECM. Começamos com a definição do mo-
delo e as limitações que levaram à sua criação. Em seguida, tratamos de sua estabilidade, que traça
um paralelo com o problema de não-estacionariedade para modelos univariados. Uma vez estimado,
Esperamos que aproveitem e gostem do conteúdo apresentado no livro e que ao final dessa
viagem pelo ”Mundo das Séries de Tempo”você saiba os passos e os cuidados necessários para uma boa
modelagem e previsão.
xi
CONTEÚDO
Autores
Methods) e Mestre em Economia. Co-autor dos livros ”Planejamento da Operação de Sistemas Hidro-
da América Latina a ser recomendado pela empresa RStudio Inc. Atuou em projetos de Pesquisa e
Desenvolvimento (P&D) no setor elétrico nas empresas Light S.A. (e.g. estudo de contingências judi-
ciais), Cemig S.A, Duke Energy S.A, entre outras. Ministrou cursos de estatı́stica e séries temporais
na PUC-Rio e IBMEC e em empresas como o Operador Nacional do Setor Elétrico (ONS), Petrobras
cursos Economia Descomplicada (FGV|IDE) e Big Data e Data Science (FGV|IDE). É também revisor
de importantes journals, como Energy Policy e Journal of Applied Statistics. Principais estudos são
em modelos Econométricos, Setor Elétrico, Incerteza Econômica, Preços, R software e Business Cycle.
Decisão) pela PUC-Rio e graduada em Ciências Estatı́sticas pela Escola Nacional de Ciências Esta-
do ajuste sazonal das séries de Sondagens do IBRE e na extração da tendência da inflação; utiliza o
software R como principal programa estatı́stico nas tarefas diárias desde as análises até a apresentação
dos resultados.
dade Federal do Rio de Janeiro (UFRJ). Atualmente pesquisadora do Núcleo de Métodos Estatı́sticos e
xii
CONTEÚDO
Lucas Farias Lima é mestrando em Matemática pela PUC-Rio e graduado em Ciências Econô-
micas pelo IBMEC-MG, onde atuou como assistente de pesquisa - função que exerceu também na Fun-
dação João Pinheiro, do governo do estado de Minas Gerais. Atualmente é pesquisador do Núcleo de
Federal Fluminense (UFF). Mestre em Engenharia Elétrica (Métodos de Apoio à Decisão) pela PUC-
xiii
CONTEÚDO
xiv
Análise de Séries Temporais em R
Um curso introdutório
Parte I
Introdução ao R, Estatı́stica
Descritiva + Gráficos
1
1 Introdução ao R
Nesse primeiro capı́tulo vamos introduzir os softwares R e RStudio. Esses softwares serão uti-
lizados durante todo o livro e irão proporcionar uma formar muito agradável e prática de aprender
Estatı́stica.
O R é uma linguagem e um ambiente para cálculos estatı́sticos e elaboração de gráficos. Foi criado
originalmente por Ross Ihaka e por Robert Gentleman no Departamento de Estatı́stica da Universidade
de Auckland, Nova Zelândia. Hoje conta com um esforço colaborativo de pessoas de vários locais do
mundo. O R é gratuito e livre sob uma licença referida no Cran. Funciona nas versões de sistemas
site também é possı́vel encontrar dicas para a utilização do programa e um fórum onde você pode tirar
suas dúvidas fazendo perguntas ou analisando dúvidas de outros usuários já respondidas.
O programa é bastante utilizado por profissionais que usam ferramentas estatı́sticas no seu dia-
a-dia, como estatı́sticos e data miners. Permite realizar operações matemáticas simples e métodos
mais complexos como, por exemplo, análises e manipulações de dados, análises de séries temporais,
modelagens lineares e não lineares, testes estatı́sticos, técnicas de amostragem, elaboração de gráficos,
O RStudio é um ambiente de desenvolvimento integrado e tem uma ampla gama de recursos que
permitem aumentar a produtividade do usuário no uso do R. O RStudio também é executado em todas
as principais plataformas. Para utilizá-lo, é preciso que o usuário já tenha instalado previamente o R
putador: Linux, (Mac) OS X ou Windows e clique na opção base ou install R for first time. Em seguida,
baixe o arquivo em sua versão mais atualizada. Após a instalação do programa, inicie o R em seu
computador. Quando o programa estiver pronto para o uso, aparecerá o sı́mbolo > em vermelho no
A fim de aprimorar sua produtividade e facilitar o uso do R, indicamos que você baixe o RStu-
indicamos o canal da FGV no Youtube para você aprender um pouco mais sobre o R por meio
4
CAPÍTULO 1. INTRODUÇÃO AO R
dos vı́deos produzidos pelo Núcleo de Métodos Estatı́sticos e Computacionais. Acesse o canal em
1.2 Iniciando o R
• Operações Aritméticas
O R pode ser utilizado como uma calculadora de grande capacidade para realizar diferentes
operações com números, vetores ou matrizes. Veja a Tabela 1.1 a seguir com alguns dos principais
operadores e funções.
Operação Comando no R
Soma +
Subtração -
Multiplicação *
Divisão /
Quociente da divisão %/%
Resto da divisão %%
Potenciação ^ ou **
Raiz quadrada sqrt(x)
Logaritmo log(x, base)
Exponencial exp(x)
Fatorial factorial(x)
Combinação choose(n, x)
Dica: use o sı́mbolo # para fazer comentários junto a sua programação. Esse sı́mbolo não influencia
5
1.2. INICIANDO O R
• Criando objetos
Um objeto pode ser criado com a operação de atribuição <-. Criando um objeto, você pode
Importante: o R é uma linguagem case sensitive, ou seja, diferencia letras maiúsculas de minúsculas.
Você pode criar um objeto e, ao mesmo tempo, observar o resultado sem ter que digitar o nome
do objeto novamente. Para isso coloque parênteses no inı́cio e no final da linha de comando como é
feito a seguir.
A função ls() mostra os objetos criados por você e que estão, no momento, armazenados na
memória do R.
Caso você queira excluir objetos, use a função remove() ou rm(). Exemplo:
> a <- 1
> b <- 6
> c <- 9 # cria os objetos a, b, c
> ls() # lista os objetos existentes
[1] "a" "b" "c"
> rm(b) # remove o objeto b
> ls() # lista os objetos existentes
[1] "a" "c"
• Criando vetores
Vetores são objetos que armazenam mais de um valor. O R usa a função c() para criar vetores.
> vetor1 <- c(1,2,5,6,7,25,0,-3) # vetor com números
> vetor2 <- c("verde","amarelo") # vetor com textos
> vetor1
[1] 1 2 5 6 7 25 0 -3
> vetor2
6
CAPÍTULO 1. INTRODUÇÃO AO R
Com o R é possı́vel gerar sequências e números aleatórios. Abaixo seguem exemplos de como
> # sequ^
encia de 1 a 5
> (a <- 1:5)
[1] 1 2 3 4 5
> # sequ^
encia de 1 a 10 de 2 em 2
> (b <- seq(from = 1, to = 10, by = 2))
[1] 1 3 5 7 9
> # sequ^
encia de tamanho 9
> (c <- seq(length = 9, from = 1, to = 5))
[1] 1.0 1.5 2.0 2.5 3.0 3.5 4.0 4.5 5.0
> rep(1,5) # repete o nž 1 5 vezes
[1] 1 1 1 1 1
> sequence(3) # gera a sequ^encia de 1 até 3
[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
• Criando matrizes
Para criar matrizes utilize a função matrix(). Aprenderemos como utilizar essa função com os
exemplos a seguir. No primeiro exemplo cria-se uma matriz quadrada de ordem 3 composta apenas
por zeros.
Veja agora como preencher a matriz A de duas maneiras: por linha e por coluna.
7
1.2. INICIANDO O R
A seguir, em vez de criar uma matriz de zeros e depois preenchê-la, criaremos uma matriz já
totalmente preenchida.
Caso o argumento lógico byrow fosse alterado para FALSE, a matriz seria preechida por coluna.
Data frames são objetos usados para guardar tabelas de dados. É a classe de objeto mais
utilizada, principalmente por ser esse o formato que o R lê para as tabelas importadas de outros
softwares. Para criar um data frame no R, utilize a função data.frame(). Vamos criar um data frame
com duas colunas (Nome e Idade) e com três elementos em cada uma delas.
Caso você queira criar uma nova coluna, basta apenas digitar o nome do objeto seguido de $ e
o nome da sua nova coluna. Como exemplo vamos criar uma coluna chamada Salário.
8
CAPÍTULO 1. INTRODUÇÃO AO R
Veja outra opção de como adicionar mais valores ao data frame usando as funções cbind e rbind
Em um data frame, os dados costumam vir em dois tipos de formatos: amplo (wide) ou longo
(long). No formato amplo, há uma linha para cada observação e cada coluna representa uma variável.
Já no formato longo, há mais de uma linha para cada observação e uma coluna para várias variáveis.
Há uma função no R que permite a conversão entre esses dois formatos: reshape(). Os principais
idvar: nome(s) da(s) variável(is) que identifica(m) o individuo. Podem estar no formato longo
ou amplo;
timevar: variável ou variáveis no formato longo que diferenciam vários registros do mesmo
individuo;
v.names: nome da variável no formato longo que corresponde às várias variáveis do formato
amplo;
9
1.2. INICIANDO O R
varying: nomes dos conjuntos de variáveis no formato amplo que correspondem ao timevar do
formato longo;
Como exemplo de uso da função reshape(), vamos manipular os dados de Indometh: um data
Como nossos dados já se encontram no formato longo, vamos convertê-lo para o formato amplo.
Para isso, terı́amos que escolher a coluna Subject como a variável de identificações (idvar); uma ou
mais variáveis de medição que diferenciam vários registros do mesmo idvar (timevar); uma variável
que deseja mudar do formato longo para o amplo (v.names); e o formato que queremos os dados
Agora temos apenas uma linha para cada indivı́duo, uma coluna dos Subject e outras colunas
para cada tempo. Mas se fosse ao contrário, ou seja, se já tivessemos os dados no formato amplo e
quissesemos no formato longo, o procedimento seria similar. Como exemplo, converteremos os dados
10
CAPÍTULO 1. INTRODUÇÃO AO R
• Estruturas de condição
As estruturas de condição têm por objetivo executar uma ação se determinada condição for
if(condiç~
ao){
comandos
2. if...else: Executa diversos comandos se a condição inicial for verdadeira, caso contrário executa
outros comandos.
if(condiç~
ao){
comandos
}else{
comandos
3. ifelse: Bem parecida com a anterior, porém executa apenas uma linha de comando se a condição
ifelse(condiç~
ao, comando se verdadeira, comando se falsa)
11
1.2. INICIANDO O R
• Estruturas de repetição
As estruturas de repetição são úteis para repetir uma série de operações. Podem ser utilizadas,
por exemplo, com vetores, matrizes e tabelas e também com estruturas de condição. Para que o leitor
entenda a utilidade da estrutura, vamos exemplificar. Inicialmente, criaremos um data frame com
Uma função de estrutura de repetição muito popular é a função for(). Esta percorre os ele-
for(i in a:b){
comandos
Para ficar claro o uso da função for(), suponha que se deseja saber quantas pessoas da empresa
12
CAPÍTULO 1. INTRODUÇÃO AO R
recebem menos de R$ 3000,00. Vamos criar um objeto que conte o número de pessoas que satisfazem
essa condição. Lembre-se de que é necessário criar o objeto antes de começar a estrutura de repetição.
[1] 5
Inicialmente, o contador começa recebendo o valor zero. Se a condição de salário for satisfeita
(menor do que 3000), o contador recebe +1. Isso será feito para todas as i linhas do data frame. Por
fim, será retornado o valor final do contador. Veja a seguir mais um exemplo.
Suponha também que seja necessário criar a soma acumulada dos salários dos indivı́duos da
empresa e armazená-la numa nova coluna do data frame. Então, será criada uma nova coluna no
data frame e a primeira linha da nova coluna será o próprio salário do indivı́duo A; a segunda linha
será a soma do salário do indivı́duo A e do indivı́duo B; a terceira linha será a soma dos salários dos
indivı́duos A, B e C. Assim, seguindo o raciocı́nio, a última linha é a soma de todos os salários. Veja
13
1.2. INICIANDO O R
14
CAPÍTULO 1. INTRODUÇÃO AO R
O R permite que você crie funções que atendam suas necessidades. Para criar uma função
comandos
Vamos ver um exemplo. Suponha que se queira calcular a área de um triângulo dado sua base
e altura, como na Figura 1.1. Sabe-se que a área é dada por: (baseŒaltura)/2. Dessa forma, uma
função que calcule a área de um triângulo necessita de dois argumentos: um que indique a base e outro
15
1.2. INICIANDO O R
Segue uma lista de funções que podem ser úteis para você.
Ação Comando
sair do programa q()
arredonda o número para o inteiro mais próximo round(x)
arredonda o número para n casas decimais round(x,n)
arredonda o número para cima ceiling(x)
trunca o número trunc(x)
arredonda o número para n casas decimais signif(x,n)
produtório prod(x)
O local padrão onde são importados e exportados os arquivos e os comandos digitados no console
Podemos criar um diterório com o comando dir.create(), por exemplo meu_dir, e depois
alterar com o comando setwd() para informar ao R que é nesse local que iremos trabalhar. Exemplo:
Esse comando altera o diretório para a pasta meu_dir que se encontra na área de trabalho dentro
da unidade C. Sugerimos que mude seu diretório para o local onde estão os arquivos que você precisará
utilizar durante sua programação em R. Você também pode alterar o diretório utilizando as teclas de
atalho Ctrl+Shift+H.
Importante: ao definir caminho do diretório, deve-se usar ou uma barra simples “/” ou duas contra-
barras “\\”.
Os comandos digitados anteriormente no console podem ser salvos em um novo arquivo de texto
16
CAPÍTULO 1. INTRODUÇÃO AO R
> # salvar
> savehistory(file = "nomedoarquivo.txt")
> # carregar
> loadhistory(file = "nomedoarquivo.txt")
Caso você queira salvar o histórico em outro local, especifique o caminho do arquivo, por exem-
plo:
> # salvar histórico em outro local
> savehistory(file = "V:/novo_dir/nomedoarquivo.txt")
O script no RStudio funciona como um editor de texto. É bastante prático e facilita a alteração
17
1.2. INICIANDO O R
Para enviar as linhas de comando digitadas no script para o console, selecione as linhas desejadas
Todas as funções do R pertencem a algum pacote. As funções que apresentamos até agora
pertencem aos pacotes que foram instalados e carregados quando instalamos o R no computador. Para
utilizar outras funções e tornar sua experiência mais rica no R é necessário instalar e carregar pacotes.
Há duas formas simples de instalar pacotes. A primeira é utilizando a função install.packages():
install.packages("nome_do_pacote")
A segunda é utilizando a opção Install Packages que está na aba Packages no canto direito
inferior na tela do RStudio (Figura 1.4). Após clicar nesta opção, digite o nome do pacote.
Depois de instalar o pacote, é necessário carregá-lo para que você consiga utilizar as funções
que este disponibiliza. Para carregá-lo, você pode selecionar o pacote instalado anteriormente na aba
Packages do RStudio (através do checklist) ou, também pode usar as funções require() e library().
18
CAPÍTULO 1. INTRODUÇÃO AO R
require(nome_do_pacote)
library(nome_do_pacote) ou library("nome_do_pacote")
Como exemplo, vamos instalar um pacote que permite que arquivos de extensão .xlsx sejam
Após a instalação e o carregamento do pacote, as funções disponibilizadas por ele podem ser
usadas.
Dica: digite library() e search() para visualizar, respectivamente, os pacotes que já estão instalados
e os pacotes carregados no momento.
Nota: Em alguns ambientes o pacote xlsx (Dragulescu (2014)) apresenta alguns problemas, como
alternativa, utilize o pacote readxl (Wickham (2016)) ou o pacote openxlsx (Walker (2015)).
Ler dados nos formatos de texto, tais como .txt e .csv dentre outros, é uma função indispensável
para qualquer software de estatı́stica. A função read.table() lê arquivos no formato tabela em
um data.frame. Cada coluna tem uma classe própria automaticamente determinada pela função
header: determina se o arquivo tem cabeçalho ou não (default: TRUE). No caso de FALSE, a
19
1.2. INICIANDO O R
Embora a função read.table() seja provavelmente a função mais utilizada para ler dados, exis-
tem outras versões dessa com pequenas variações nos defaults que podem ser úteis. Veja: read.csv(),
Para visualizar o arquivo anterior no R, digite dados. A seguir algumas funções interessantes
que ajudam a visualizar como é composto seu arquivo de dados. Considere x como seu arquivo de
dados.
edit(x): além de visualizar, é possı́vel editar de uma maneira mais simples seu arquivo de dados.
Para importar planilhas do Excel no formato .xlsx é necessário instalar um novo pacote uma
vez que read.table() e sua famı́lia não estão aptos para realizar tal função.
O pacote xlsx (Dragulescu (2014)) permite importar e exportar arquivos de extensão .xlsx. Para
importar utilize a função read.xlsx(). É importante saber que esse pacote não importa arquivos de
header: determina se o arquivo tem cabeçalho ou não (default: TRUE). No caso de FALSE, a
rowIndex: ı́ndices das linhas que devem ser lidas (default: NULL);
colIndex: ı́ndices das colunas que devem ser lidas (default: NULL).
20
CAPÍTULO 1. INTRODUÇÃO AO R
Escrever dados nos formatos de texto .txt, .csv, entre outros, é outra função indispensável para
um software de estatı́stica. A função write.table() salva arquivos de formatos formatos .txt e .csv
no diretório padrão ou especificado. Os principais argumentos dessa função são:
append: se TRUE, a saı́da será anexada a um arquivo já existente. Se FALSE, se houver algum
Embora a função write.table() seja provavelmente a função mais utilizada para salvar da-
dos, existem outras versões dessa com pequenas variações nos defaults que podem ser úteis.. Veja:
write.csv() e write.csv2().
Exemplo: Vamos criar um objeto data frame e salvá-lo como um arquivo de formato .txt.
Neste livro utilizaremos como base de dados a Pesquisa de Orçamentos Familiares do IBGE, a
POF (IBGE, 2015a). O propósito da POF é traçar um perfil dos hábitos das famı́lias brasileiras. Para
isso, são coletados dados gerais sobre os domicı́lios e sobre as famı́lias e pessoas contidas neles. São
informações referentes a gastos, consumos e rendimentos. Por exemplo, condições do entorno e acesso
21
1.3. DESCOBRINDO INFORMAÇÕES SOBRE O OBJETO
Código 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
à coleta de lixo em relação aos domicı́lios; idade, religião e posição de ocupação em relação às pessoas;
A pesquisa abrange as zonas urbanas e rurais de todo o território brasileiro e tem duração de 12
meses, recolhendo informações durante todas as épocas do ano para um estudo mais eficaz. Através
dela é possı́vel conhecer os bens consumidos e serviços utilizados pelas famı́lias, o que pode ser útil
para criação de polı́ticas públicas que auxiliam no combate à pobreza e na melhoria da saúde.
Nosso arquivo não contém todos os dados da pesquisa. Somente estão incluı́das nele 6 unidades
de federação (UF) que são representadas, apenas, por suas respectivas capitais (Tabela 1.3).
Vamos ler a tabela da POF no R, que está em formato .csv, e guardá-la num objeto chamado
dados.
Algumas funções são utilizadas para descobrir mais informações acerca do objeto de dados.
Exemplo: tipo (texto, numérico, lógico...), tamanho (número de linhas ou colunas), entre outras coisas.
• Função str()
A função str() mostra um resumo estrutural de um objeto: classe, número de linhas e colunas,
nome das colunas e o tipo (inteiro, numérico, etc). Vamos ver um resumo estrutural para a base de
dados da POF.
22
CAPÍTULO 1. INTRODUÇÃO AO R
A saı́da anterior mostra que o objeto dados é um data.frame com 3504 linhas (observações) e
31 colunas (variáveis). É possı́vel ver o nome e o tipo de dado que cada coluna recebe. Para mostrar
na tela apenas uma coluna do objeto dados, você pode utilizar os comandos abaixo.
23
1.3. DESCOBRINDO INFORMAÇÕES SOBRE O OBJETO
Outras funções úteis são as funções dim() e names(). A função dim() mostra a dimensão do
objeto. O objeto de dados é um data frame, então esta função retornará o número de linhas e colunas.
A função names() mostra o nome de cada coluna do objeto. É bem útil para localizar o número de
> # dimens~
ao: número de linhas e colunas
> dim(dados)
[1] 3504 31
[1] "TIPO.DE.REGISTRO"
[2] "CÓDIGO.DA.UF"
[3] "NÚMERO.SEQUENCIAL"
[4] "DV.DO.SEQUENCIAL"
[5] "NÚMERO.DO.DOMICÍLIO"
[6] "ESTRATO.GEOGRÁFICO"
[7] "FATOR.DE.EXPANS~ AO.2..AJUSTADO.P..ESTIMATIVAS."
[8] "PERÍODO.REAL.DA.COLETA"
[9] "QUANTIDADE.DE.MORADORES"
[10] "QUANTIDADE.DE.UC"
[11] "QUANTIDADE.DE.FAMÍLIAS"
[12] "TIPO.DE.DOMICILIO"
[13] "MATERIAL.QUE.PREDOMINA.NAS.PAREDES.EXTERNAS"
[14] "MATERIAL.QUE.PREDOMINA.NA.COBERTURA"
[15] "MATERIAL.QUE.PREDOMINA.NO.PISO"
[16] "QUANTIDADE.DE.C^ OMODOS"
[17] "C^
OMODOS.SERVINDO.DE.DORMITÓRIO"
[18] "EXIST^ENCIA.DE.ÁGUA.CANALIZADA"
[19] "PROVENI^ENCIA.DA.ÁGUA"
[20] "QUANTIDADE.DE.BANHEIROS"
[21] "ESCOADOURO.SANITÁRIO"
[22] "CONDIÇ~
AO.DE.OCUPAÇ~
AO"
[23] "TEMPO.DE.ALUGUEL"
[24] "TIPO.DE.CONTRATO.DE.ALUGUEL"
[25] "EXIST^ENCIA.DE.PAVIMENTAÇ~
AO.NA.RUA"
[26] "IMPUTAÇ~
AO...QUANTIDADE.DE.C^OMODOS"
[27] "IMPUTAÇ~
AO...QUANTIDADE.DE.BANHEIROS"
[28] "IMPUTAÇ~
AO...ESCOADOURO.SANITÁRIO"
[29] "RENDA.MONETÁRIA.MENSAL.DO.DOMICÍLIO"
[30] "RENDA.N~AO.MONETÁRIA.MENSAL.DO.DOMICÍLIO"
[31] "RENDA.TOTAL.MENSAL.DO.DOMICÍLIO"
24
CAPÍTULO 1. INTRODUÇÃO AO R
Como sempre nos deparamos com algo novo no R, é fundamental saber como aprender a usar
novas funções. Para isso iremos apresentar algumas formas de enfrentar o desconhecido.
• Função apropos()
Quando queremos procurar um objeto e não lembramos o nome completo dele, podemos usar
a função apropos(). Ela funciona como um filtro que possibilita encontrar os objetos que tenham o
Mostra uma lista de 15 nomes de objetos que contém o texto air no nome.
• Função help() ou ?
Quando queremos saber de mais detalhes do objeto, você pode pedir ajuda ao R com o help(nome_-
> help(AirPassengers) # ou
> ?AirPassengers
Uma janela abrirá no help com a descrição dos dados da série temporal AirPassengers.
• Função example()
Essa função é muito útil para mostrar alguns exemplos de uso de outras funções.
> example(plot)
Suponha que queremos criar um gráfico de barras, mas nunca vimos alguma função que faça
isso. Primeiro vamos buscar nomes de objetos que tenha bar (barra em inglês) no nome. Para isso
> apropos("bar")
[1] "barplot" "barplot.default" "bartlett.test"
[4] "getTxtProgressBar" "getWinProgressBar" "setStatusBar"
[7] "setTxtProgressBar" "setWinProgressBar" "txtProgressBar"
[10] "winProgressBar"
25
1.4. MANEIRAS FÁCEIS DE APRENDER MAIS NO R
O R retornou 10 nomes de objetos, dentre ele apareceu o barplot que é uma candidata a função
para criar gráfico de barra. Agora vamos pedir ajuda para o R sobre barplot() para ter mais detalhes
da função.
> help(barplot) # ou
> ?barplot
> example(barplot)
26
2 Estatı́stica Descritiva e Gráficos
Estatı́stica descritiva é a área da estatı́stica que descreve e resume informações sobre os dados.
O R disponibiliza uma variedade de funções que permitem fazer isso. Porém, antes de começar a
Os dados que trabalhamos em estatı́stica descritiva são provenientes de uma amostra ou popu-
lação. População é um conjunto de todas as unidades que tem uma caracterı́stica em comum na qual
estamos interessados. Por exemplo, todos os funcionários da Fundação Getúlio Vargas no estado do
RJ. Como, geralmente, fazer uma pesquisa que envolva o conjunto inteiro da população requer bas-
tante tempo, dinheiro e, em alguns casos, o experimento pode ser destrutivo, utiliza-se uma amostra,
ou seja, uma parte da população. Para selecionar uma amostra que represente de fato a população, há
2.1.2 Variáveis
nas quais estamos interessados em descobrir e podem mudar de acordo com cada unidade amostral.
Por exemplo, a idade, o sexo, o grau de escolaridade e o salário de cada funcionário. Variáveis podem
As variáveis qualitativas, também conhecidas como categóricas, são aquelas que assumem atri-
butos ou qualidades. São divididas em ordinais e nominais. As ordinais são aquelas que podem ser
médio e superior). As nominais são aquelas em que não faz sentido alguma ordenação, por exemplo, o
As variáveis quantitativas são aquelas que podem ser medidas, já que apresentam valores nu-
méricos. São classificadas em discretas e contı́nuas. As discretas podem assumir apenas um número
finito ou infinito contável de valores e, assim, somente fazem sentido valores inteiros. Geralmente são
contı́nuas são aquelas que assumem valores numéricos (toda a reta real) e, em geral, são resultantes de
28
CAPÍTULO 2. ESTATÍSTICA DESCRITIVA E GRÁFICOS
Após a coleta dos dados, utilizamos ferramentas da estatı́stica descritiva para analisar e resumir
Quando se tem uma grande quantidade de dados, uma boa forma de resumi-los é criando uma
tabela de frequências. A tabela de frequências mostra os tipos de valores que uma variável assume e
a quantidade de vezes que os mesmos ocorrem. Para criá-la utilize a função table().
Exemplo: Criaremos uma tabela de frequência sobre o material que predomina na cobertura
1 2 3 4 5 7
1678 1789 14 3 2 18
A primeira linha indica os números observados na pesquisa. Cada número representa um tipo
de material diferente:
1. Telha qualquer;
2. Laje de concreto;
4. Chapa metálica;
5. Madeira aproveitada;
6. Palha;
7. Outro material.
A segunda linha representa a frequência com que os números ocorrem, ou seja, quantas vezes
cada tipo se repete. Pelo resultado acima, vemos que a maioria dos domicı́lios possui cobertura de
telha qualquer (1) ou laje de concreto (2). O número 6 (cobertura de palha) foi omitido já que não
apresenta frequência.
29
2.1. ESTATÍSTICA DESCRITIVA
Além da criação de tabelas, é possı́vel resumir dados a partir de simples valores numéricos.
Medidas de posição são assim chamadas, pois retornam um ponto (ou valor) no qual estão concentrados
• Média
n
∑ yi
i=1
ȳ = (2.1)
n
Para calculá-la precisamos da soma da variável e do número de unidades que a variável possui.
Para calcular a soma de uma variável quantitativa podemos usar a função sum() e para saber o número
• Mediana
A mediana é a medida que divide os dados ordenados exatamente ao meio, ou seja, o valor que
x ,se n é ı́mpar
( n+1
2 )
md(X) =
x( n ) +x( n +1)
2 2
,se n é par
2
Antes de usar a fórmula acima, precisamos ordenar os dados. Para isso utilizamos a função sort().
30
CAPÍTULO 2. ESTATÍSTICA DESCRITIVA E GRÁFICOS
Importante: Para calcular a mediana com a função median() não é necessário ordenar os dados, o
• Máximo e Mı́nimo
O R possui duas funções que retornam o maior e o menor valor observado no conjunto de dados:
min() e max().
Caso quiséssemos identificar quais domicı́lios possuem uma ou quinze pessoas, poderı́amos usar
a função which(). Essa função retornará quais as linhas que satisfazem determinada condição.
Exemplo: Retornar quais domicı́lios na base de dados possui a quantidade de moradores igual
a 1.
> # Funç~
ao which
> which(dados[, 9] == 1)
• Quantis
Quantil é uma medida de posição que corresponde a uma proporção. O quantil de a% (0 < a
< 100) representa o valor que separa os a% menores valores dos (100-a)% maiores valores no conjunto
31
2.1. ESTATÍSTICA DESCRITIVA
A mediana é o quantil de 50%; O quantil de 20% representa o valor que separa os 20% menores
dos 80% maiores no conjunto de dados ordenados. O quantil de 35% representa o valor que separa os
Para calcular os quantis, assim como a mediana, é necessário que os dados estejam ordenados,
Exemplo: Encontraremos os quantis de 10%, 25%, 50%, 75%, 90% para a variável Renda Total
Podemos interpretar esses números da seguinte forma: 10% dos domicı́lios possuem renda inferior
• Moda
Podemos descobrir qual é o número mais comum de moradores em um domicı́lio. Uma maneira
de fazê-lo é criar uma tabela de frequências (subseção 2.1.3) e descobrir o número que mais se repete.
Em estatı́stica descritiva, chamamos isso de moda. Para criar uma tabela de frequências use a função
table().
na pesquisa. A segunda linha corresponde à frequência dele. Ou seja, há apenas um domicı́lio com 15
moradores enquanto há quatro domicı́lios com 11. A maior frequência observada é 873, que corresponde
• Função summary
A função summary() retorna várias medidas de posições de uma só vez: a média, a mediana,
o primeiro e o terceiro quartis e o menor e o maior valor da variável em estudo. Caso a variável seja
32
CAPÍTULO 2. ESTATÍSTICA DESCRITIVA E GRÁFICOS
Observe a má distribuição de renda do Brasil. Há domicı́lios que recebem R$ 50,78 e outros que
recebem R$ 117.200,00. A média da renda é de R$ 4.082,00. A média é uma medida que é influenciada
por outliers (valores atı́picos). Assim, dependendo do comportamento dos dados (muito dispersos ou
não), esta pode não ser uma boa medida para representar os dados.
Medidas de dispersão são úteis para verificar se os dados são homogêneos ou heterogêneos. A
seguir serão apresentadas as funções mais utilizadas para quantificar a variabilidade dos dados.
• Variância Amostral
n n
∑ (yi − ȳ)2 ∑ y2i − nȳ2
i=1 i=1
s2 = =
n−1 n−1
• Desvio-Padrão
A variância por ser uma medida quadrática, diferente da ordem de grandeza dos dados obser-
vados, pode, às vezes, dificultar a interpretação. Como alternativa, utilizamos a raiz da variância, o
33
2.1. ESTATÍSTICA DESCRITIVA
v
u n
u
u ∑ (yi − y)2
t i=1
s=
n−1
Percebe-se que o desvio padrão não é grande em relação à média. Isso significa que não há uma
dispersão tão forte entre o número de pessoas que moram em cada domicı́lio. Isso pode ser visualizado
Amplitude total é a diferença entre o maior (máximo) e o menor (mı́nimo) valor observado.
Porém, se por acaso no conjunto de dados houver valores atı́picos/outliers (valores extremamente
pequenos ou grandes), essa medida pode não representar bem o conjunto de dados. Portanto, não é
essa finalidade.
• Coeficiente de Variação
O coeficiente de variação é uma medida de dispersão útil para comparar dois ou mais conjuntos de
dados quando estes estão em unidades de medidas diferentes, caso contrário poderiam ser comparados
pelo desvio padrão. É uma medida relativa resultante da divisão do desvio padrão pela média.
34
CAPÍTULO 2. ESTATÍSTICA DESCRITIVA E GRÁFICOS
s
CV = × 100
x
Quanto menor for o coeficiente de variação menor será a dispersão dos dados em torno da média,
ou seja, os dados são homogêneos. Um CV maior do que 30% sugere que os dados são heterogêneos,
ou seja, estão dispersos em torno da média. Há quem diga isso para CV maior do que 25% ou 50%,
tornando mais difı́cil haver um valor padrão de comparação. Porém, ao comparar diversos conjuntos
de dados, aquele que possuir o menor CV é o mais homogêneo. Abaixo o CV da Renda Monetária
Como se observa, o CV é igual a 147,34%, indicando que os dados são muito heterogêneos, ou
seja, dispersos em relação à média. Assim, a média não é uma medida que representa tão bem esse
conjunto de dados, principalmente por ela ser afetada pelas rendas muito altas que representam uma
minoria de observações.
covariância não é uma medida padronizada. Sendo assim, a correlação mais fácil de interpretar.
A correlação varia entre -1 e 1. Quanto mais perto de -1 ou 1 significa que as variáveis possuem
uma forte associação linear. Quanto mais próximo de zero significa que as variáveis possuem fraca
associação linear. Sinal positivo indica que quando uma variável cresce (ou diminui), a outra variável
também cresce (ou também diminui). Já o sinal negativo indica que quando uma variável cresce, a
outra diminui e vice-versa. A seguir estão as fórmulas de como calcular a covariância e a correlação.
n n
∑ (xi − x̄)(yi − ȳ) ∑ (xi yi − nx̄ȳ)
i=1 i=1
cov(x, y) = =
n−1 n−1
cov(x, y)
ρ (x, y) =
sx sy
Como exemplo, calcularemos essas medidas para quantificar a associação linear entre a Quan-
tidade de Banheiros (coluna 20) e a Renda Total Mensal do Domicı́lio (coluna 31). A covariância e a
35
2.1. ESTATÍSTICA DESCRITIVA
correlação podem ser calculadas diretamente pelas funções cov() e cor(), respectivamente.
> cov(dados[, 20], dados[, 31])
[1] 3221.584
> #correlaç~
ao
> cor(dados[, 20], dados[, 31])
[1] 0.5807561
A correlação entre as variáveis resultou em 0,5807 indicando que há uma associação linear
positiva entre elas, ou seja, quanto maior o número de banheiros, maior é a renda do domicı́lio.
Lembrando que nem sempre há relação de causa e efeito, portanto ter um grande número de banheiros
Muitas vezes estamos interessados em calcular a média, ou outras medidas, de uma variável de
acordo com os grupos de outra variável. A função tapply() é simples e útil para essa finalidade.
onde x é a variável principal, INDEX é o grupo (a outra variável) e FUN é a medida a ser calculada:
Exemplo: Imagine que queremos descobrir a renda média de domicı́lio por Unidade de Federação.
> # Calculando a renda média 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édia de acordo com a UF. Verifica-se que a maior renda média é a de
Minas Gerais também apresentou a maior dispersão de renda, porém, o coeficiente de variação
36
CAPÍTULO 2. ESTATÍSTICA DESCRITIVA E GRÁFICOS
Em todas as Unidades de Federação, o coeficiente de variação é extenso, ou seja, há uma dis-
Caso você queira descobrir alguma medida para mais de uma variável de uma só vez, utilize a
função agregate().
mesmo tempo.
Assim obtivemos a média das variáveis de renda e de quantidade de moradores ao mesmo tempo.
37
2.2. CRIANDO GRÁFICOS COM O R
Muitas vezes um gráfico bem feito torna mais fácil de entender o comportamento de um conjunto
de dados. Nesta seção serão vistos os principais gráficos utilizados para descrever dados. São eles:
histograma, boxplot, gráfico de dispersão ou de pontos, gráfico de pizza e gráfico de barras. Na Figura
No R, existem alguns pacotes que permitem a criação de gráficos bem elaborados com diversas
opções de edição. Aqui, utilizaremos o pacote graphics (R Core Team, 2015a) que foi instalado junto
com o próprio R, ou seja, não é necessário nenhum outro pacote para executar a criação dos gráficos
nessa seção.
Cada gráfico que faremos possui sua própria função no R. Porém, há alguns argumentos que são
Com esses quatro argumentos você cria um gráfico com o mı́nimo de informações necessárias
A seguir, veremos detalhadamente as funções que criam os tipos de gráficos apresentados ante-
riormente.
2.2.1 Histograma
como os dados se comportam, os valores mais e menos frequentes. O histograma pode mostrar a
38
CAPÍTULO 2. ESTATÍSTICA DESCRITIVA E GRÁFICOS
39
2.2. CRIANDO GRÁFICOS COM O R
Exemplo: Utilizaremos uma base de dados chamada galton, para fazer o histograma. Esta
base contém 928 medidas de altura de pais e de seus respectivos filhos. A altura dos pais foi calculada
como uma média entre as alturas da mãe e do pai. Há, na base, pais que possuem mais de um filho,
portanto existem alturas de pais repetidas. A unidade de medida é dada em polegadas, portanto, para
child parent
1 61.7 70.5
2 61.7 68.5
3 61.7 65.5
4 61.7 64.5
5 61.7 64.0
6 62.2 67.5
child parent
1 156.718 179.07
2 156.718 173.99
3 156.718 166.37
4 156.718 163.83
5 156.718 162.56
6 157.988 171.45
40
CAPÍTULO 2. ESTATÍSTICA DESCRITIVA E GRÁFICOS
200
150
Frequência
100
50
0
Altura (cm)
Podemos ver através do gráfico que as maiores frequências estão por volta de 170 cm e 175 cm
de altura. Caso queira acrescentar alguma cor ao gráfico, utilize os argumentos col e border. Nas
referências desse documento é possı́vel encontrar uma lista de cores que podem ser usadas.
41
2.2. CRIANDO GRÁFICOS COM O R
200
150
Frequência
100
50
0
Alturas (cm)
Figura 2.3: Histograma das alturas dos filhos com cor (base galton)
Agora, vamos a outro exemplo. Esboçaremos um histograma para a Renda Total Mensal do
1500
500
0
42
CAPÍTULO 2. ESTATÍSTICA DESCRITIVA E GRÁFICOS
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 que uma minoria (menos de 500
Para ver uma melhor distribuição daqueles que possuem renda inferior a 10 mil reais, podemos
filtrar os dados e fazer outro histograma só para eles. Para isso, usamos a função subset().
subset(x, condição de x)
600
400
200
0
Figura 2.5: Histograma da Renda dos Domicı́lios para domı́cilios com renda inferior a 10 mil reais
(POF)
Agora, está mais fácil visualizar o comportamento da maioria dos domicı́lios. Percebe-se que há
uma grande concentração entre zero e três mil reais, que representam aproximadamente 2200 domicı́lios.
É assim que vemos que a distribuição dos dados é assimétrica, pois há uma concentração maior
43
2.2. CRIANDO GRÁFICOS COM O R
para essa distribuição, para quantificar o quão assimétrica é a distribuição dos dados.
0,15 1
Simétrica | Assimétrica moderada | Assimétrica Forte
É necessária a instalação do pacote moments (Komsta & Novomestky, 2015) para calcular o
coeficiente.
[1] 1.355681
O coeficiente de assimetria igual 1,355 diz que a distribuição é assimétrica forte. Essa distribuição
é assimétrica à direita, já que a cauda está a direita. Gráficos de renda geralmente são classificados
2.2.2 Boxplot
O boxplot é um gráfico construı́do com base no resumo de cinco números: limite inferior (LI),
1ž quartil (Q1), mediana (Q2), 3ž quartil (Q3) e limite superior (LS). O gráfico tem um formato de
caixa cuja sua largura é representada pelos 1ž e 3ž quartis. Portanto, 50% das observações estão
concentradas dentro da caixa. Os limites inferior e superior são representados por linhas fora da caixa.
O boxplot é muito útil para descobrir se há outliers no conjunto de dados, ou seja, valores
afastados da maioria das observações. Esses valores aparecem, no gráfico, fora dos limites inferior e
superior.
44
CAPÍTULO 2. ESTATÍSTICA DESCRITIVA E GRÁFICOS
Para esboçar um boxplot, utilizamos a função boxplot(). Os argumentos mais utilizados nesta
função são:
formato vertical.
Exemplo: Ainda com a base galton, façamos um boxplot para a altura dos pais (coluna 2).
45
2.2. CRIANDO GRÁFICOS COM O R
185
180
Altura (cm)
175
170
165
Criaremos um boxplot para a renda dos domicı́lios que possuem renda inferior a dez mil reais
Repare que existem muitos dados acima do limite superior. Esses são considerados outliers ou
valores atı́picos, valores distantes da maioria dos dados. Através do boxplot também é possı́vel ver a
Gráfico de pontos é útil quando se tem dados pareados (x,y) e se quer descobrir se há alguma
relação entre eles. No R, utilizamos a função plot() para esboçar esse tipo de gráfico. Os principais
46
CAPÍTULO 2. ESTATÍSTICA DESCRITIVA E GRÁFICOS
y: vetor de dados;
Exemplo: Utilizaremos outra base de dados do pacote UsingR: kid.weights. Essa base repre-
senta uma amostra sobre 250 crianças. Contém a idade, o peso, a altura e o sexo da criança. Façamos
um gráfico de pontos para verificar se há relação entre o peso (coluna 2) e a altura (coluna 3) das
crianças.
47
2.2. CRIANDO GRÁFICOS COM O R
60
50
Altura
40
30
20
10
Peso
Figura 2.9: Gráfico de dispersão entre peso e altura das crianças (base kid.wights)
Podemos observar que há uma relação positiva entre o peso e a altura das crianças (quanto
Utilizaremos os dados da POF para esboçar um gráfico de pontos que mostra se há alguma
relação entre a quantidade de banheiros (coluna 20) e cômodos (coluna 16) em um domicı́lio.
48
CAPÍTULO 2. ESTATÍSTICA DESCRITIVA E GRÁFICOS
8
6
4
2
0
5 10 15 20 25
Figura 2.10: Gráfico de dispersão entre Quantidade de cômodos e Banheiros no Domicı́lio (POF)
Parece haver alguma relação positiva entre a quantidade de cômodos e de banheiros no domicı́lio:
à medida que o número de cômodos cresce, o número de banheiros aumenta. Testes estatı́sticos podem
O gráfico de setores, mais conhecido como gráfico de pizza, é bastante usado para representar
categorias de uma variável de acordo com suas proporções. Não é indicado quando se tem muitas
função são:
Um gráfico com diversas categorias necessita de uma legenda para o entendimento do leitor.
Para criar uma legenda no R, utiliza-se a função legend(). Os principais argumentos dessa função são
49
2.2. CRIANDO GRÁFICOS COM O R
mostrados a seguir.
Exemplo: Ainda utilizando a base kid.weights criaremos um gráfico de pizza que mostre a
Feminino
51.6% Masculino
48.4%
Figura 2.11: Gráfico de pizza para composição por sexo (base kid.weights)
Vemos (Figura 2.11) que a amostra é composta de um pouco mais meninas do que meninos.
Exemplo: Agora, utilizando a POF, esboçaremos um gráfico de pizza para que representa as
50
CAPÍTULO 2. ESTATÍSTICA DESCRITIVA E GRÁFICOS
72.6%
1.4%
26%
Podemos ver (Figura 2.12) que a maioria dos domicı́lios são do tipo casa e apenas 1,4% dos
51
2.2. CRIANDO GRÁFICOS COM O R
Exemplo: utilizaremos 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çamos um gráfico
de barras para as notas atuais (coluna 2) para verificar a frequência de cada nota nessa amostra.
20
25
20
15
15
10
10
5
5
0
A A− B+ B B− C+ C D F A A− B+ B B− C+ C D F
Vejamos outro exemplo. Esboçaremos um gráfico de barras para os dados da POF para a renda
média por Unidade de Federação. Precisamos calcular a renda média por UF antes de esboçar o gráfico.
52
CAPÍTULO 2. ESTATÍSTICA DESCRITIVA E GRÁFICOS
BA MG RJ SP RS DF
Por esse gráfico (Figura 2.14) podemos comparar a renda média em cada estado contido na
amostra. Na Bahia, por exemplo, a renda média domiciliar não ultrapassa R$3.000,00. Enquanto em
Pode ser feito também um gráfico de barras múltiplas. É ótimo para comparar diversas variáveis
diferentes. Veja o exemplo a seguir. Façamos um gráfico de barras que mostre os tipos de domicı́lios de
acordo com as unidades de federação. Nesse caso, foram inseridos os seguintes argumentos na função
barplot:
beside: use TRUE para colocar as barras lado a lado ou FALSE para colocar as barras uma em
cima da outra;
53
2.2. CRIANDO GRÁFICOS COM O R
BA
500
MG
RJ
SP
400 RS
DF
300
200
100
0
Na Figura (2.15), comparamos três categorias de tipo de domicı́lio de acordo com cada UF.
Observando Rio de Janeiro (cor amarela) e São Paulo (cor laranja), percebe-se que SP é superior em
Há ainda, outros gráficos que permitem descrever os dados. Abaixo será mostrado um breve
resumo sobre eles.
• Ramoefolhas
O diagrama de ramo-e-folhas é uma boa maneira de organizar os dados a fim de obter uma apre-
sentação que facilite a visualização de informações. Recomenda-se que seja utilizado para quantidades
No R, utiliza-se a função stem() para fazê-lo. Faremos o diagrama para a variável Renda Total
54
CAPÍTULO 2. ESTATÍSTICA DESCRITIVA E GRÁFICOS
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á o ramo e à direita estão as folhas. O R nos informa que o ponto decimal
está quatro dı́gitos à direita de |. Isso significa que os algarismos à direita de | representam a casa
dos milésimos em um número. Porém, como os valores da renda são altos e a quantidade de dados é
grande, perdem-se informações. Assim, o R trunca os números. Por exemplo, a maior observação que
é 117219.2, é representada por 11|7 que é 117000, já que a folha 7 representa a casa dos milésimos.
• Distribuição Empı́rica
Um gráfico de distribuição empı́rica é útil para determinar a proporção de valores que estão
abaixo de um número particular. Para construir esse gráfico, é necessário ordenar os dados. Utilizare-
mos a função plot() já vista anteriormente. Como exemplo, esboçaremos este gráfico para a variável
55
2.2. CRIANDO GRÁFICOS COM O R
1.0
0.8
Probabilidade
0.6
0.4
0.2
0.0
Se fosse traçada uma reta para a renda R$10.000,00, através desse gráfico (Figura 2.16) verı́amos
que aproximadamente 90% dos dados estariam abaixo dele. Essa é a ideia de um gráfico de distribuição
empı́rica.
Podemos adicionar pontos, linhas, curvas, textos e etc. ao gráfico para facilitar a visualização
• Adicionando linhas
Como exemplo, adicionaremos linhas horizontais e verticais ao gráfico anterior (Figura 2.16) que
facilitem a visualização da proporção de domicı́lios com renda inferior a cinco e dez mil reais.
56
CAPÍTULO 2. ESTATÍSTICA DESCRITIVA E GRÁFICOS
1.0
0.8
Probabilidade
0.6
0.4
0.2
0.0
Figura 2.17: Distribuição Empı́rica da Renda dos Domicı́lios com linhas (POF)
As linhas tracejadas representam, respectivamente, renda igual a cinco e dez mil reais. Repare
que a proporção de domicı́lios com renda inferior a cinco mil reais é 80%.
• Adicionando pontos
57
2.2. CRIANDO GRÁFICOS COM O R
1.0
0.8
Probabilidade
0.6
0.4
0.2
0.0
Figura 2.18: Distribuição Empı́rica da Renda dos Domicı́lios com pontos (POF)
• Adicionando textos
pos: (default: NULL (centro)). Opções: 1 (abaixo), 2 (à esquerda), 3 (acima) e 4 (à direita);
Exemplo: Adicionaremos ao gráfico anterior, ao lado direito de cada ponto, os textos 5 mil e 10
mil.
58
CAPÍTULO 2. ESTATÍSTICA DESCRITIVA E GRÁFICOS
1.0
10 mil
0.8
5 mil
Probabilidade
0.6
0.4
0.2
0.0
Figura 2.19: Distribuição Empı́rica da Renda dos Domicı́lios com texto (POF)
• Adicionando tı́tulos
Há uma função no R que permite adicionar tı́tulos a um gráfico de outra maneira. Esta função
permite alterar o tipo e a cor da fonte tanto dos eixos quanto do tı́tulo principal. Assim, você pode criar
um gráfico sem tı́tulos e adicioná-los depois. Utilizamos a função title(). Os principais argumentos
Exemplo: Suponha o gráfico apresentado a seguir na Figura 2.20 sem tı́tulo e sem texto nos
eixos.
59
2.2. CRIANDO GRÁFICOS COM O R
10
8
6
4
2
2 4 6 8 10
Título do gráfico
10
8
eixo y
6
4
2
2 4 6 8 10
eixo x
• Esboçando retas
A função lines() permite adicionar retas a um gráfico pronto. Parecida com a função points()
vista anteriormente, a função lines() traça retas entre os pontos informados. Os principais argumen-
60
CAPÍTULO 2. ESTATÍSTICA DESCRITIVA E GRÁFICOS
> # Gráfico
> plot(0:10, 0:10, pch = 19, main = "Gráfico")
> # 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")
Gráfico
10
8
6
0:10
4
2
0
0 2 4 6 8 10
0:10
Exemplo: Utilizando um gráfico já esboçado, adicionaremos nele uma expressão de uma função
quadrática.
> # Gráfico
> plot(0:10, 0:10, pch = 19, main = "Gráfico")
> # Adicionando a express~
ao x^2 ao gráfico
> curve(x^2, from = 0 , to = 10 , add = T, col = "blue")
61
2.2. CRIANDO GRÁFICOS COM O R
Gráfico
10
8
6
0:10
4
2
0
0 2 4 6 8 10
0:10
No R, é possı́vel esboçar diversos gráficos em uma janela ao mesmo tempo. Para isso, use a
função par(). Essa função apresenta diversos argumentos, mas vamos nos limitar a apenas um: mfrow.
Exemplo: Esboçaremos quatro gráficos (já feitos nas seções anteriores) em uma só janela.
62
CAPÍTULO 2. ESTATÍSTICA DESCRITIVA E GRÁFICOS
Distribuição das alturas dos filhos Boxplot para a altura dos pais
72
Altura (cm)
Frequency
50 100
68
64
0
62 64 66 68 70 72 74
Alturas (cm)
4000
51.6%
2000
48.4%
0
BA MG RJ SP RS DF
O preenchimento dos gráficos na tela é por linha. Observe que quanto maior o número de
63
2.3. EXERCÍCIOS: INTRODUÇÃO AO R E ESTATÍSTICA DESCRITIVA
(2015)) realizou a pesquisa intitulada de Tolerância social à violência contra a mulher. A pesquisa foi
feita por amostragem, ou seja, foi selecionada uma parte da população do Brasil. A amostra é composta
das cinco regiões (Norte, Nordeste, Centro- Oeste, Sudeste e Sul). Na pesquisa, frases foram lidas
Os exercı́cios a seguir dependem da base de dados dessa pesquisa (base_ipea.csv). Você pode
que a base de dados possui observações faltantes (NA). Assim, em algumas funções será necessária a
1. Defina o seu diretório de trabalho para o local onde se encontra a base de dados.
7. Calcule a média, a mediana e a moda para a variável idade. A partir disso, o que você pode dizer
8. Classifique as idades de acordo com as faixas etárias a seguir. (Crie uma nova coluna no data
frame para essa classificação). A amostra é composta de mais Jovens, Adultos ou Idosos?
9. Calcule a média, a mediana, o primeiro quartil, o terceiro quartil e os valores máximo e mı́nimo
para a variável renda total de todos os moradores, parentes e agregados no último mês. Comente
os resultados.
64
CAPÍTULO 2. ESTATÍSTICA DESCRITIVA E GRÁFICOS
12. Calcule o coeficiente de variação para a variável idade e renda. Compare os dois coeficientes de
variação.
13. Calcule o desvio-padrão para a renda de acordo com cada região do Brasil. Qual é a região que
14. Crie um histograma para a variável renda total de todos os moradores, parentes e agregados no
último mês. Defina o tı́tulo do gráfico como Histograma para a renda total do domicı́lio e o texto
do eixo x como Renda total do domicı́lio. Baseado no gráfico, você conclui que a distribuição da
15. Crie um boxplot para a variável número de moradores no domicı́lio, parentes e agregados. (Não
no domicı́lio? Há outliers (valores extremos)? Se sim, a partir de qual valor um domicı́lio é
16. Crie um gráfico de dispersão (gráfico de pontos) para as variáveis renda total de todos os mora-
dores, parentes e agregados no último mês e renda total do chefe da famı́lia no último mês. (Não
esqueça de colocar o tı́tulo principal e o texto nos eixos). É possı́vel notar alguma relação entre
essas variáveis?
17. Crie uma tabela de frequências para a variável sexo. Faça o mesmo para a variável religião.
18. Utilizando a tabela de frequências para a variável sexo, crie um gráfico de pizza para essa variável.
(Não se esqueça do tı́tulo do gráfico). Visualizando o gráfico, esta amostra é composta por mais
homens ou mulheres?
19. Utilizando a tabela de frequências para a variável religião, crie um gráfico de barras para essa
variável. (Não se esqueça do tı́tulo do gráfico). Visualizando o gráfico, qual é a religião mais
frequente na amostra?
20. Utilizando a função par(), esboce os dois últimos gráficos na mesma janela.
65
2.3. EXERCÍCIOS: INTRODUÇÃO AO R E ESTATÍSTICA DESCRITIVA
66
Parte II
Modelos Univariados
67
3 NAIVE, Médias Móveis e Modelo
de Amortecimento Exponencial
3.1 Introdução
Este capı́tulo tem como objetivo apresentar algumas formas de suavizações e previsões utilizando
o software R. Em cada seção abordaremos um modelo e explicaremos o que ele faz e quando deve
ser utilizado. Veremos os modelos NAIVE (Ingênuo), Média Móvel e também alguns modelos de
Amortecimento Exponencial.
Dentro do ambiente R existem séries de estudos disponveı́s nos diversos pacotes existentes do
software. Hyndman (2015), autor do famoso pacote forecast, criou um banco de dados com vá-
rios exemplos didáticos disponı́veis no pacote fpp. Caso o leitor queira consultar as bases de da-
dos deste pacote, basta utilizar o comando data(package= "fpp"). O autor também possui o site
Para construção desse capı́tulo foi utilizado como base o livro de Morettin & Toloi (2006),
Hyndman et al. (2008) e os pacotes forecast (Hyndman et al. (2012)), TTR (Ulrich et al. (2013)) e
ggplot2 (Wickham & Chang (2015)).
O modelo NAIVE, ou modelo ingênuo, é o modelo mais simples de previsões para uma série
temporal. A previsão dele é igual ao valor da última observação ou, quando há sazonalidade, à previsão
Este é o modelo de referência para previsões pelo fato de não ter praticamente “nenhum custo”,
ser rápido e fácil de preparar, embora não tenha muita precisão. Em outras palavras, partimos nor-
malmente do modelo NAIVE e só trocamos para outro se for mais vantajoso (custo-benefı́cio). As
Estimaremos os valores futuros das séries temporais gold e wineind, que pertencem ao pacote fpp.
A série temporal gold refere-se aos preços diários do ouro em dólares americanos no perı́odo
70
CAPÍTULO 3. NAIVE, MÉDIAS MÓVEIS E MODELO DE AMORTECIMENTO
EXPONENCIAL
de 1o de janeiro de 1985 a 31 de março de 1989 e a série temporal wineind refere-se às 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.
Este modelo é um caso particular de média móvel, onde o tamanho da “janela” é igual a um.
Em muitos casos recorre-se a medidas como MAPE e RMSE. A sigla MAPE significa Mean Absolute
Percentage Erro e expressa a acurácia em porcentagem. Já a medida RMSE significa Root Mean
Square Erro. Quanto menor o valor encontrado para o MAPE e RMSE, melhor é o desepenho do
modelo estudado. No presente exemplo, estas medidas foram, respectivamente, 0,7737 e 6,0712.
Em relação à previsão, o valor previsto para os próximos dias foi 382,3 (o último valor observado).
> install.packages("forecast")
> library("forecast")
> summary(naive(gold,h=12))
Model Information:
Series: x
ARIMA(0,1,0)
Error measures:
ME RMSE MAE MPE MAPE
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
71
3.2. MODELO NAIVE
A figura (3.1) mostra que à previsão para qualquer tempo futuro é igual ao último valor observado
e o intervalo de confiança vai aumentando com o tempo. Esse modelo desperdiça muita informação,
ignorando todas as observações anteriores à última. Por outro lado, ele se adapta mais rápido à
380
360
340
Tempo
Com relação à série temporal de venda de vinho (wineind), o modelo Naive Sazonal apresentou
melhores resultados quando comparado com o modelo Naive, isto é, as medidas de acurácia MAPE e
> summary(naive(wineind,h=12))
Model Information:
Series: x
ARIMA(0,1,0)
Error measures:
72
CAPÍTULO 3. NAIVE, MÉDIAS MÓVEIS E MODELO DE AMORTECIMENTO
EXPONENCIAL
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 8325.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))
Model Information:
Series: x
ARIMA(0,0,0)(0,1,0)[12]
Error measures:
ME RMSE MAE MPE MAPE MASE ACF1
Training set 355.0122 2694.261 1967.378 0.8684261 7.887751 1 0.08275386
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
Nov 1994 32857 29404.17 36309.83 27576.346 38137.65
Dec 1994 37198 33745.17 40650.83 31917.346 42478.65
Jan 1995 13652 10199.17 17104.83 8371.346 18932.65
Feb 1995 22784 19331.17 26236.83 17503.346 28064.65
Mar 1995 23565 20112.17 27017.83 18284.346 28845.65
Apr 1995 26323 22870.17 29775.83 21042.346 31603.65
May 1995 23779 20326.17 27231.83 18498.346 29059.65
Jun 1995 27549 24096.17 31001.83 22268.346 32829.65
Jul 1995 29660 26207.17 33112.83 24379.346 34940.65
Aug 1995 23356 19903.17 26808.83 18075.346 28636.65
A figura (3.2) mostra que a previsão para qualquer tempo futuro é igual ao seu último ano
observado, por exemplo, para qualquer mês de janeiro previsto, o resultado será igual ao último valor
de janeiro observado, e o seu intervalo de confiança aumentará ao longo dos anos. Esse modelo só
73
3.3. MÉDIA MÓVEL
será afetado por observações recorrentes de valores anteriores daquele perı́odo de tempo, e não por
valores de perı́odos próximos. Mesmo aproveitando a informação de um ano, o modelo ainda perde
informações importantes.
> plot(snaive(wineind),main="",xlab="Tempo",ylab="Dados")
40000
30000
Dados
20000
10000
Tempo
Como o próprio nome já diz, média móvel é uma média que se movimenta, ou seja, todas as
médias móveis têm como padrão um intervalo de perı́odo fixo (“janela”) onde para cada nova informação
que entrar, retira-se a mais antiga e recalcula-se a média. Esse tipo de modelo possui o objetivo de
Onde m = (n − 1)/2.
74
CAPÍTULO 3. NAIVE, MÉDIAS MÓVEIS E MODELO DE AMORTECIMENTO
EXPONENCIAL
ii. Quando n é par, faz-se uma soma ponderada das n + 1 observações consecutivas, sendo que a
primeira e a última observação têm peso 1/(2n), as demais observações têm peso 1/(n). O
Onde m = n/2.
Para calcular a média móvel centrada no R, usaremos a função ma() do pacote forecast. Suavi-
Lembre-se que o pacote forecast precisa estar instalado e carregado para usarmos a função.
> summary(mm_centrada_12)
Na figura (3.3) é possı́vel notar que quanto maior é a “janela”, mais suavizada ficará a série,
e quanto menor é a “janela”, mais próximo da série original fica o ajuste. Observe também que a
> plot(wineind,xlab="Tempo",ylab="Dados")
> 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))
75
3.3. MÉDIA MÓVEL
wineind
mm_centrada_6
mm_centrada_12
35000
Dados
25000
15000
Tempo
Para obter uma série suavizada sem influênica da sazonalidade, foi utilizada uma “janela” de
tamanho 12. A figura (3.4) mostra uma tendência de crescimento entre os anos 1980 e 1987.
> plot(wineind,xlab="Tempo",ylab="Dados")
> mm_centrada_12 <- ma(wineind,order=12)
> lines(mm_centrada_12,col="red")
35000
Dados
25000
15000
Tempo
76
CAPÍTULO 3. NAIVE, MÉDIAS MÓVEIS E MODELO DE AMORTECIMENTO
EXPONENCIAL
Para calcular a média móvel simples, só é preciso fazer a média aritmética das r observações
Zt + Zt−1 + · · · + Zt−r+1
Mt = (3.4)
r
ou
Zt − Zt−r
Mt = Mt−1 + (3.5)
r
A útima média móvel é a previsão para todos os valores futuros, isto é:
ou
Zt − Zt−r
Ẑt (h) = Ẑt−1 (h + 1) + ∀h > 0 (3.7)
r
Para calcular a média móvel simples no R, usaremos a função a SMA() do pacote TTR. Suaviza-
remos e preveremos a série 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ão ter influência da sazonalidade da série, utilizaremos uma janela de tamanho 12.
77
3.3. MÉDIA MÓVEL
> IC_MMS(z,r,l)
Criaremos o gráfico da série temporal com sua suavização, previsão e intervalo de confiança 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
78
CAPÍTULO 3. NAIVE, MÉDIAS MÓVEIS E MODELO DE AMORTECIMENTO
EXPONENCIAL
40000
30000
Dados
20000
0 50 100 150
Tempo
A figura (3.5) mostra a série suavizada que começa no 12ž mes. A previsão para os meses futuros
é 25995.25 (última média móvel de um perı́odo de 12 meses).
desde então são utilizados com frequência quando o desejo é realizar ajustes e previsões em séries que
Na prática é comum encontrar séries que apresentam tendência ou sazonalidade ou uma com-
binação destas duas componentes. É possı́vel definir a componente de tendência (T) como um termo
que segue uma direção no decorrer do tempo. Já a componente de sazonalidade (S) pode ser definida
Os modelos estudados seguem como proposta estruturas aditivas e multiplicativas. Estas es-
truturas nada mais são do que combinações destas componentes. Por exemplo, o modelo aditivo é
Zt = T + S + E
79
3.5. SUAVIZAÇÃO EXPONENCIAL SIMPLES (SES)
Zt = T × S × E
É importante ressaltar que ambos os modelos apresentam uma componente de erro (E), comu-
mente descrito na literatura por εt , que representa a parte não capturada do modelo.
O modelo mais simples, conhecido como Suavização Exponencial Simples (SES) é adequado
para séries temporais livres das componentes de tendência e sazonalidade. Muito embora seja difı́cil
observar séries sem estas componentes, é possı́vel utilizar a modelagem ao identificar e remover tais
Dada uma série estacionária, isto é, sem a presença de tendência e sazonalidade, o modelo SES
for a constante de suavização, mais estáveis serão as previsões, isto é, serão atribuı́dos maiores pesos
A principal vantagem do modelo (3.8) é dada pela sua simplicidade de implementação e por não
3.5.1 Previsão
A literatura nos diz que a previsão de valores futuros para o modelo SES consiste no último
80
CAPÍTULO 3. NAIVE, MÉDIAS MÓVEIS E MODELO DE AMORTECIMENTO
EXPONENCIAL
Note que a equação (3.9) utiliza apenas a constante de suavização exponencial, informação mais
tervalar para os valores futuros em um determinado horizonte de tempo. Segundo (Morettin & Toloi
(2006)), é possı́vel representar a média e variância para Ẑt (h) quando t → ∞ como:
Supondo que εt ∼ N(0, σε2 ), o intervalo de confiança para Zt+h é dado por
[ √ √ ]
α α
Ẑt (h) − z( γ )σε2 ; Ẑt (h) + z( γ )σε2 (3.11)
2−α 2−α
No R, podemos utilizar a função HoltWinters() do pacote forecast para estimar o modelo SES.
Lembre-se de instalar e carregar o pacote forecast para utilizar a função. Devido à dificuldade de
encontrar na prática séries estacionárias, isto é, séries livres de tendência e sazonalidade, criaremos a
seguinte série:
> set.seed(1234)
> serie <- ts(runif(100,10,15),start = c(1915,1),frequency = 1)
A função HoltWinters() indica que o valor determinado para a constante α é dado por
0,1016823, isto significa que informações recentes explicam pouco os movimentos da série.
> ajuste<-HoltWinters(serie,beta=FALSE,gamma=FALSE)
Holt-Winters exponential smoothing without trend and without seasonal component.
Call:
HoltWinters(x = serie, beta = FALSE, gamma = FALSE)
Smoothing parameters:
alpha: 0.1016823
beta : FALSE
gamma: FALSE
81
3.5. SUAVIZAÇÃO EXPONENCIAL SIMPLES (SES)
Coefficients:
[,1]
a 11.92001
Portanto o modelo (3.9) é representado da seguinte maneira:
Parar gerar o gráfico da série em conjunto com a suavização encontrada, basta utilizar a função
plot. A figura (3.6) ilustra a situação.
> plot(ajuste)
15
Dados Observados/Ajustados
14
13
12
11
10
Tempo
plot.forecast(forecast.HoltWinters(ajuste,h = 10,level=95),main="",
xlab="Tempo",ylab="Dados")
82
CAPÍTULO 3. NAIVE, MÉDIAS MÓVEIS E MODELO DE AMORTECIMENTO
EXPONENCIAL
Note que um dos argumentos da função representa o número de valores futuros a serem gerados.
Para o presente exemplo este número foi fixado em 10. Como a série é anual, isto significa estamos
realizando previsões para os próximos 10 anos. Além disso, outro output da função refere-se ao intervalo
de confiança com nı́vel 95%. Caso o leitor queira gerar outro nı́vel de confiança, basta alterar o
argumento da função para o valor desejado. Por fim, a figura (3.7) representa o gráfico da função em
12
11
10
9
Tempo
O método visto anteriormente não é apropriado para séries que apresentam tendência. Uma
possı́vel aplicação do modelo SES acarretaria em previsões que subestimam ou superestimam con-
tinuamente os valores reais (Morettin & Toloi (2006)). Para contornar tal problema, o modelo de
suavização exponencial de Holt (SEH), estendido Holt em 1957, permite realizar previsões em séries
O modelo SEH é similar ao modelo SES, com a diferença de que teremos uma nova constante
de suavização para trabalhar diretamente com a tendência da série. Seus valores serão estimados por:
83
3.6. SUAVIZAÇÃO EXPONENCIAL DE HOLT (SEH)
Aqui, α e β são classificadas como constantes de suavização, Lt estima o nı́vel da série no tempo
Para ilustrar a presente seção, utilizaremos a base de dados ausair, que representa o total de
passageiros anuais de transportadoras aéreas registrada na Austrália. Estes dados são encontrados no
> data(ausair)
> ausair
> ajuste_com_tendencia<-HoltWinters(ausair,gamma=FALSE)
Holt-Winters exponential smoothing with trend and without seasonal component.
Call:
HoltWinters(x = ausair, gamma = FALSE)
Smoothing parameters:
alpha: 0.9934787
beta : 0.1082122
gamma: FALSE
Coefficients:
[,1]
a 50.048209
b 1.452627
0,1082122. Isto significa que observações recentes tem um peso maior para o nı́vel, enquanto a tendência
84
CAPÍTULO 3. NAIVE, MÉDIAS MÓVEIS E MODELO DE AMORTECIMENTO
EXPONENCIAL
Dando sequência a análise, a figura (3.8) representa o ajuste da série utilizando o modelo SEH.
plot(ajuste_com_tendencia,main="",xlab="Tempo",ylab="Dados Observados/Ajustados")
50
Dados Observados/Ajustados
40
30
20
10
Tempo
Para calcular os valores previstos, utilizaremos a função holt(), que trabalha exclusivamente
com previsões de modelos SEH. A figura (3.9) representa a previsão para os próximos 10 anos da série
de estudo.
85
3.6. SUAVIZAÇÃO EXPONENCIAL DE HOLT (SEH)
70
60
50
Dados
40
30
20
10
Tempo
Neste exemplo utilizaremos a série airmiles que se refere às milhas dos voos dos passageiros
pelas companhias aéreas comerciais nos Estados Unidos. Os dados são anuais de 1937 a 1960, logo não
> 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 10566 12528 14760 16769 19819 22362 25340 25343 29269 30514
melhores valores para as constantes α e β são, respectivamente, 0,8072 e 0,3895. Note que o fato de
α estar mais próximo de 1 indica que a estimativa do nı́vel tem mais influência das observações mais
recentes, e β estar mais próximo de 0 indica que a estimativa da tendência tem pouca influência dos
Call:
HoltWinters(x = airmiles, gamma = FALSE)
86
CAPÍTULO 3. NAIVE, MÉDIAS MÓVEIS E MODELO DE AMORTECIMENTO
EXPONENCIAL
Smoothing parameters:
alpha: 0.8072924
beta : 0.3895832
gamma: FALSE
Coefficients:
[,1]
a 30668.871
b 2100.563
Para construir o gráfico da série original em conjunto com o modelo ajustado via SEH, utiliza-se
o seguinte comando:
> plot(airmiles,xlab="Tempo",ylab="Dados")
> 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))
airmiles
ajuste_com_tendencia
25000
Dados
15000
5000
0
Tempo
Pela figura (3.10) podemos ver que a suavização acompanha a tendência de crescimento da série
original.
87
3.7. SUAVIZAÇÃO EXPONENCIAL SAZONAL DE HOLT-WINTERS
seus respectivos intervalos de confiança. Plotaremos também a série original com as previsões para os
próximos 10 anos. É possı́vel ver a tendência de crescimento nas previsões (figura 3.11).
> previsao_com_tendencia<-forecast.HoltWinters(ajuste_com_tendencia)
> plot(previsao_com_tendencia,xlab="Tempo",ylab="Dados",main="")
50000
Dados
30000
10000
0
Tempo
Holt-Winters (HW). Este modelo é uma extensão feita por Winters em 1960 ao modelo proposto por
Holt em 1957 com o intuito de caputrar a sazonalidade. O modelo segue a mesma proposta da equação
vista na seção anterior e cria uma equação adicional para a sazonalidade. Sua vantagem é semelhante
ao método de Holt, no entanto, o modelo HW é adequado para séries de comportamento mais geral,
uma vez que na prática a maioria das séries encontradas apresentam a componente de sazonalidade.
Existem duas variações deste método para estudar o comportamento sazonal de uma série tem-
poral: a aditiva e multiplicativa. A seguir, veremos com mais detalhes a construção destes modelos.
88
CAPÍTULO 3. NAIVE, MÉDIAS MÓVEIS E MODELO DE AMORTECIMENTO
EXPONENCIAL
entes de suavização e equações para o nı́vel, tendência e sazonalidade. A equação (3.22) apresenta a
( )
Zt
Lt = α + (1 − α )(Lt−1 + Tt−1 ) 0 ≤ α ≤ 1;t = m + 1, ..., N (3.23)
St−m
( )
Zt
St = γ + (1 − γ )St−m 0 ≤ γ ≤ 1;t = m + 1, ..., N (3.25)
Lt−1 + Tt−1
nı́vel, tendência e sazonal. Já a equação (3.26) representa a formulação para previsão h passos à
89
3.7. SUAVIZAÇÃO EXPONENCIAL SAZONAL DE HOLT-WINTERS
Utilizaremos a série temporal sazonal AirPassengers que registra mensalmente o total de passa-
geiros internacionais (em milhares) da linha aérea (Pan Am) no perı́odo de janeiro de 1949 a dezembro
> AirPassengers
Jan Feb Mar Apr May Jun Jul Aug Sep Oct Nov Dec
1949 112 118 132 129 121 135 148 148 136 119 104 118
1950 115 126 141 135 125 149 170 170 158 133 114 140
1951 145 150 178 163 172 178 199 199 184 162 146 166
1952 171 180 193 181 183 218 230 242 209 191 172 194
1953 196 196 236 235 229 243 264 272 237 211 180 201
1954 204 188 235 227 234 264 302 293 259 229 203 229
1955 242 233 267 269 270 315 364 347 312 274 237 278
1956 284 277 317 313 318 374 413 405 355 306 271 306
1957 315 301 356 348 355 422 465 467 404 347 305 336
1958 340 318 362 348 363 435 491 505 404 359 310 337
1959 360 342 406 396 420 472 548 559 463 407 362 405
1960 417 391 419 461 472 535 622 606 508 461 390 432
e γ são, respectivamente, 0,2479; 0,0345 e 1. A interpretação destes coeficientes é análoga aos métodos
de suavização visto anteriormente. Aqui, o fato de α estar mais próximo de 0 do que de 1 significa que
a estimativa do nı́vel tem pouco peso nas observações mais recentes, já para o β , que está mais próximo
de 0 indica que a estimativa de tendência tem pouca influência dos valores mais recentes e γ ser igual
a 1 indica que a estimativa da sazonalidade tem influência direta nas observações mais recentes.
> ajuste_com_sazonalidade<-HoltWinters(AirPassengers)
> ajuste_com_sazonalidade
Call:
HoltWinters(x = AirPassengers)
Smoothing parameters:
alpha: 0.2479595
beta : 0.03453373
gamma: 1
Coefficients:
[,1]
a 477.827781
90
CAPÍTULO 3. NAIVE, MÉDIAS MÓVEIS E MODELO DE AMORTECIMENTO
EXPONENCIAL
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
A figura (3.12) representa o gráfico da série original em conjunto com o ajuste via HW. Pela
figura (3.12) é possı́vel perceber que a suavização acompanha bem a série original.
> plot(AirPassengers,xlab="Tempo",ylab="Dados")
> 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))
AirPassengers
600
ajuste_com_sazonalidade
500
400
Dados
300
200
100
Tempo
respectivos intervalos de confiança. Sendo assim, a figura (3.13) representa a série original com as
previsões para os próximos dois anos. Podemos ver pelas previsões a tendência de crescimento somado
ao efeito sazonal.
> previsao_com_sazonalidade<-forecast.HoltWinters(ajuste_com_sazonalidade)
> plot(previsao_com_sazonalidade,main="",xlab="Tempo",ylab="Dados")
91
3.8. CONSIDERAÇÕES FINAIS
700
500
Dados
300
100
Tempo
Neste capı́tulo foi apresentado modelos que permitem fazer ajustes e previsões em séries tem-
porais. Inicialmente foi visto o modelo mais simples, conhecido como NAIVE, cuja previsão é igual
ao último valor observado. Em seguida o leitor tomou conhecimento de modelos baseados em médias
móveis (Centrada e Simples). Por fim, foi apresentado modelos de suavização exponencial de estru-
Ao final deste capı́tulo espera-se que o leitor adquira um conhecimento inicial sobre ajustes e pre-
visões de séries temporais utilizando, principalmente, modelos que possuem estruturas que acomodam
92
4 Processos Não-estacionários
4.1 Introdução
No contexto deste livro, um processo estocástico é estacionário se sua média e variância são cons-
tantes no tempo e sua autocovariância depende apenas da ordem de defasagem1 . Assim, formalmente,
∀ s, j, onde µ = E(yt ).
Na prática, isso significa que o processo não apresenta tendência aparentes, e que tanto a variação
quanto o padrão desta variação são constantes ao longo do tempo. Isso sugere que é possı́vel dizer,
a partir da visualização de seu gráfico no tempo, se uma série aparenta se comportar de maneira
estacionária.
Uma ferramenta que auxilia nessa etapa visual é o gráfico da função de autocorrelação (FAC) da
série. Um processo não estacionário apresenta um lento decaimento de sua função de autocorrelação2 .
Essa caracterı́stica pode ser observada, por exemplo, na série do Índice de Atividade Econômica do
Banco Central do Brasil (BC), o IBC-BR, disponibilizado no próprio site do BC (Figura 4.1).
150
1.0
0.8
140
0.6
130
ibcts
ACF
0.4
120
0.2
110
−0.2 0.0
100
Time Lag
A análise visual da FAC (Figura 4.1b) sugere que a série é não estacionária, o que nos leva ao
1 Para maiores detalhes ver Hamilton (1994) e Enders (2008).
2A prova é apresentada em Enders (2008, p. 60).
94
CAPÍTULO 4. PROCESSOS NÃO-ESTACIONÁRIOS
Tal problema torna pertinente notar que tão importante quanto definir a existência de não
estacionariedade é 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óteses acerca da
existência de raı́zes unitárias, propriedade que, grosso modo, faz com que uma série acumule choques
aleatórios indefinidamente.
Não obstante, vale ressaltar que, quase em totalidade, os testes existentes assumem hipóteses e
apresentam limitações que tornam a análise de estacionariedade, em alguns casos, uma tarefa menos
sistemática e mais investigativa. Uma instância importante dos casos que apresentam complicações
são aqueles onde a série apresenta quebras estruturais, o que impede a utilização de testes tradicionais.
Vale lembrar que toda a teoria de séries temporais está amparada sobre a de equações em dife-
rença estocásticas, que é de fato de onde vêm as condições necessárias e suficientes que nos permitem,
O conteúdo deste texto está baseado principalmente nos livros de Enders (2008), Cowpertwait
& Metcalfe (2009) e Zeileis et al. (2001). Ademais, todos os códigos R e dados utilizados para produção
<https://github.com/pedrocostaferreira/Analise-de-Series-Temporais-em-R>.
Este capı́tulo está organizado da seguinte maneira: na Seção 4.2 abordamos os motivos mais
comuns pelo qual uma série é não-estacionária; na Seção 4.3 apresentamos alternativas para tratar
desses problemas; já na Seção 4.4 apresentamos testes formais para identificar raizes unitárias e na
Seção 4.5 abordamos o problema das quebras estruturais.
Ainda que estacionariedade seja uma propriedade bem definida de uma série temporal, o motivo
pelo qual uma série não é estacionária é um problema mais delicado e sua inferência incorreta leva a
Como visto em Enders (2008, p. 156), a presença de uma tendência (determinı́stica ou estocás-
tica) é o motivo mais comum pelo qual uma série temporal é não-estacionária.
95
4.2. TIPOS DE NÃO-ESTACIONARIEDADE
Todavia, antes de abordar esses dois casos, é interessante apresentar o processo de ruı́do branco,
que é formado por uma sequência de variáveis aleatórias que apresentam média e covariâncias nulas e
E(εt ) = 0, (4.2a)
E[(εt )2 ] = σ 2 , (4.2b)
Nesta seção, a parte estocástica dos modelos estacionários será representada por um ruı́do
branco, mas nada impede que utilizemos um outro processo da forma A(L)εt , onde A(L) é uma função
polinomial do operador de defasagem L (i.e. Lyt = yt−1 ).
yt = α + β t + εt , (4.3)
pelo termo β t. Como veremos na seção seguinte, para tornar um processo desse tipo estacionário basta
t
yt = α + ∑ εi . (4.4)
i=1
Esse tipo de processo é o elemento básico de séries temporais que apresentam tendências esto-
cásticas e pode se apresentar também com um termo de drift (i.e. uma contante somada t vezes), que
se traduz em uma tendência determinı́stica, mas que na realidade surge, como se vê em Enders (2008,
p. 159), da solução de uma equação em diferenças estocásticas composta por um ruı́do branco e uma
4 β̂ é o valor estimado de β .
96
CAPÍTULO 4. PROCESSOS NÃO-ESTACIONÁRIOS
constante:
t
yt = α + γ t + ∑ εi . (4.5)
i=1
t
yt = α + ∑ εt + ζt . (4.6)
i=1
Juntos, os processos representados pelas quatro equações acima norteiam as análises de estaci-
onariedade, pois, de acordo com Cowpertwait & Metcalfe (2009, p. 221), o comportamento essencial
de boa parte das séries temporais pode ser mimetizado por suas simples estruturas.
15
2
1
10
0
5
−1
−2
0 20 40 60 80 100 0 20 40 60 80 100
80
80
60
60
40
40
20
20
0
0
0 20 40 60 80 100 0 20 40 60 80 100
As Figuras 4.2 e 4.3 contêm algumas informações interessantes. De inı́cio, dada a estacionarie-
dade do processo de ruı́do branco (Figura 4.2a), vemos (em contrapartida com a primera Figura deste
capı́tulo) ao que se assemelha a FAC de um processo estacionário (Figura 4.3a). Obviamente estamos
olhando para um resultado ideal, mas geralmente buscamos encontrar, para processos estacionários,
FAC’s com quedas muito rápidas, sem padrões sistemáticos ou alguma autocorrelação significativa.
97
4.3. DIFERENCIAÇÃO E REMOÇÃO DE TENDÊNCIA
0.2
0.8
0.1
0.6
0.4
ACF
ACF
0.0
0.2
−0.1
−0.2 0.0
−0.2
5 10 15 20 5 10 15 20
Lag Lag
(a) ACF: Ruı́do Branco (b) ACF: Passeio Aleatório sem drift
1.0
1.0
0.8
0.8
0.6
0.6
ACF
ACF
0.4
0.4
0.2
0.2
−0.2 0.0
−0.2 0.0
5 10 15 20 5 10 15 20
Lag Lag
séries temporais com tais caracterı́sticas indistinguı́veis à luz de sua visualização gráfica e função
de autocorrelação. Ainda que o processo de passeio aleatório sem drift (Figura 4.2b) claramente
se diferencie dos outros dois processos, as FAC’s dos três são bem semelhantes (Figuras 4.2b-4.2d)
e, memso que estejamos trabalhando com dados simulados, tal complicação é comum em estudos
um dos casos é diferente, e aplicar o método incorreto causa sérios danos à informação contida na
série temporal. Em particular, como se vê em Cowpertwait & Metcalfe (2009, p. 221), a diferenciação
98
CAPÍTULO 4. PROCESSOS NÃO-ESTACIONÁRIOS
Note que ∆yt é um processo de média móvel MA(1) somado à uma constante e, portanto, é estacionário.
a componente determinı́stica.
da tendência.
100
3
80
2
60
1
40
0
20
−1
0
0 20 40 60 80 100 0 20 40 60 80 100
Para uma série que apresenta não-estacionariedade devido à presença de raiz unitária, a remoção
de tendência não a torna estacionária. Por exemplo, se tomarmos um passeio aleatório puro, yt =
t
∆yt = ∑ εi − β̂ t (4.7a)
i=1
t
, ∆yt = (γ − β̂ )t + ∑ εi , (4.7b)
i=1
que não são estacionários dado que continuamos com o passeio aleatório.
Na Figura 4.5 está ilustrado um passeio aleatório com drift antes (Figura 4.5a) e após remoção
de tendência (Figura 4.5b). Visualmente corroboramos o resultado das equações anteriores, dado que o
processo resultante não parece ser tão claramente estacionário quanto no caso da presença de tendência
determinı́stica.
tendência (Figura 4.6), vemos que após a remoção da tendência, por mais que a queda seja muito
99
4.3. DIFERENCIAÇÃO E REMOÇÃO DE TENDÊNCIA
3
100
2
80
1
60
0
40
−1
20
−2
0
0 20 40 60 80 100 0 20 40 60 80 100
Figura 4.5: Passeio aleatório com drift antes e após remoção de tendência
mais rápida que no caso do processo original, as correlações iniciais (até a 5l defasagem) continuam
significativas, e existe um aparente comportamento sistemático. Por outro lado, a diferenciação produz
0.8
0.6
0.1
0.4
ACF
ACF
0.0
0.2
0.0
−0.1
−0.2
−0.4
5 10 15 5 10 15 20
Lag Lag
Figura 4.6: ACF: Passeio aleatório com drift diferenciado e removido de tendêncida
Exatamente por tais ambiguidades, faz-se necessária uma metodologia formal para a análise de
abordagem padrão.
Analisando os resultados dos mesmos procedimentos para a série do IBC-Br da Seção 4.2, temos
(Figura 4.7).
De imediato verificamos que a remoção de tendência não torna a série estacionária. Entretanto,
mesmo diferenciada a série apresenta truncagens incômodas, o que se deve provavelmente à forte
sazonalidade da mesma, pois ainda que esta esteja dessazonalizda, parte desse comportamento pode
continuar presente. A ideia natural seria prosseguirmos a um teste de raiz unitária, mas não há como
100
CAPÍTULO 4. PROCESSOS NÃO-ESTACIONÁRIOS
2
4
1
2
0
0
−1
−2
−2
−4
−3
−6
−4
0 20 40 60 80 100 120 2006 2008 2010 2012 2014 2016
0.2
0.0 0.2 0.4 0.6 0.8
0.1
ACF
ACF
0.0
−0.1
−0.4
Lag Lag
Dizemos que um processo possui raiz unitária quando os choques aleatórios que ocorrem são
carregados indefinidamente. No caso do passeio aleatório, vemos que o termo ∑ti=1 εi representa exata-
a não-estacionariedade é gerada pela presença de processos que possuem raı́zes unitárias. Assim,
para processos com tendência determinı́stica, a remoção da tendência é suficiente para obtermos um
processo estacionário, enquanto que para processos com tendência estocástica necessitamos recorrer à
diferenciação.
O exemplo anterior (Figura 4.7) ilustrou como a remoção da tendência aplicada a um processo
que possui raiz unitária não é o suficiente para obtermos uma série estacionária. Todavia, a diferenci-
ação da série é uma transformação forte do processo que se feito sem necessidade, induz a análises e
modelagens equivocadas.
101
4.4. TESTES FORMAIS
muito importante, por exemplo, para análises de cointegração). Em particular, o trabalho de Granger
& Newbold (1974) mostrou como o uso de séries não estacionárias pode resultar em regressões lineares
aparentemente muito bem ajustadas, mas que, para mencionar um dos problemas, possuem resı́duos
Como mencionamos, a maior parte dos testes de raiz unitária são testes de hipótese, de maneira
que, em muitos dos casos, compararemos estatı́sticas que obtemos com valores crı́ticos. Tais valores,
em sua grande maioria, são obtidos pelo método de Monte Carlo que, grosso modo, se resume na
geração de cenários aleatórios em grande número para através destes gerar intervalos de confiança ou
estimativas pontuais5 .
O Dickey-Fuller aumentado é provavelmente o teste de hipótese para raı́zes unitárias mais uti-
lizado. Grosso modo, se tomarmos um processo da forma yt = α + β yt−1 + εt , o objetivo do teste é,
então, inferir se β = 1.
O problema é que estimar o modelo linear acima sob a hipótese de não-estacionariedade nos
faz incorrer no problema de regressão espúria e, portanto, ficamos impedidos de inferir o valor de β
Dessa maneira ? propõe realizar o teste sob a série diferenciada em três configurações que
possibilitam obter as estatı́sticas de testes adequadas, dado que em suas simulações notaram que a
Além disso, ainda que a série seja diferenciada, sob a hipótese nula de existência de raiz unitária,
é possı́vel que os resı́duos das regressões estejam correlacionados. Assim, adiciona-se o termo de média
p
móvel ∑i=1 βi ∆yt−i , o que gera o problema de determinar a quantidade de defasagens a incluir na
regressão, o que geralmente se decide, como se vê em Enders (2008, p. 193), a partir de critérios de
102
CAPÍTULO 4. PROCESSOS NÃO-ESTACIONÁRIOS
p
∆yt = γ yt−1 + ∑ βi ∆yt−i + εt , (4.8a)
i=1
p
∆yt = α + γ yt−1 + ∑ βi ∆yt−i + εt , (4.8b)
i=1
p
∆yt = α + γ yt−1 + β t + ∑ βi ∆yt−i + εt . (4.8c)
i=1
realiza-se o teste e confrontam-se as estatı́sticas de testes obtidas com os valores crı́ticos tabelados.
Em particular, dado que o teste inclui a presença de componentes determinı́sticos, os autores fornecem
também as estatı́sticas de testes conjuntas para avaliarmos se, sob a hipótese de raiz unitária, a
estrutura que acreditamos que a série segue é adequada, o que é útil para o procedimento descrito no
próximo parágrafo.
Uma utilização direta da flexibilidade do teste ADF é a de permitir um estudo quase que
exaustivo de um processo quando não conhecemos nada sob sua estrutura teórica. Tal metodologia é
O procedimento sugere iniciar os testes a partir do modelo irrestrito, contendo todas as compo-
nentes determinı́sticas, parando caso se conclua a não existência de raiz unitária e, a cada etapa em
que não se rejeite a hipótese nula, avalia-se a significância do parâmetro do componente determinı́stico
sob a hipótese de raiz unitária, removendo-o se não for significante, passando-se então ao teste mais
restrito.
Finalmente, vale lembrar que é de igual importância verificar as estatı́sticas F geradas pelo teste
ADF. A correta especificação do processo a ser testado é crucial para a inferência com base no teste
de hipóteses.
Assim como todos os testes apresentados a seguir, o ADF que utilizaremos é parte do pacote
ur.df(y, type = c(“none”, “drift”, “trend”), lags = 1, selectlags = c(“Fixed”, “AIC”, “BIC”))
103
4.4. TESTES FORMAIS
selectlags: critério de informação para escolha da defasagem ótima, baseada na entrada ante-
rior.
4.4.2 KPSS
Um problema do teste ADF é seu pequeno poder estatı́stico, que o torna praticamente incapaz
de diferenciar uma série com raiz unitária de uma com raiz “quase” unitária, ou seja, cria um viés para
a conclusão de existência de raiz unitária. Isso é um problema sério dado que a correção para uma
série não estacionária é sua diferenciação, o que implica que se o teste falha, nos leva a diferenciar uma
série estacionária, que elimina muita informação a respeito do processo.
(1992), que inverte a hipótese nula do teste ADF (o que, rigorosamente, o torna um teste de estacio-
nariedade):
yt = dt + rt + εt , (4.9)
onde:
rt é um passeio aleatório
Além disso, a hipótese nula é que o termo rt é nulo. Assim como o ADF, o teste necessita
da definição da existência de componentes determinı́sticos, assim como a definição da quantidade de
defasagens:
ur.kpss(y, type = c(“mu”, “tau”), lags = c(“short”, “long”, “nil”), use.lag = NULL)
type: se define “mu” para o teste com termo constante e “tau” para o com tendência;
√ √
lags: “short” adiciona 4 4 × (n/100) defasagens, “long” adiciona 4 12 × (n/100) e “nil” nenhuma
104
CAPÍTULO 4. PROCESSOS NÃO-ESTACIONÁRIOS
4.4.3 Phillips-Perron
O teste apresentado em Phillips & Perron (1988), utiliza a mesma estrutura do teste DF (ADF
sem o termo de média móvel), todavia trata do problema de correlação serial corrigindo a estatı́stica
de teste. Tais correções, conhecidas na literatura como HAC7 que, em linhas gerais, normalizam a
matriz de variância e covariância com base nos clusters (i.e. grupos homogêneos) de concentração
Porém, vale ressaltar que tal correção tem suporte nas hipóteses para séries de grande tamanho,
r.pp(x, type = c(“Z-alpha”, “Z-tau”), model = c(“constant”, “trend”), lags = c(“short”, “long”),
use.lag = NULL)
type: estatı́sticas de teste a serem computadas, “Z-alpha” sendo para o modelo com constante e
lags: quantidade de defasagens de acordo com o tamanho da amostra, como no teste KPSS;
Como observamos na seção sobre o teste ADF, seus dois problemas principais são o baixo poder
O teste DF-GLS (?), assim como o ADF, solicita a especificação da quantidade máxima de
lags. Possui também duas formas, que adequam o teste para a presença de uma tendência ou drift
determinı́stico. A diferença é que a série passa por uma transformação via MQG (Mı́nimos Quadrados
Os termos de drift e tendência são estimados pelo método MQG e depois removidos da série.
Dado que o método MQG ajusta a matriz de variância e covariância dos resı́duos para a presença de
correlação e heterocedasticidade, a transformação proposta pelos autores faz uma pequena alteração
105
4.4. TESTES FORMAIS
na série original, de maneira que a remoção dos componentes determinı́sticos ocorre de forma local.
Assim, após a tranformação, um teste padrão do tipo ADF é realizado na série resultante.
teste ADF.
type: definido ”DF-GLS”para realização do teste DF-GLS como descrito (i.e. série removida
de tendência e sem intercepto), enquanto que “P-test”corrige as estatı́sticas para presença de
4.4.5 Zivot-Andrews
O teste de Zivot-Andrews, proposto em Zivot & Andrews (1999), busca testar a hipótese nula de
raiz unitária na presença de uma quebra estrutural nos parâmetros de nı́vel, inclinação ou ambos. De
acordo com os autores, a principal diferença em relação a outros testes é a endogeneização da quebra
sob a hipótese nula, o que permite a correta inferência da mudança de parâmetro sob a presença de
raiz unitária, o exato motivo pelo qual os outros testes são inadequados.
O teste se baseia no menor valor da estatı́stica t do teste ADF, de maneira que uma quebra
existiria onde há menos evidência da hipótese nula de raiz unitária. Os argumentos da função tem o
Como veremos na próxima seção, há motivos para acreditarmos que a série do IBC-Br que
apresentamos no inı́cio do capı́tulo possua uma quebra estrutural e, sob essa hipótese, dentre os testes
106
CAPÍTULO 4. PROCESSOS NÃO-ESTACIONÁRIOS
Call:
lm(formula = testmat)
Residuals:
Min 1Q Median 3Q Max
-4.2817 -0.5174 0.0977 0.6311 2.2671
Coefficients:
Estimate Std. Error t value Pr(>|t|)
(Intercept) 11.02833 3.62846 3.039 0.00287 **
y.l1 0.89103 0.03681 24.208 < 2e-16 ***
trend 0.05088 0.01644 3.094 0.00242 **
du -0.87398 0.37080 -2.357 0.01994 *
---
Signif. codes: 0 *** 0.001 ** 0.01 * 0.05 . 0.1 1
Teststatistic: -2.9606
Critical values: 0.01= -5.34 0.05= -4.8 0.1= -4.58
O baixo p-valor sugere rejeição da hipótese nula, de que o processo é um passeio aleatório com
comportamento sendo a suposta quebra um ruı́do de natureza endógena. Ou seja, há evidência de que
de uma quebra corrobora a hipótese de que um determinado fato ou acontecimento tenha mudado a
na maioria dos testes de raiz unitária. Todavia, antes de pensar em corrigir tal problema, enfrentamos
107
4.5. QUEBRAS ESTRUTURAIS
outro tão difı́cil quanto: definir se de fato há uma quebra estrutural.
relevantes à ela são muito importantes, pois mais interessante do que inferir se a hipótese de quebra
se justifica estatisticamente é poder suportá-la sob uma justificativa que trate do processo gerador.
(1960), que em linhas gerais propôs a comparação dos resı́duos de um modelo onde se calcula duas
regressões, 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ão para todo o perı́odo (modelo
Assim, na equação (4.10), û são os resı́duos do modelo irrestrito, ûR os do modelo restrito, n é
de se conhecer o momento da quebra. Todavia, existem testes baseados nesta mesma estatı́stica que
contornam essa limitação. Uma das possibilidades é realizar o teste para vários perı́odos dentro de uma
janela, como sugere e implementa Zeileis et al. (2001) no pacote strucchange (assim como o restante
from: intervalo de cálculo da estatı́stica (data inicial). O valor padrão é de 15% da amostra;
data: base de dados a ser utilizada, caso não se queira carregá-la fora da função.
Outra ferramenta são os testes de flutuação empı́rica (em inglês empirical fluctuation process
(efp)) que se baseiam no método apresentado originalmente em Brown et al. (1975). A proposta é
inferir sobre a estabilidade dos parâmetros a partir do comportamento da soma cumulativa (equação
108
CAPÍTULO 4. PROCESSOS NÃO-ESTACIONÁRIOS
(4.11)) dos resı́duos recursivos normalizados8 de um modelo que descreva o processo adequadamente.
|ns|
1
e f p(s) = √ ∑ εˆt .
σ̂ (n) t=1
(4.11)
De acordo com Zeileis et al. (2001), sob a hipótese nula de estabilidade do processo de soma
cumulativa (i.e. ausência de quebra estrutural), o teorema do limite central implica que sua média não
deve divergir de zero. Assim, com base no processo de flutuação escolhido, são estabelecidos limites
superiores e inferiores para a oscilação do processo de maneira que há evidências de quebra estrutural
type: tipo de processo de flutuação a ser utilizado dentre ”Rec-CUSUM”, ”OLS-CUSUM”, ”Rec-
MOSUM”ou ”OLS-MOSUM”;
rescale: permite a normalização dos resı́duos de acordo com a subamostra da regressão (default
Voltando à série do IBC-Br, dado o contexto em que a economia mundial foi inserida a partir de
2008, temos motivos pra acreditar que a queda ocorrida naquele ano tenha sido uma quebra estrutural,
o que significaria dizer que, após a crise financeira de 2008, o processo gerador do PIB (dado que o
IBC-Br é utilizado como sua proxy) e, consequentemente, a estrutura da economia brasileira, foram
afetados. Todavia, visualmente nada é conclusivo, dado que apesar da queda o processo parece voltar
ao seu trajeto original a partir de 2011, de maneira que possa haver ocorrido apenas uma momentânea
Não obstante, na Figura 4.8, realizamos o teste de flutuação empı́rica para a série diferenciada9 ,
tomando como parâmetro um modelo AR(1). A Figura mostra que a função não extrapola os limites
8 Resı́duos da estimativa da observação k feita com base na amostra até k − 1 divididos por σ̂ √n, onde n é o tamanho
da amostra.
9 Como o teste é realizado nos resı́duos de uma regressão linear, o ideal é garantir que os dados utilizados são
estacionários.
109
4.5. QUEBRAS ESTRUTURAIS
estabelecidos para o processo definido como referência10 . Assim, dado que a hipótese nula é a de
estabilidade do processo de flutuação empı́rico e o p-valor é alto11 , conclui-se que a série não apresenta
2
1
0
−1
−2
−3
Anos
data: ibc_cus
S = 0.69829, p-value = 0.2514
Outra abordagem baseada em Bai & Perron (2003), busca datar as quebras estruturais existentes
em um processo através de um algoritmo de programação dinâmica que minimiza a soma dos resı́duos
quadráticos.
h: janela de intervalos de busca (geralmente estipulada entre 10% e 15% do tamanho da amostra);
Para deixar a explicação mais clara, simulemos um passeio aleatório com drift ao qual dobramos
110
CAPÍTULO 4. PROCESSOS NÃO-ESTACIONÁRIOS
120
80
60
40
20
0
0 20 40 60 80 100
Agora, plotemos sua função de flutuação CUSUM e o gráfico resultante da função breakpoints,
ambos gerados tomando como argumento um processo AR(1) de raiz unitária em primera diferença
(Figura 4.10).
2.0e−30
−6850
BIC
3
RSS
−6900
2
1.5e−30
1
−6950
0
1.0e−30
−1
−7000
−2
5.0e−31
−7050
−3
Como esperávamos, exatamente no ponto onde a média do processo dobra há o rompimento da
banda superior para o processo de flutuação escolhido. Todavia, observamos que o processo segue fora
do limite superior, provavelmente devido à sua natureza não-estacionária, que tende a fazer com que
processo.
O gráfico da função breakpoints() (Figura 4.10) mostra no eixo das coordenadas a soma dos
111
4.5. QUEBRAS ESTRUTURAIS
resı́duos quadrados (RSS, do inglês residual sum of squares) e o critério de informação bayesiano (BIC)
contra o número de quebras no eixo das ordenadas. Em teoria, ambos os valores apresentam seu mı́nimo
para o número de quebras ótimo contido na série. Os dois valores não vão sempre coincidir, mas, como
mostraram Bai & Perron (2003), o critério BIC não é tão confiável para modelos autoregressivos, sendo
nesses casos aconselhável se basear na soma dos resı́duos quadrados em conjunto com as evidências de
quebras de outros testes, uma vez que esse sempre é realizado sob a hipótese de existência de quebras.
Para a série simulada, o critério BIC tem seu mı́nimo para uma quebra enquanto que para a
RSS este está entre 1 e 512 . Todavia, dado que a série é não-estacionária e sabemos que inserimos uma
Outras implementações e variações dos testes acima podem ser encontrados no mesmo pacote.
Todavia, como alerta Kleiber & Zeileis (2008, p. 173), tal variedade de testes pode se tornar um
problema ao invés de uma solução e o conhecimento a priori da natureza do processo e sua história
sição de uma série temporal é o filtro de Hodrick-Prescott, apresentado no artigo Hodrick & Prescott
(1997). A proposta da decomposição é a remoção das flutuações cı́clicas de uma série temporal, tal
suavização resultaria em uma série temporal que representa as flutuações de longo prazo mais eviden-
Como visto em Enders (2008), nesta metolodogia se assume que a série temporal observada
é composta por uma tendência {µt } e um elemento estacionário yt − µt . A partir daı́, aplicamos a
minimização de erros quadráticos para obter os parâmetros do seguinte modelo:
T −1
1 T
λ
T ∑ (yt − µt )2 + T ∑ [(µt+1 − µt ) − (µt − µt−1 )]2 . (4.12)
i=1 i=2
4.5.3 Exemplo
Para fins didáticos, apliquemos a metodologia novamente à série temporal do IBC-Br (Figura
12 Para melhor visualização, omitimos os valores do gráfico para 6 quebras, que aumentam acima dos valores de 0
quebras.
112
CAPÍTULO 4. PROCESSOS NÃO-ESTACIONÁRIOS
Como a proposta do filtro HP é expurgar oscilações de curto prazo, deixando restar apenas a
tendência de longo prazo da série original, pode-se argumentar que aplicado à série do IBC-Br o filtro
sugere qual comportamento segue do produto potencial da economia. De fato, olhando a Figura 4.11,
observamos que a tendência de longo prazo da série, sugere que, tudo mais constante, o PIB do paı́s
tende a crescer.
Além disso, observamos as oscilações ocorridas na série no perı́odo apresentado, com maior
destaque para a grande queda observada em 2008, perı́odo em se sentiram os choques da crise financeira
internacional.
150
IBC−Br
4
140
Tendência
Componente Cíclica
2
130
0
IBC−Br
120
−2
−4
110
−6
100
2006 2008 2010 2012 2014 2016 2006 2008 2010 2012 2014 2016
Anos Anos
Todavia, como alerta Enders (2008), é necessário precaução na aplicação do filtro, dado que,
por suavizar a tendência da série, o filtro pode apresentar flutuações na parte irregular do processo que
de fato não existem. Além disso, French (2001) afirma que o filtro possui resultados mais confiáveis
quando aplicado a processos com ordem de integração 2 e os ruı́dos no processo têm distribuição
aproximadamente normal.
Não obstante, realizemos os testes de raiz unitária descritos na seção 4, exibindo apenas as
estatı́sticas de testes (teststat) e valores crı́ticos (cval), dado que as componentes determinı́sticas
113
4.6. CONSIDERAÇÕES FINAIS
[1] 0.1299836
> summary(kpss_ibc)@cval
10pct 5pct 2.5pct 1pct
critical values 0.119 0.146 0.176 0.216
#### Teste de Phillips-Perron ----
> summary(pp_ibc)@teststat
[1] -0.7728056
> summary(pp_ibc)@cval
1pct 5pct 10pct
critical values -3.480626 -2.883322 -2.578251
#### Teste DF-GLS ----
> summary(gls_ibc)@teststat
[1] -3.03545
> summary(gls_ibc)@cval
1pct 5pct 10pct
critical values -3.46 -2.93 -2.64
Resumindo, os testes ADF e KPSS nos sugerem que a série é não-estacionária, enquanto que
o teste de Phillips-Perron e DF-GLS sugerem estacionariedade, como ocorreu com o teste de Zivot-
Andrews anteriormente.
o que nos ajuda a identificar e categorizá-los. Para séries não-estacionárias devido à presença de uma
tendência determinı́stica, vimos que é suficiente estimar o coeficiente dessa componente e removê-la
da série original. Porém, caso desconfiamos que o motivo da não estacionariedade é uma tendência
estocástica ou presença de quebras estruturais, vimos que o mais adequado é, antes de tudo, o em-
prego de testes formais para identificação desses problemas, uma vez que as possı́veis soluções envolvem
transformações profundas na série, como a diferenciação. Finalmente, vimos algumas ferramentas para
inferir acerca da existência de quebras estruturais. Além disso, ao longo do texto fizemos um breve
estudo da série do Indicador de Atividade Econômica do Banco Central do Brasil (IBC-Br), determi-
nando sua clara não-estacionaridade, avaliando a presença de uma quebra estrutural e estimando seu
valor potencial.
114
5 Modelos SARIMA
5.1 Introdução
Este capı́tulo é dedicado à apresentação do modelo SARIMA. Para tal, fez-se uso da série
temporal (ST) de vendas de passagens aéreas, mais conhecida como Air Passengers. Trata-se de uma
série temporal mensal que registra o total de passageiros internacionais (em milhares) da linha aérea
Pan Am no perı́odo de janeiro de 1949 a dezembro 1960, nos EUA (Box & Jenkins, 1970).
gem de Box & Jenkins e a estrutura que melhor representa essa série temporal (ST) é um modelo
SARIMA(0,1,1)(0,1,1)12 . Dado a fama obtida por esse modelo, é equivalente dizer que uma ST segue
A abordagem de Box & Jenkins (1970) permite que valores futuros de uma série sejam previstos
tomando por base apenas seus valores presentes e passados. Tais modelos são chamados de modelos
autorregressivos integrados de médias móveis ou, simplesmente, ARIMA. Ao considerar relações sazo-
nais, o modelo é nomeado SARIMA. Um modelo SARIMA(p, d, q)(P, D, Q)s é representado da seguinte
forma:
onde:
θ (L) = (1 − θ1 L − θ2 L2 − ... − θ p Lq );
Θ(L) = (1 − Θ1 L − Θ2 L2s − ... − Θ p LQs );
∆ = 1 − L;
116
CAPÍTULO 5. MODELOS SARIMA
utilizando o software R, discutindo quais são os possı́veis pacotes disponibilizados pelo programa.
Conforme observaremos, essa é uma série temporal não estacionária nas partes sazonal e não sazonal e
Ao ler esse capı́tulo, pretende-se que o leitor esteja apto a modelar uma ST não complexa,
seguindo a proposta de Box & Jenkins, utilizando o software R. Para atingir tal objetivo, além dessa
introdução, esse capı́tulo está organizado da seguinte forma: na seção 2, entitulada Preliminares, vamos
definir o nosso diretório de trabalho e comentar sobre os pacotes que precisamos instalar para estimar e
analisar de maneira correta o modelo SARIMA; na seção 3, vamos explorar a ST de vendas de passagens
aéreas observando sua tendência, variância e padrão sazonal; na seção 4, vamos aprofundar o nosso
conhecimento sobre a ST que estamos trabalhando e discutir quais são os procedimentos que devemos
adotar para modelá-la; na seção 5, baseando-se no ciclo iterativo proposto por Box & Jenkins (1970),
iremos modelar a nossa ST e prevê-la 12 passos à frente; na seção 6, mostraremos como exportar as
previsões para arquivos .xlsx e .csv ; e, por fim, na seção 7 faremos as considerações finais.
5.2 Preliminares
Primeiramente, é preciso definir no R o diretório de trabalho. Isso é feito com a função setwd()
como se segue:
> setwd("digitar o endereço neste espaço")
parênteses vem o nome do pacote entre aspas. O leitor deve digitar o seguinte no console:
117
5.3. ANÁLISE EXPLORATÓRIA DA ST VENDAS DE PASSAGENS AÉREAS
– install.packages("urca") - Unit root and cointegration tests for time series data (Pfaff et al.,
2016).
(?).
– install.packages("xlsx") - Read, write, format Excel 2007 and Excel 97/2000/XP/2003 files
(Dragulescu, 2014).
Após a instalação, é preciso usar a função 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.
Nessa seção vamos ler a ST de vendas de passagens aéreas, analisar a sazonalidade e fazer uma
decomposição clássica da série temporal para saber quais são os principais componentes da mesma.
5.3.1 Leitura da ST no R
Por ser uma ST conhecida, o R já a disponibiliza na sua base de dados, tornando-se muito fácil
que há uma tendência crescente do número de passageiros. As oscilações de picos e vales podem ser
relacionadas às estações do ano, nas quais, mais especificamente, temos perı́odos de férias, feriados,
etc. Essas oscilações, como observadas, acontecem anualmente, o que nos faz acreditar que há presença
um comportamento decrescente da série, que permanece até dezembro. Isso se repete todos os anos.
118
CAPÍTULO 5. MODELOS SARIMA
Nesse sentido, apenas observando o gráfico podemos levantar as seguintes hipóteses sobre essa
ST:
longo dos anos. Esse comportamento é coerente com a teoria econômica, pois espera-se que ao
entre os meses com maiores e menores vendas também está aumentando, indicando aumento da
variância. Fato este também coerente com a teoria econômica pois ao aumentar o volume de
Sazonalidade: verifica-se um comportamento sazonal das vendas de passagens aéreas. Isto é,
nos meses de março (feriado de Páscoa) e julho (Dia da Independência e férias escolares) há
um aumento nas vendas quando comparado com os meses anteriores. Além disso, parece que a
Observe que a análise gráfica nos permitiu conhecer a nossa ST e é uma fase muito importante
para esse tipo de modelagem. Obviamente, como bons econometristas que somos, iremos testar esta-
tisticamente todos os pontos levantados anteriormente. Antes disso, vamos tentar entender um pouco
119
5.3. ANÁLISE EXPLORATÓRIA DA ST VENDAS DE PASSAGENS AÉREAS
pode verificar, esta ST apresenta média e variância não constantes, indı́cios de não estacionariedade
J F M A M J J A S O N D
Meses
Observando o gráfico (Figura 5.2), podemos ver que o número médio de passageiros (traços
horizontais) aumenta nos meses de férias (indı́cio de sazonalidade). Analisando os traços verticais,
verifica-se um aumento contı́nuo na venda de passagens aéreas ano a ano, indı́cio de não estacionarie-
5.3.3 Decomposição da ST
Por fim, seguindo a decomposição clássica, decompõe-se a ST utilizando filtros de médias móveis
- tendência + ciclo
- sazonalidade
vendidas foi de 104 (Nov-1949) e o máximo de 622 (Jul-1960). Ao observar o componente de tendência,
120
CAPÍTULO 5. MODELOS SARIMA
observed
400 100
40 150 300 450
trend
random seasonal
40 −40 0
0
−40
observa-se que a ST é fortemente afetada por esse componente (em torno de 85%). Com relação ao
componente sazonal, verifica-se que o mesmo também está presente nessa ST e gira em torno de 10%.
Sobrando uma pequena parte de componente irregular, o qual é levemente contaminado pela parte
Essa análise é interessante pois mostra que, basicamente, precisamos modelar as componentes
de tendência 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 é tão utilizada para exemplificar o uso dessa
metodologia.
Prosseguindo, nosso próximo passo será testar estatisticamente as percepções levantadas anteri-
omente. Isto é, a ST de vendas de passagens aéreas é realmente não estacionária na parte não sazonal?
Para responder aos questionamentos feitos na seção anterior, abordaremos os seguintes tópicos:
121
5.4. CONHECENDO A ST ANTES DE INICIAR A MODELAGEM BJ
Análise gráfica;
Já vimos que a análise gráfica nos mostrou indı́cios de não estacionariedade. Fica claro também
que, se fatiássemos a ST e calculássemos as médias de cada ano, observarı́amos uma tendência de alta
seguir mostra que as autocorrelações plotadas pela FAC não decrescem exponencialmente ou de forma
senoidal conforme descrito pela teoria de Box & Jenkins. Esse é mais um indicativo de que a ST é não
estacionária1 .
> require(TSA)
> acf(AirPassengers, lag.max = 36, drop.lag.0 = T)
0.6
ACF
0.2
−0.2
122
CAPÍTULO 5. MODELOS SARIMA
Nesse momento, o leitor atento pode estar se fazendo a seguinte pergunta: para que tantas
maneiras de se observar a estacionariedade se, ao observar o gráfico da ST (Figura 5.4), já está claro
que a mesma é não estacionária? A resposta a esse questionamento é que nenhuma das maneiras
vistas até o momento para verificar se a ST é ou não estacionária nos dá uma resposta clara (com
significância estatı́stica). Mais ainda, tais métodos não nos dizem quantas diferenciações precisaremos
fazer na ST em estudo para torná-la estacionária e qual é o tipo de não estacionariedade (determinı́stica
ou estocástica). Para obter essas respostas precisamos testar a estacionariedade através dos testes de
Os testes de raı́z unitária2 (RU) foram uma grande revolução na Econometria na década de
1980. Existe uma grande quantidade de testes e, basicamente, todos têm a mesma ideia, isto é, a
hipótese nula é que a série temporal possui uma raiz unitária (a ST é não-estacionária) e a hipótese
alternativa é que a série é estacionária, com exceção do teste KPSS que tem as hipóteses alternadas.
Apesar de haver uma grande quantidade de testes, nesse capı́tulo abordaremos apenas o teste
A regra de rejeição da hipótese nula funciona da seguinte forma: se o valor observado para a
estatı́stica de teste for inferior ao valor crı́tico, rejeitamos a hipótese nula e, portanto, concluı́mos que a
ST é estacionária de acordo com o nı́vel de confiança adotado previamente. Caso contrário, a ST será
não estacionária3 . A distribuição da estatı́stica de teste do teste ADF foram tabulados por MacKinnon
(1996).
123
5.4. CONHECENDO A ST ANTES DE INICIAR A MODELAGEM BJ
Como existem várias especificações consistentes com a não-estacionariedade, irão existir várias
formas de testá-la. Na prática, a questão importante é escolher a forma do teste de RU adequada para
Para executar o teste no R, usaremos a função ur.df() do pacote urca (Pfaff et al., 2016). Os
Antes de iniciar o teste é importante observar que o número de lags que serão incluı́dos na
equação do teste ADF será definido com base na análise dos resı́duos da regressão e não somente nos
critérios de informação.
Dando inı́cio aos testes, vamos testar a estacionariedade da ST considerando a equação sem
tendência e com constante. É importante você saber que testamos a equação com tendência deter-
minı́stica antes, porém o parâmetro dessa variável não foi significativo. Nessa fase o parâmetro mais
difı́cil e importante de definir é o lag, isto é, você precisa encontrar um número de lags que corrija a
autocorrelação dos resı́duos e seja parcimonioso com relação ao número de parâmetros da equação do
modelo.
o AIC. A seguir observamos o resultado do teste ADF e a FAC do resı́duos, a qual mostra que não há
presença de autocorrelação.
> 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)
124
CAPÍTULO 5. MODELOS SARIMA
0.10
ACF
0.00
−0.15
0 5 10 15 20 25 30 35
Lag
Figura 5.5: FAC dos Resı́duos: ST de Vendas de Passagens Aéreas (em milhares)
Ao analisar a estatı́stica de teste (tau2 = 1,8582) notamos que seu valor é superior ao valor crı́tico
associado ao nı́vel de confiança de 95% (-2,88). Dessa forma, conclui-se que a ST não é estacionária
O leitor pode visualizar mais informações sobre o teste de RU, como a equação ajustada por
Ao concluir que a ST tem raiz unitária, precisamos descobrir o número de diferenciações neces-
sárias para torná-la estacionária. É importante observar que esse é apenas um exercı́cio para que o
leitor observe o comportamento da ST e da FAC antes e após a diferenciação, pois, como veremos nas
próximas seções, faremos as correções de não estacionariedade da ST na própria função que estimará
o modelo SARIMA.
Dado que a nossa ST é não estacionária, vamos tentar torná-la estacionária fazendo uma dife-
renciação e vamos observar o gráfico (Figura 5.6) e a FAC (Figura 5.7) novamente.
125
5.4. CONHECENDO A ST ANTES DE INICIAR A MODELAGEM BJ
Figura 5.6: ST de Vendas de Passagens Aéreas (em milhares) com uma diferença
Observe que ao aplicar a diferenciação, a ST aparenta estar estacionária na média, mas a vari-
ância é crescente ao longo do tempo. Como sabemos, um dos pressupostos da teoria Box & Jenkins
é que a ST seja também estacionária na variância. Para tal, iremos passar o log na ST em questão
(Figura 5.8).
analisarmos a FAC (Figura 5.9), a pergunta que fica é: essa FAC é adequada para idenficarmos a
Com relação a pergunta feita na seção anterior, o leitor atento já observou que nos lags sazonais4
Para corrigir esse problema precisamos diferenciar a parte sazonal, para isso diferenciaremos a
ST já diferenciada na parte não sazonal. Tal procedimento é feito mudando o parâmetro lag da função
4 Observeque na FAC gerada pelo R os lags sazonais são 1(=12), 2(=24), 3(=36), etc.
5 Existemtestes estatı́sticos para avaliar a presença de não estacionariedade sazonal, um dos mais conhecidos é o
teste de HEGY (Hylleberg et al., 1990).
126
CAPÍTULO 5. MODELOS SARIMA
0.6
ACF
0.2
−0.2
Figura 5.7: FAC: ST de Vendas de Passagens Aéreas (em milhares) com uma diferença
Observe que agora a FAC apresenta cortes bruscos nos lags 1 e 12 (Figura 5.10) e não apresenta
mações anteriores. O valor da estatı́stica de teste (tau2 = -4,0398) é inferior ao valor crı́tico (-2,88) ao
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
Ao analisar a FAC para os resı́duos do teste ADF (Figura 5.11), o leitor pode notar que alguns
lags aparecem significativos, porém não são relevantes (apresentam correlação muito baixa). Dessa
127
5.5. MODELANDO A ST
Figura 5.8: Logarı́timo da ST de Vendas de Passagens Aéreas (em milhares) com uma diferença
5.5 Modelando a ST
(Hamilton, 1994).
Os modelos de Box & Jenkins são usados para séries originalmente estacionárias ou tornadas es-
tacionárias por meio de diferenciação. Geralmente, as séries econômicas são não estacionárias, devendo
A metodologia Box & Jenkins para séries temporais estacionárias e construção dos modelos
ARIMA segue um ciclo iterativo composto por cinco partes (Granger & Newbold, 1976):
de p,q e P,Q.
4. Diagnóstico: faz-se uma análise dos resı́duos (devem ser ruı́do branco) e testes de verificação
(Ljung-Box) para ver se o modelo sugerido é adequado. Em seguida, verifica-se os modelos que
apresentam menores valores para os critérios AIC e BIC. Caso haja problemas no diagnóstico,
128
CAPÍTULO 5. MODELOS SARIMA
0.6
ACF
0.2
−0.2
0 1 2 3 4
Lag
Figura 5.9: FAC: Logarı́timo da ST de Vendas de Passagens Aéreas (em milhares) com uma diferença
volta-se à identificação.
5. Modelo definitivo: para previsão ou controle. Verificar quais modelos têm as melhores medidas
RMSE (Root Mean Square Error ) e MAPE (Mean Absolute Percentage Error ) (este não vale para
dados próximos de zero, sendo preferı́vel a utilização de outro método para a análise dos erros),
por exemplo.
SARIMA são usados para séries temporais que apresentam comportamento periódico em s espaços de
tempo, isto é, quando ocorrem desempenhos semelhantes a cada intervalo de tempo Box & Jenkins
5.5.1 Identificação
Como sabemos, o primeiro passo para identificar o nosso modelo SARIMA é observando a FAC
e a FACP. Como os modelos propostos por Box & Jenkins (1970) são da década de 1970, o esforço
computacional para estimar o modelo era muito grande, portanto essa fase era fundamental para se
ter um modelo adequado à ST em análise. Atualmente, graças aos avanços computacionais, observar
a FAC e a FACP é útil, principalmente, para se ter uma ideia inicial do modelo a ser testado, pois,
como veremos mais adiante, o ideal é escolher um modelo que minimize os critérios de informação.
passangens aéreas diferenciada na parte sazonal e não sazonal e com transformação logarı́tmica.
129
5.5. MODELANDO A ST
0.2
0.0
ACF
−0.2
−0.4
0 1 2 3 4
Lag
Figura 5.10: Logarı́timo da ST de Vendas de Passagens Aéreas (em milhares) com diferença sazonal e
não sazonal
> 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)
Observando os gráficos (Figura 5.12) com um pouco de boa vontade podemos pensar nos se-
guintes modelos:
- SARIMA(1,1,1)(1,1,1) - corte brusco na FAC e na FACP nas partes sazonais e não sazonais;
sazonais.
Uma vez identificado os possı́veis modelos, passa-se para o próximo passo: a estimação.
5.5.2 Estimação
Para estimar o modelo, deve-se testar as possibilidades dos SARIMAs que idealizamos a partir
da visualização da FAC e da FACP. Para tanto, utilizaremos a função Arima() do pacote forecast.
Com relação ao método de estimação dos parâmetros neste trabalho, usaremos o default do R, que
Dessa forma, o primeiro modelo a ser estimado será uma SARIMA(1,1,1)(1,1,1)12 . Observe que
na função Arima() a variável de entrada é a ST original, mas ajustar o argumento lambda em zero
permite que seja feita a tranformação logarı́tmica na série. Também não é necessário diferenciar a ST
130
CAPÍTULO 5. MODELOS SARIMA
0.2
0.1
ACF
0.0
−0.2
0 5 10 15 20 25 30 35
Lag
Figura 5.11: FAC : Diferença do Logarı́timo da ST de Vendas de Passagens Aéreas (em milhares), com
1 diferença
0.2
0.1
Partial ACF
0.0
ACF
−0.1
−0.2
−0.3
−0.4
0 1 2 3 4 0 1 2 3 4
Lag Lag
Figura 5.12: Logarı́timo da ST de Vendas de Passagens Aéreas (em milhares) com diferença sazonal e
não sazonal
> library("forecast")
> fit.air <- Arima(AirPassengers, order = c(1,1,1), seasonal = c(1,1,1),
+ method = "ML", lambda = 0)
> fit.air
131
5.5. MODELANDO A ST
Series: log(AirPassengers)
ARIMA(1,1,1)(1,1,1)[12]
Coefficients:
ar1 ma1 sar1 sma1
0.1668 -0.5616 -0.0994 -0.497
s.e. 0.2458 0.2114 0.1540 0.136
uma função no R chamada t.test(), o código da função está disponibilizado a seguir. Consideramos
> # funç~
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 <- data.frame(Coef = coef, sd = se, t = t, rej_H0 = ok)
+ return(resul)
+ }
Coef sd t rej_H0
ar1 0.16679124 0.2457980 0.6785705 FALSE
ma1 -0.56163441 0.2114211 2.6564723 TRUE
sar1 -0.09938487 0.1539918 0.6453907 FALSE
sma1 -0.49700743 0.1360485 3.6531644 TRUE
Como podemos observar, os parâmetros da parte AR não sazonal e sazonal são não significativos,
logo, tais parâmetros não devem permanecer no modelo. Então, estes foram retirados e o modelo foi
reestimado.
> fit.air
132
CAPÍTULO 5. MODELOS SARIMA
Series: AirPassengers
ARIMA(0,1,1)(0,1,1)[12]
Coefficients:
ma1 sma1
-0.4018 -0.5569
s.e. 0.0896 0.0731
Conforme pode ser observado, temos um modelo SARIMA(0,1,1)(0,1,1)12 onde todos os parâ-
metros são significativos e que minimiza os critérios de informação (BIC, AIC e AICc)6 .
5.5.3 Diagnóstico
Após definir a melhor estrutura e estimar os parâmetros do modelo, outra etapa fundamental
é a fase de diagnóstico do modelo. Nesta fase as seguintes caracterı́sticas dos resı́duos precisam ser
analisadas e confirmadas:
Normalidade.
Para uma visão geral dos resı́duos, utiliza-se a função tsdiag(). Esta disponibiliza a distribui-
ção dos resı́duos padronizados, a função de autocorrelação dos resı́duos e os p-valores da estatı́stica
do teste Ljung-Box. Conforme podemos observar no primeiro gráfico a seguir, os dados aparentam
estar distribuı́dos simetricamente em torno da média zero, indicação de distribuição normal. Observe
também que não temos nenhuma informação discrepante (muito fora do intervalo [-3,3]). A única
exceção é o resı́duo de janeiro de 1954, neste caso, poderı́amos testar se a venda de passagens aéreas
O segundo gráfico disponibilizado pela função tsdiag() é a FAC dos resı́duos. Este gráfico é
extremamente útil para observar se há a presença de autocorrelação linear nos resı́duos. Conforme
verificamos, não há nenhum lag significante, logo, toda a parte linear da ST de vendas de passagens
6 Para maiores detalhes sobre os critérios de informação ver Akaike (1973) e Schwarz et al. (1978).
7 Existem testes especı́ficos para a detecção de outliers. Para maiores detalhes ver Chang et al. (1988) e Tsay (1988).
133
5.5. MODELANDO A ST
O terceiro gráfico mostra o p-valor da estatı́stica Ljung-Box para diferentes defasagens após
a defasagem 14. De acordo com o gráfico, verificamos que não rejeitamos a hipótese nula da não
existência de dependência serial para todas as defasagens. Tal resultado está em consonância com a
análise feita anteriormente, isto é, não há dependência linear nos resı́duos. Contudo, este gráfico não é
confiável uma vez que os graus de liberdade usados para calcular os p-valores são baseados nos lags e
não em (lags - (p+q)). Isto é, o processo usado para calcular os p-valores não leva em conta o fato de
os resı́duos terem sido gerados a partir de um modelo ajustado. Portanto, precisamos tomar cuidado
5 10 15 20
Lag
0.8
P−values
0.4
0.0
5 10 15 20
Number of lags
Bem, conforme observamos a função tsdiag() já nos deu bastante informação sobre os nossos
resı́duos, entretanto, vamos realizar alguns testes estatı́sticos especı́ficos para cada uma das caracterı́s-
134
CAPÍTULO 5. MODELOS SARIMA
Primeiramente, vamos testar a autocorrelação linear dos resı́duos através do teste de ?. Como
sabemos o teste de Ljung Box nos dá a presença ou não de autocorrelação serial dos resı́duos para o L
primeiros lags. Outro teste de autocorrelação residual muito conhecido é o teste de Durbin & Watson8 ,
data: fit.air$residuals
X-squared = 26.446, df = 22, p-value = 0.233
Conforme podemos observar, o resultado do teste de Ljung Box mostra que a 95% de confiança
não rejeitamos a hipótese nula de não existência de autocorrelação serial até o lag 249 . É importante
observar o argumento fitdf, neste caso igual a 2 (p+q), pois o teste é feito nos resı́duos de um modelo
variância. Para tal, faremos o teste Multiplicador de Lagrange para heterocedasticidade condicional
data: fit.air$residuals
Chi-squared = 14.859, df = 12, p-value = 0.2493
Conforme mostrado pelo teste, a hipótese nula é que não há presença de efeito ARCH. Dessa
forma, dado o valor do p-valor, não rejeitamos a hipótese nula a 95% de confiança, logo, a variância é
estacionária.
Por fim, precisamos testar a normalidade do nosso resı́duo. Para tal, faremos o teste de Jarque
data: fit.air$residuals
JB = 5.2265, p-value = 0.0555
135
5.5. MODELANDO A ST
Os resultados mostram que a 95% de confiança não rejeitamos a hipótese nula de normalidade.
Feito o diagnóstico dos resı́duos, o nosso próximo passo será fazer as previsões.
5.5.4 Previsão
Após fazermos o diagnóstico dos resı́duos e concluirmos que estamos modelando toda a parte
linear da ST de vendas de passagens aéreas, o nosso próximo passo é fazer a previsão. Afinal de contas,
esse é nosso objetivo final. Nessa etapa, basicamente, queremos conhecer a nossa previsão, saber qual
Para a previsão utilizaremos o pacote forecast e a função com o mesmo nome. Observe que, ao
usar esta função, precisamos definir os seguintes parâmetros: (a) object: output do modelo SARIMA
estimado; (b) h: horizonte de previsão (quantos passos à frente queremos prever); e (c) level : nı́vel de
Observando o gráfico (Figura 5.14), parece que fizemos uma boa previsão. Porém, uma maneira
mais adequada de certificar isso é analisando as métricas de previsão. Conforme podemos observar, as
métricas a seguir confirmam a análise gráfica. Analisando o MAPE, por exemplo, que é uma medida
percentual do módulo dos erros e que não é contaminada pela escala da ST, observamos que o erro de
136
CAPÍTULO 5. MODELOS SARIMA
> accuracy(fit.air)
Training set error measures:
ME RMSE MAE MPE MAPE MASE
Training set 0.000573059 0.03504882 0.02626034 0.01098891 0.4752816 0.2169522
Imagine o seguinte: você trabalha em uma empresa na área financeira e seu chefe lhe pede a
previsão das vendas de um determinado produto para os próximos 12 meses. Ainda, imagine também
que ninguém na sua empresa conheça o R (não é tão dificı́l de imaginar isso, certo?!).
A solução para o primeiro problema você já tem e já aprendeu ao longo desse capı́tulo. A solução
para o segundo problema pode ser treinar toda a equipe da área financeira para trabalhar com o R ou
então extrair as previsões e os intervalos de confiança estimados para um programa mais conhecido
Como veremos, essa tarefa é muito fácil 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")
Neste capı́tulo aprendemos empiricamente como modelar uma série temporal mensal com base
na metodologia proposta por Box & Jenkins utilizando o software R. Aprendemos como fazer uma
análise exploratória de uma ST, quais são os possı́veis problemas que ela pode ter para ser modelada
utilizando o arcabouço proposto por Box & Jenkins e como consertar esses problemas, através, por
Foram abordados também alguns pacotes úteis para esse tipo de modelagem, discutimos algumas
funções e chamamos a atenção para algumas limitações das mesmas. Apesar de ter sido uma experiência
interessante, sabemos que ainda ficaram faltando alguns pontos a serem abordados, como por exemplo,
para corroborar a performance do nosso modelo. Segundo, essa ideia de bom ou ruim é muito relativa, isto é, é sempre
bom termos um modelo benchmark para compararmos nossas previsões.
137
5.7. CONSIDERAÇÕES FINAIS
não tratamos da identificação e correção de possı́veis outliers, não mostramos como corrigir a presença
Nesse sentido, é importante que o leitor que estiver usando esse manual para construir o seu
modelo SARIMA tenha ciência de suas limitações e busque, sempre que possı́vel, aprofundar o seu
138
6 Ajuste Sazonal
6.1 Introdução
Iniciaremos esse capı́tulo com uma breve descrição sobre a composição de uma série temporal.
Segundo a decomposição clássica, uma série temporal pode ser decomposta em quatro componentes
não observáveis: tendência, sazonalidade, ciclo e erro. A sazonalidade, que é o objeto de estudo desse
capı́tulo, é causada por movimentos oscilatórios de mesma periodicidade que ocorrem em perı́odo
intra-anual, como variações climáticas, férias escolares, feriados fixos, entre outros. A ocorrência desses
eventos pode levar a conclusões inadequadas a respeito da série temporal em estudo. Por exemplo, a
oferta de emprego costuma aumentar no final do ano devido às festas natalinas, isto é, há uma demanda
maior por bens e serviços, elevando o nı́vel de contratações de pessoas. Porém, como a maioria das
vagas é temporária, geralmente, há diminuição no nı́vel de pessoal ocupado no perı́odo seguinte. Para
a análise econômica, o importante é detectar a diferença entre o que ocorre periodicamente e o que
de fato ocorre de diferente naquele perı́odo especı́fico, possibilitando observar a tendência e o ciclo da
variável.
Dessa forma, precisamos de uma ferramenta adequada que consiga remover a componente sa-
zonal. A remoção da sazonalidade de uma série temporal é chamada de ajuste sazonal ou dessazona-
lização. Nesse capı́tulo, nos dedicaremos a aprender como removê-la utilizando o programa de ajuste
sazonal X-13ARIMA-SEATS (ou simplesmente X-13) desenvolvido e mantido por U.S. Census Bureau.
O programa é mundialmente utilizado por órgãos de estatı́stica e em alguns lugares ainda em sua ver-
ı́ndice de produção industrial geral do Brasil, esta estimada pelo Instituto Brasileiro de Geografia e
Estatı́stica (IBGE).
Embora nos dediquemos a apresentar o X-13, é importante que o leitor saiba que existem outras
metodologias para remover a sazonalidade de uma série temporal. Veja alguns exemplos:
c. Structural Models (Harvey & Shepard, 1993; Plosser, 1979; Koopman et al., 2009);
e. TRAMO-SEATS (Gómez & Maravall, 1998; Hungarian Central Statistical Office, 2007);
140
CAPÍTULO 6. AJUSTE SAZONAL
Para que o objetivo do capı́tulo seja atingido, dividimos o capı́tulo em outras quatro seções: na
seção 6.2 apresentamos um breve resumo sobre o X-13; nas seções 6.3 e 6.4 o leitor verá o passo-a-passo
sugerido para dessazonalizar uma série temporal no R; na seção 6.5 aplicaremos todo o procedimento
aprendido na série temporal do ı́ndice de produção industrial geral do Brasil; e na seção 6.6 relatamos
por U.S Census Bureau com o apoio do Bank of Spain. O programa é a junção dos softwares X12-
ARIMA e TRAMO/SEATS com melhorias. As melhorias incluem uma variedade de novos diagnósticos
que ajudam o usuário a detectar e corrigir inadequações no ajuste, além de incluir diversas ferramentas
que repararam problemas de ajuste e permitiram um aumento na quantidade de séries temporais que
temporal, isto é, uma correção antes de ser feito, de fato, o ajuste sazonal. Alguns eventos atı́picos e/ou
não sazonais como, por exemplo, efeitos do calendário (trading days, working days, moving holidays,
etc), greves, catástrofes, entre outros, podem afetar o padrão sazonal da série temporal e, consequen-
temente, gerar um ajuste de qualidade inferior. O tratamento desses eventos (pré-ajuste) deve ser
oficial, uma nota técnica produzida por nós sobre o mesmo tema, dessa vez aplicado às séries temporais
Para que seja possı́vel dessazonalizar uma série temporal no R com o X-13, é necessário apenas
instalar e carregar o pacote seasonal, este desenvolvido por Sax (2015a). Nas primeiras versões im-
plementadas, o usuário deveria fazer o download do programa executável do X-13 no site do Census
141
6.4. ALGORITMO DE AJUSTE SAZONAL
> install.packages("seasonal")
> library(seasonal)
Sugerimos que após a instalação e o carregamento do pacote, o leitor verifique se, de fato, poderá
utilizar o X-13. Para isso, utilize a função checkX13() do pacote seasonal. Se a instalação funcionou
> checkX13()
seasonal is using the X-13 binaries provided by x13binary
X-13 installation test:
- X13_PATH correctly specified
- binary executable file found
- command line test run successful
- command line test produced HTML output
- seasonal test run successful
Congratulations! 'seasonal' should work fine!
Após executar os passos da seção 6.3, podemos iniciar as etapas de um ajuste sazonal que,
1. Análise Gráfica;
A análise gráfica de uma série temporal permite visualizar suas caracterı́sticas para uma boa
modelagem, por exemplo: seu padrão sazonal, quebras estruturais, possı́veis outliers, se há necessidade
por exemplo, outliers e efeitos do calendários (Páscoa, Carnaval, etc). Na segunda etapa é feita a
A execução do programa no modo automático pode trazer um ajuste sazonal de boa qualidade.
Nesse modo, o programa verifica, entre outras coisas, se há necessidade de transformação log nos
dados; se existem outliers (additive, level shift e temporary change); a ordem do modelo ARIMA; se há
efeitos de calendário). Essas verificações automáticas podem poupar o tempo do usuário e ajudá-lo na
142
CAPÍTULO 6. AJUSTE SAZONAL
escolha de um bom modelo, principalmente na etapa do pré-ajuste. No entanto, este modelo precisa
QS statistic: verifica a existência de sazonalidade em uma série temporal. A Tabela 6.1 resume
em quais séries temporais o programa calcula o teste de sazonalidade. Em um bom ajuste sazonal,
É importante saber que se a série possui mais de 8 anos de dados mensais (96 observações) o
teste de sazonalidade é executado na série temporal inteira e também nos últimos oito anos; caso
Codificação Significado
qsori série original
qsorievadj série original corrigida por outliers
qsrsd resı́duos do modelo SARIMA
qssadj série com ajuste sazonal
qssadjevadj série com ajuste sazonal corrigida por outliers
qsirr componente irregular
qsirrevadj componente irregular corrigida por outliers
Tabela 6.1: Séries temporais disponı́veis para o diagnóstico dado pela estatı́stica QS
Ljung-Box statistic: o teste de Ljung & Box (1978) verifica a existência de autocorrelação
(hipótese nula) em uma série 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ão sejam
autocorrelacionados.
conjunto de dados é normal (hipótese nula). O X-13 mostra o resultado desse teste aplicado aos
Gráfico SI ratio: útil para verificar se a decomposição das componentes da série temporal foi
Mais informações ver X13-ARIMA-SEATS Reference Manual Acessible HTML Output Version (U.S. Census Bureau,
2015).
2 Se for utilizada a decomposição aditiva (sem transformação log) então SI é a soma da componente sazonal e da
143
6.5. APLICAÇÃO NO ÍNDICE DE PRODUÇÃO INDUSTRIAL
Gráfico Spectral3 : é uma ferramenta que alerta se a série temporal possui influência de efeitos
sazonais e de trading days. O gráfico é feito para a série original, para a série com ajuste sazonal
(se o ajuste sazonal for executado), para a série da componente irregular e para os resı́duos do
modelo SARIMA. Se o objetivo é realizar um ajuste sazonal na série temporal, então é esperado
a identificação de efeitos sazonais no gráfico spectral da série original. Se o ajuste sazonal foi feito
adequadamente, espera-se que tais efeitos não sejam encontrados nas séries disponı́veis restantes.
Após a análise de todas as ferramentas de diagnóstico, caso alguma não conformidade seja detec-
tada no modelo automático, o usuário deve reajustar o modelo e diagnosticá-lo novamente. Algumas
alterações que podem ajudar a melhorar o ajuste são: rever a necessidade de transformação nos dados
(isso pode estabilizar a variância); modificar a ordem do modelo SARIMA; e inserir ou retirar outliers
Nessa seção o leitor aprenderá a dessazonalizar a série temporal do Índice de Produção Industrial
(IBGE, 2015b). Escolhemos essa variável pois a produção industrial de uma região geralmente é afetada
pelas épocas do ano. Por volta de outubro, por exemplo, é esperado um aumento no nı́vel de produção
devido às comemorações natalinas em dezembro. Nos meses seguintes, no entanto, é esperado uma
queda desse nı́vel. Com ajuste sazonal, a série de produção industrial poderá ser interpretada sem os
O ı́ndice de produção industrial geral do Brasil é estimado mensalmente pelo Instituto Brasileiro
de Geografia e Estatı́stica (IBGE) pela Pesquisa Industrial Mensal - Produção Fı́sica (PIM-PF) desde
a década de 1970. Os dados podem ser descritos como um ı́ndice sem ajuste sazonal com base fixa
em 2012 (média de 2012 = 100) e compreendem o espaço de tempo de janeiro de 2002 a dezembro de
144
CAPÍTULO 6. AJUSTE SAZONAL
Para esboçar de forma simples o gráfico de uma série temporal, utiliza-se a função plot().
Outro gráfico que pode ajudar a entender o comportamento de séries temporais é dado pela função
monthplot(). Nele é possı́vel comparar a série histórica de cada mês do ano. A análise gráfica da série
100 110
pim
média
pim.ts
pim.ts
90
90
80
80
70
70
(a) Série histórica (plot) (b) Série histórica por mês (monthplot)
a. tem caracterı́stica sazonal, uma vez que de janeiro a outubro o ı́ndice tem comportamento cres-
cente e nos outros dois meses decrescente. Esse comportamento se repete em todos os anos;
b. apresentava uma tendência crescente antes da crise econômica (de 2008) e parece estar estável
c. parece ter variação constante, não necessitando que os dados sejam transformados para estabilizá-
la;
d. foi extremamente afetado pela crise econômica de 2008. Notamos que o ı́ndice atingiu um valor
145
6.5. APLICAÇÃO NO ÍNDICE DE PRODUÇÃO INDUSTRIAL
> plot(pim.ts)
> monthplot(pim.ts, col.base = 2, lty.base = 2)
> legend("topleft", legend = c("pim", "média"),
+ lty = c(1,2), col = c(1,2), bty = "n")
A função seas() do pacote seasonal4 desempenhará o papel de efetuar o ajuste sazonal tanto
no modo automático como com especificações definidas de acordo com a necessidade do usuário.
trading days, ano bissexto, entre outras variáveis5 já disponibilizadas pelo X-13;
variáveis de regressão;
interesse como, por exemplo, log (transformação logarı́tmica), none (nenhuma transformação)
A função seas(), no entanto, requer apenas a série temporal em que se pretende fazer o ajuste
sazonal para o seu funcionamento. Os outros argumentos, nem todos exemplificados anteriormente,
funcionarão no modo automático. Logo, para executar o ajuste sazonal em um objeto de série temporal
146
CAPÍTULO 6. AJUSTE SAZONAL
Call:
seas(x = pim.ts)
Coefficients:
Mon Tue Wed Thu
0.0055644 0.0053722 0.0022402 0.0053296
Fri Sat Easter[1] LS2008.Dec
0.0004133 -0.0002806 -0.0242756 -0.1334241
AO2011.Feb AO2014.Feb MA-Seasonal-12
0.0612627 0.0646419 0.6791109
No modelo ajustado automaticamente foram detectados efeitos da Páscoa, de dias da semana e
também de outliers. Foi detectado um outlier level shift no mês de dezembro de 2008 (LS2008.Dec),
mês extremamente afetado pela crise econômica. Outros dois outliers, não esperados visualmente pela
análise da Figura 6.1, foram detectados em fevereiro de 2011 (AO2011.Feb) e 2014 (AO2014.Feb). Esses
Para avaliar o ajuste sazonal feito no modo automático, vamos precisar dos resultados do tópico
3 apresentados na seção 6.4. Um breve resumo desses resultados são obtidos pela função summary().
> summary(ajuste)
Call:
seas(x = pim.ts)
Coefficients:
Estimate Std. Error z value Pr(>|z|)
Mon 0.0055644 0.0023379 2.380 0.0173 *
Tue 0.0053722 0.0023763 2.261 0.0238 *
Wed 0.0022402 0.0022930 0.977 0.3286
Thu 0.0053296 0.0023305 2.287 0.0222 *
Fri 0.0004133 0.0023074 0.179 0.8578
Sat -0.0002806 0.0023164 -0.121 0.9036
Easter[1] -0.0242756 0.0043743 -5.550 2.86e-08 ***
LS2008.Dec -0.1334241 0.0182831 -7.298 2.93e-13 ***
AO2011.Feb 0.0612627 0.0129063 4.747 2.07e-06 ***
AO2014.Feb 0.0646419 0.0140587 4.598 4.27e-06 ***
MA-Seasonal-12 0.6791109 0.0695104 9.770 < 2e-16 ***
---
Signif. codes: 0 *** 0.001 ** 0.01 * 0.05 . 0.1 1
foi significativo ao considerar nı́vel de significância de 5%. O mesmo pode ser dito para o efeito dos
147
6.5. APLICAÇÃO NO ÍNDICE DE PRODUÇÃO INDUSTRIAL
três outliers e da variável que reflete a Páscoa (Easter[1]). Embora nem todos os dias da semana
sejam significativos considerando nı́vel de 5% de significância, três dias foram (Mon, Tue e Thu), e isso
é suficiente para mantê-los no modelo e concluir que há indı́cios de que a produção industrial seja
O leitor também pode observar que a hipótese de normalidade dos resı́duos foi rejeitada com 95%
de confiança e a transformação log foi aplicada na série original, embora no inı́cio tenhamos acreditado
que isso não era necessário ao analisar a série graficamente. O teste de Ljung & Box, sugere não haver
Além desses resultados, criaremos um gráfico spectral (Figura 6.2) para analisar se há efeitos da
sazonalidade e de trading days. O gráfico pode ser feito no R após extrair o spectral output utilizando
a função series() do pacote seasonal e transformá-lo em um objeto da classe data.frame. Você pode
usar o código, a seguir, para extrair o spectral output para a série original6 (sp0).
−10
−32.5
−20 −35.0
−37.5
−30
−40.0
−42.5
−40
0 20 40 60 0 20 40 60
−30.0
0
−32.5
−10
−35.0
−37.5
−20
−40.0
0 20 40 60 0 20 40 60
6 Para observar a codificação para as outras séries além da série original ver (U.S. Census Bureau, 2015, cap. 7, pág.
194).
148
CAPÍTULO 6. AJUSTE SAZONAL
> 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(" ") + xlab(" ") + theme_bw() +
+ ggtitle("Spectral plot of the first-differenced original series") +
+ theme(plot.title = element_text(lineheight=2, face="bold",size = 16))
O gráfico spectral (Figura 6.2) mostra indı́cios de efeitos de sazonalidade na série original (Figura
6.2a), visto que nas frequências sazonais (10, 20, 30, 40, 50) a série temporal toma forma de picos bem
definidos. Já nas frequências de trading days (linha pontilhada em azul, aproximadamente 42 e 52)
não se pode concluir o mesmo pois não há forma de picos. Para as outras três séries não foi detectado
picos de sazonalidade, porém, há leves indı́cios de efeitos de trading days, o que é estranho pois foi
As suposições de sazonalidade na série original não são rejeitadas com a análise da estatı́stica
QS. Os testes de sazonalidade nas demais séries (Tabela 6.1 da seção 6.4), podem ser vistos utilizando
Uma vez que a série pim.ts apresenta mais de 96 observações, o teste de sazonalidade foi
calculado para a série completa e para os 8 anos mais recentes. Nota-se que o p-valor é pequeno tanto
para série original (qsori) como para a série original corrigida por outliers (qsorievadj), isto é, não
há evidências de que a série do ı́ndice de produção industrial não seja sazonal. Nas demais séries,
pelo p-valor ser próximo de 1, conclui-se o contrário: há evidências de não sazonalidade nas séries
removê-la.
149
6.5. APLICAÇÃO NO ÍNDICE DE PRODUÇÃO INDUSTRIAL
Mais uma ferramenta para avaliar a qualidade do ajuste sazonal é dado pelo gráfico SI ratio.
SI
Fator sazonal
Média Fator Sazonal FS
1.00
0.90
J F M A M J J A S O N D
tracejada é a média dos fatores sazonais naquele mês. Pode-se observar que o fator sazonal tende a
acompanhar o SI ratio. Isso significa que a componente SI ratio não é dominada pela componente
irregular, isto é, os erros tem um comportamento estável em torno de zero e a decomposição das
componentes não observáveis da série temporal foi feita adequadamente. No entanto, note que para
o mês de fevereiro (em que dois outliers foram encontrados) o SI ratio é dominado pela componente
irregular.
Pode-se concluir, então, que o ajuste sazonal automático já forneceu bons resultados, porém,
como alguns pressupostos necessários (normalidade dos resı́duos) não foram confirmados estatistica-
Após a análise do ajuste sazonal automático, verificamos que o modelo precisava ser corrigido.
O IBGE, utilizando o método X-12-ARIMA, adiciona ao modelo de ajuste sazonal, além de efeitos de
150
CAPÍTULO 6. AJUSTE SAZONAL
trading days e Páscoa, o efeito do Carnaval (IBGE, 2015c). Esse efeito também será acrescentado e
esperamos que as alterações corrijam a normalidade dos resı́duos e o novo modelo tenha um critério
Para criar a variável de Carnaval, vamos utilizar a função genhol() do seasonal que apresenta
os seguintes argumentos:
start: inteiro, desloca o ponto inicial do feriado. Use valores negativos se o efeito começa antes
da data especı́fica;
end: inteiro, desloca o ponto final do feriado. Use valores negativos se o efeito termina antes da
data especı́fica;
Para os argumentos start e end escolhemos colocar uma janela de 3 dias antes e um dia após
o feriado, uma vez que no Brasil o feriado dura quase uma semana, mas o leitor pode se sentir livre
para alterar esses argumentos. Ao argumento frequency foi atribuı́do 12 pois os dados são 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ável 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ático, ou apenas uma variável que combinasse essas informações especı́ficas (ver nota
de rodapé 5). Ambos os tipos foram testados com e sem o efeito do ano bissexto. E a opção que
melhor7 caracterizou o modelo foi apenas uma variável que indicasse efeitos do dia da semana mais
o efeito de anos bissextos e esta é indicada por td1coef. É importante o leitor saber que a variável
que representa os trading days é dada pelo programa e não é calculada considerando os feriados do
calendário brasileiro.
> ajuste_novo <- seas(pim.ts, transform.function = "none",
+ xreg = carnaval, regression.variables = "td1coef")
> summary(ajuste_novo)
151
6.5. APLICAÇÃO NO ÍNDICE DE PRODUÇÃO INDUSTRIAL
Call:
seas(x = pim.ts, xreg = carnaval, transform.function = "none",
regression.variables = "td1coef")
Coefficients:
Estimate Std. Error z value Pr(>|z|)
carnaval -3.01264 0.48992 -6.149 7.78e-10 ***
Leap Year 2.41786 0.73006 3.312 0.000927 ***
Weekday 0.35307 0.03052 11.570 < 2e-16 ***
Easter[1] -2.98575 0.41402 -7.212 5.53e-13 ***
AO2008.Nov -6.81580 1.49880 -4.548 5.43e-06 ***
LS2008.Dec -17.10157 1.79419 -9.532 < 2e-16 ***
AO2011.Dec 5.06899 1.18449 4.279 1.87e-05 ***
AR-Nonseasonal-01 -0.28248 0.07944 -3.556 0.000377 ***
MA-Seasonal-12 0.52212 0.07772 6.718 1.85e-11 ***
---
Signif. codes: 0 *** 0.001 ** 0.01 * 0.05 . 0.1 1
Com as mudanças inseridas na função seas(), o modelo SARIMA também foi modificado de
(0 1 0)(0 1 1) para (1 1 0)(0 1 1) com todos os parâmetros significativos com 95% de confiança.
assim, podemos concluir que a quantidade de dias da semana e o ano bissexto influenciam na produção
industrial brasileira.
O leitor também deve ter reparado que as alterações nos permitiram concluir que os resı́duos
seguem distribuição normal, que os critérios de informação AICc e BIC são consideravelmente inferiores
ao do ajuste automático e que o programa encontrou mais um outlier além dos relacionados a crise
econômica de 2008 (AO2011.Dec). O teste de Ljung & Box não mostrou autocorrelação residual até o
lag 24.
A análise do gráfico spectral (Figura 6.4), de forma diferente da análise feita no tópico 3, não
mostra indı́cios de efeitos de trading days na série com ajuste sazonal. Os fatores sazonais (Figura
6.5) aparentam ter um comportamento mais suave do que o do ajuste automático. Repare que o mês
de fevereiro foi melhor captado depois da correção. Note também o impacto dos outliers nos fatores
152
CAPÍTULO 6. AJUSTE SAZONAL
30
10
20 5
0
10
−5
0 20 40 60 0 20 40 60
−10
−20
−30
0 20 40 60 0 20 40 60
Por fim, temos o gráfico do ı́ndice de produção industrial com ajuste sazonal pelo X-13ARIMA-
SEATS em que o leitor pode notar o comportamento decrescente do ı́ndice nos últimos meses.
153
6.6. CONSIDERAÇÕES FINAIS
10
SI
Fator sazonal
5
0
−5
−10 Média Fator Sazonal FS
J F M A M J J A S O N D
Observada
AO
Com ajuste sazonal
AO
90
LS
80
70
Figura 6.6: Índice de produção industrial geral do Brasil com ajuste sazonal
Neste capı́tulo aprendemos o que é o ajuste sazonal e a sua finalidade. Vimos que não há
apenas uma maneira de dessazonalizar uma série temporal, embora tenhamos focado em apenas uma:
154
CAPÍTULO 6. AJUSTE SAZONAL
necessários de como executar o X-13 no R e métodos de avaliar a qualidade do ajuste sazonal a partir
de diversos diagnósticos. Além disso, vimos a utilidade da etapa de pré-ajuste no X-13, que permitiu
Apesar de ter sido uma experiência interessante, sabemos que ainda ficaram faltando alguns
pontos a serem abordados. Por exemplo, o ajuste de diversas séries temporais simultaneamente,
pois sabemos que há interesse em fazer isso para outras séries temporais além do ı́ndice de produção
Nesse sentido, é importante que o leitor que estiver usando esse manual para dessazonalizar
séries temporais tenha ciência de suas limitações e busque, sempre que possı́vel, aprofundar o seu
155
6.6. CONSIDERAÇÕES FINAIS
156
Parte III
Modelos Multivariados
157
7 Box & Jenkins com função de trans-
ferência
7.1 Introdução
Este capı́tulo é dedicado à apresentação dos modelos de Box & Jenkins com variáveis auxiliares.
A utilização de variáveis auxiliares nesses modelos por meio de funções de transferência pode aperfeiçoar
O tema será exposto utilizando um exemplo clássico de Box & Jenkins (BJ) em que a produção
de CO2 (dióxido de carbono) é influenciada pela Taxa de Alimentação de Metano. O exemplo é aplicado
de forma simples e objetiva no software R, não necessitando que o leitor entenda profundamente sobre
as variáveis. No entanto, saiba que esse tipo de modelagem é baseada na relação causal entre as STs,
portanto o leitor precisa ter conhecimento sobre o tema de interesse ao generalizar esse estudo para
outras STs.
Para que você acompanhe o objetivo desse capı́tulo, este foi dividido em outras quatro seções:
na seção 7.2 apresentamos a definição de Função de Transferência (FT); na seção 7.3 informamos os
pacotes necessários para a modelagem no R e também as variáveis que utilizaremos; na seção 7.4 o
leitor aprenderá sobre a metodologia; e na seção 7.5 discutimos algumas considerações finais.
7.2 Definição
Os modelos de Box & Jenkins (1970) podem incorporar variáveis auxiliares e a forma como
essas variáveis auxiliares (Xit ) influenciam a variável resposta (Yt ), isto é, como os movimentos dessas
variáveis afetam o percurso da variável resposta, é dada por uma função de transferência f (Xt ):
Yt = f (Xt ) + εt (7.1)
A função f (Xt ) pode agrupar valores passados e/ou presentes de uma ou mais séries temporais,
que podem ser do tipo quantitativo ou binário (dummy) e essa distinção implica na forma de identi-
ficação de f (Xt ). No caso de uma ST quantitativa, a forma genérica de uma f (Xt ) pode ser denotada
(w0 + w1 L + w2 L2 + ... + ws Ls )
f (Xt ) = Xt−b (7.2)
(1 − δ1 L − δ2 L2 − ... − δr Lr )
160
CAPÍTULO 7. BOX & JENKINS COM FUNÇÃO DE TRANSFERÊNCIA
Certamente o leitor notou que para identificar f (Xt ) é necessário descobrir os valores de r, s e
pode ser feito aplicando a metodologia a um exemplo clássico extraı́do de Box & Jenkins (1970).
Para a modelagem de Box & Jenkins com função de transferência (BJFT) no R, os seguintes
É importante o leitor saber que outros pacotes também serão utilizados na modelagem BJFT.
No entanto, não há necessidade de instalá-los pois já estão incluı́dos na versão base do R, como exemplo
podemos citar o pacote stats que é utilizado para calcular funções de autocorrelação e extrair resı́duos
Para identificar e estimar a função de transferência f (Xt ), será utilizado um exemplo clássico
extraı́do de Box & Jenkins (1970). Tal exemplo investiga a otimização adaptativa de um aquecedor a
gás, isto é, foi utilizado uma combinação de ar e metano para formar uma mistura de gases contendo
CO2 (dióxido de carbono). A alimentação de ar foi mantida constante, mas a taxa de alimentação
de metano poderia ser variada de qualquer maneira desejada. Após a combinação, a concentração de
CO2 resultante nos gases de exaustão foi medida. A finalidade do exemplo é encontrar a forma como
a variável Taxa de Alimentação de Metano (Xt ) se relaciona com Concentração de CO2 (Yt ). Cada
variável representa uma série temporal de 296 observações e os dados podem ser baixados diretamente
ordem. Observamos na Figura 7.1 o comportamento de ambas as séries em análise. Como visto no
capı́tulo sobre a modelagem BJ, as séries não apresentam um comportamento estacionário em todo o
161
7.4. METODOLOGIA
espaço de tempo, com variações não constantes e uma leve tendência1 de queda para Xt e crescimento
para Yt .
> plot(gas, main = "")
InputGasRate
2
60 −2 0
CO2
50
7.4 Metodologia
Agora que o leitor já foi apresentado às STs, apresentamos os passos de identificação da f (Xt ),
2. Identificar r, s e b;
Como vimos na definição de FT, para identificá-las, inicialmente, basta estipularmos valores
para r, s e b (lembre-se que estamos trabalhando apenas com séries quantitativas). A identificação
desses valores é feita calculando a função de correlação cruzada (CCF) entre Yt e as variáveis auxiliares
1 Lembre-se que para confirmar essa afirmação o mais correto é fazer um teste de raiz unitária.
162
CAPÍTULO 7. BOX & JENKINS COM FUNÇÃO DE TRANSFERÊNCIA
(apenas uma neste exemplo). A CCF entre as séries temporais Yt e Xt mostra as correlações entre elas
cxy (k)
cc f (k) = , k = 0, ±1, ±2, ... (7.3)
sx sy
n−k
1
n ∑ (xt − x̄)(yt+k − ȳ),
k = 0, 1, 2, ...
cxy (k) = t=1
1 n+k
∑ (yt − ȳ)(xt−k − x̄),
k = 0, −1, −2, ...
n t=1
passado t − k.
É importante saber que a CCF é afetada pela autocorrelação de Xt e Yt e, se as STs não forem
estacionárias, o resultado da CCF não refletirá realmente o grau de associação entre elas Hamilton
(1994); Phillips & Perron (1988). Para corrigir esse problema, Box & Jenkins sugeriram o método de
pré-branqueamento2 .
(b) Filtrar Yt pelo modelo encontrado em (a), isto é, o modelo de Yt é o mesmo modelo de Xt (com
A seguir discute-se cada etapa separadamente aplicando-as às STs disponı́veis por BJ.
2 Existe também o pré-branqueamento duplo, em que é ajustado para cada variável seu próprio modelo ARIMA. No
entanto, por tornar as duas séries um ruı́do branco, a correlação entre elas pode ser puramente devida ao acaso.
163
7.4. METODOLOGIA
Já aprendemos a identificar as ordens de um modelo ARIMA para Xt usando a função de auto-
1.0
0.8
0.5
Partial ACF
ACF
0.4
0.0
−0.5
0.0
0 5 10 15 20 25 30 35 0 5 10 15 20 25 30 35
Lag Lag
(a) FAC: Input Gas Rate (X) (b) FACP: Input Gas Rate (X)
A queda exponencial da FAC e o corte brusco da FACP no lag 3 (Figura 7.2) sugerem um modelo
não foi significativa, sendo esta excluı́da do modelo. Veja os códigos a seguir para a estimação
do modelo.
> library("forecast")
> (modelo_x <- Arima(gas[,"InputGasRate"],
+ order = c(3,0,0), include.mean = F))
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
3 Um método que auxilia na identificação de modelos ARIMA são os critérios de informação, como por exemplo AIC
164
CAPÍTULO 7. BOX & JENKINS COM FUNÇÃO DE TRANSFERÊNCIA
Para filtrar Yt por meio do modelo de Xt também usaremos a função Arima(), no entanto, agora
Coefficients:
ar1 ar2 ar3
1.9696 -1.3659 0.3399
s.e. 0.0000 0.0000 0.0000
Os resı́duos podem ser obtidos pela função resid() e serão salvos em novos objetos alpha e
Uma vez que as variáveis foram filtradas, podemos calcular a CCF (Figura 7.3) entre os resı́duos
utilizando a função ccf() do pacote stats. A CCF nessa figura mostra o relacionamento entre
Veja que não há correlação significativa entre Yt e Xt no tempo presente (t = 0) e a primeira
lags.
> ccf(beta, alpha, xlim = c(0,20))
165
7.4. METODOLOGIA
0.1
−0.1 0.0
ACF
−0.3
0 5 10 15 20
Lag
Figura 7.3: CCF: Input Gas Rate (X) and CO2 (Y)
7.4.2 Identificar r, s e b
no modelo. Logo, s = 2.
(w0 + w1 L + w2 L2 )
f (Xt ) = Xt−3
(1 − δ1 L)
Uma vez que identificamos a forma de f (Xt ), passaremos para a etapa de estimação. Inicialmente,
é preciso identificar a ordem do modelo ARIMA para a série Yt , assim como foi feito para Xt .
> acf(gas[,"CO2"], lag.max = 36, main = "FAC: CO2 (Y)")
> pacf(gas[,"CO2"], lag.max = 36, main = "FACP: CO2 (Y)")
4 Queda exponencial na CCF indica parâmetros no denominador (r), enquanto picos indicam parâmetros no nume-
rador (s). Veja um exemplo em Box & Jenkins (1970) (figura 10.6).
166
CAPÍTULO 7. BOX & JENKINS COM FUNÇÃO DE TRANSFERÊNCIA
1.0
0.8
0.5
Partial ACF
ACF
0.4
0.0
−0.5
0.0
0 5 10 15 20 25 30 35 0 5 10 15 20 25 30 35
Lag Lag
A queda exponencial da FAC e o corte brusco da FACP no lag 2 (Figura 7.4) sugerem um
modelo ARIMA(2,0,0).
do pacote TSA.
Sintaxe: arimax(x, order = c(0, 0, 0), seasonal = list(order = c(0, 0, 0), period = NA), xreg =
NULL, include.mean = TRUE, transform.pars = TRUE, fixed = NULL, init = NULL, method =
c(”CSS-ML”, ”ML”, ”CSS”), n.cond, optim.control = list(), kappa = 1e+06, io = NULL, xtransf,
transfer = NULL)
Para defasar a variável Xt em três lags, o leitor pode usar a função lag() do pacote stats.
> x_novo <- lag(gas[,"InputGasRate"], k = -3)
Como três valores de Xt foram perdidos para estimar o modelo, é preciso cortar os três primeiros
167
7.4. METODOLOGIA
0.339 52.7
0.373 52.4
0.441 52.2
Com os dados na forma correta, estima-se um modelo para a variável 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 intercept T1-AR1 T1-MA0 T1-MA1 T1-MA2
1.5272 -0.6288 53.3618 0.5490 -0.5310 -0.3801 -0.5180
s.e. 0.0467 0.0495 0.1375 0.0392 0.0738 0.1017 0.1086
Uma vez estimado, o modelo sempre precisa ser avaliado. Se ao final verificarmos que o modelo
não é adequado, então sua identificação foi incorreta e precisaremos corrigir essa etapa. Veremos na
Pretendemos não encontrar padrões de correlação, pois isso sugere que o modelo não esteja bem
especificado e que, consequentemente, deve ser modificado. A seguir temos a FAC dos resı́duos e o
data: residuos
X-squared = 27.969, df = 24, p-value = 0.2613
168
CAPÍTULO 7. BOX & JENKINS COM FUNÇÃO DE TRANSFERÊNCIA
0.10
0.05
ACF
ACF
0.00
−0.05
−0.10
−0.15
0 5 10 15 20 25 30 35 −20 −10 0 10 20
Lag Lag
A partir da análise das funções de correlação (Figura 7.5) e do teste de autocorrelação residual
de Ljung-Box, podemos concluir que não há evidências de autocorrelação residual e, portanto, esse
modelo BJFT está adequado. O gráfico dos valores observados versus ajustados pelos modelos com e
Observados
Ajustados s/ FT
Ajustados c/ FT
55
50
45
169
7.5. CONSIDERAÇÕES FINAIS
A partir da análise dos modelos com e sem FT, vemos que ambos são adequados para a mode-
lagem de CO2 dentro da amostra. Se você aplicar a função summary() para os dois modelos, verá que
o MAPE (Mean Absolute Percent Error ) para o modelo com função de transferência é de 0,3% e para
o outro modelo é de 0,5%, confirmando o melhor desempenho do modelo BJFT dentro da amostra.
Outra forma de verificar qual dos dois modelos é mais eficiente é analisar suas respectivas previsões
para fora da amostra. No entanto, a função arimax() não suportava previsões até o momento de
Neste capı́tulo aprendemos empiricamente, com base na metodologia proposta por Box & Jen-
kins, como modelar uma série temporal utilizando outra variável que possui um relacionamento causal
com a variável de interesse. Aprendemos os passos para aplicar a metodologia, bem como filtrar as
Foram abordados os pacotes úteis para esse tipo de modelagem, discutimos algumas funções
e chamamos a atenção para algumas limitações das mesmas. Apesar de ter sido uma experiência
interessante, sabemos que ainda ficaram faltando alguns pontos a serem abordados, como, por exemplo,
a previsão das séries para fora da amostra e a identificação de variáveis do tipo binário na função de
transferência.
Nesse sentido, é importante que o leitor que estiver usando esse manual para construir o seu
modelo ARIMA com função de transferência tenha ciência de suas limitações e busque, sempre que
170
8 Regressão Dinâmica
8.1 Introdução
Modelos dinâmicos estudam a relação entre variáveis observadas em instantes de tempo diferen-
tes. Podemos, por exemplo, investigar se o Índice de Preços ao Consumidor Amplo (IPCA)1 em um
determinado mês influencia a maneira como os consumidores brasileiros formam suas expectativas de
inflação em meses subsequentes. Sob esta ótica, pretendemos neste capı́tulo explorar as implicações do
emprego do modelo clássico de regressão linear em variáveis observadas ao longo do tempo e apresentar
As seções que seguem dividem-se da seguinte forma: na Seção 8.2 descrevemos o modelo clássico
aborda especificamente a presença de correlação serial nos erros do modelo clássico de regressão e expõe
maneiras para contornar o problema; sob outra perspectiva, na Seção 8.4 tratamos as violações dos
com defasagens distribuı́das; explorando o contexto de variáveis não-estacionárias, a Seção 8.5 discute
o modelo de correção de erro; a Seção 8.6 apresenta uma aplicação dos modelos na análise da formação
da expectativa de inflação por parte dos consumidores brasileiros baseada no IPCA; por fim, a Seção
minada variável (dependente) é influenciado por uma ou mais variáveis (explicativas). A estrutura
desta relação pode assumir diferentes formas e, em alguns casos, apresenta comportamento linear. Os
modelos que assumem estrutura linear entre variável dependente e variáveis explicativas são chamados
{X1,t , X2,t , . . . Xk,t }. O modelo linear usualmente encontrado na literatura pode ser escrito como
onde β0 é um nı́vel global, os β j ’s, j ∈ {1, 2, . . . , k}, são os parâmetros correspondentes aos respectivos
172
CAPÍTULO 8. REGRESSÃO DINÂMICA
efeitos isolados de cada X j,t sobre Yt , e εt é o erro do modelo no tempo t. Ao longo do capı́tulo a
A construção dos modelos de regressão linear é fundamentada na aceitação dos seguintes pres-
E(εt | X) = 0, t = 1, 2, . . . , T (8.2)
X1,1 X2,1 ··· Xk−1,1 Xk,1
X1,2 X2,2 ··· Xk−1,2 Xk,2
X = . .. .
. .. .. ..
. . . . .
X1,T X2,T ··· Xk−1,T Xk,T
X) = σ 2 , t = 1, 2, . . . , T .
(MQO) será não viesado. Ainda, caso vigorem as suposições 3 e 4 o estimador de MQO da variância do
estimador dos coeficientes do modelo também será não viesado. Caso os pressupostos de 1 a 4 sejam
satisfeitos, o estimador de MQO será o melhor estimador linear não viesado (em inglês, BLUE ). Por
fim, se o pressuposto 5 for observado, tem-se que os βk ’s seguem distribuição gaussiana e a razão entre
Os pressupostos expostos acima são razoáveis em contextos onde as observações são independen-
tes. Na análise de séries temporais, entretanto, algumas suposições frequentemente não são satisfeitas.
173
8.3. CORRELAÇÃO SERIAL
(exogeneidade estrita) e que choques em Y no perı́odo t não persistem em t + 1 (correlação serial) são
usualmente violadas.
O emprego de modelos estáticos em séries temporais requer, portanto, que sejamos capazes de
lidar com a violação dos pressupostos 1 e 4. A suposição de exogeneidade estrita pode ser relaxada em
situações onde as variáveis em análise são ergódicas, sendo necessário somente independência contem-
porânea entre os erros e X (exogeneidade fraca), ou seja, E(εt | X1,t , X2,t , . . . , Xk,t ) = 0. Se, além disso, a
amostra for grande o suficiente, o estimador de mı́nimos quadrados terá as propriedades assintóticas
desejadas.
Caso as suposições 1-3 sejam satisfeitas, mesmo na presença de correlação serial no vetor de
erros ε = {ε1 , ε2 , . . . , εT }, os estimadores de MQO serão consistentes. Entretanto, o mesmo não ocorre
com respeito à eficiência, ou seja, existe algum estimador cuja variância é menor do que a variância
do estimador de MQO (Pindyck & Rubinfeld, 1998). Como consequência, a inferência acerca dos
coeficientes do modelo pode conduzir a conclusões incorretas uma vez que as distribuições usadas para
Vimos que a presença de correlação serial nos erros afeta a inferência do modelo, impossibilitando
a realização dos testes usuais sobre os parâmetros. Devemos, portanto, verificar se os pressupostos do
modelo estático são satisfeitos antes de tirar qualquer conclusão. A Subseção 8.3.1 aborda metodologias
para diagnosticar a presença de correlação serial enquanto a Subseção 8.3.2 apresenta caminhos para
a correção do problema.
A violação do pressuposto 4 ocorre quando Cov(εt , εt−s ) ̸= 0 para algum s ̸= 0. Para testar a
hipótese nula de ausência de correlação serial de ordem s nos erros (H0 : Cov(εt , εt−s ) = 0) é necessário
que os estimadores de εt sejam consistentes. A escolha natural é utilizar os resı́duos ε̂t do modelo (8.1),
estimado via MQO, de forma que os testes envolverão a análise da correlação entre ε̂t e ε̂t−s para s
positivo até algum valor máximo arbitrado p. A literatura dispõe de ı́numeros testes de correlação
serial, todavia focaremos na descrição de dois deles: (i) Durbin-Watson2 e (ii) Breusch-Godfrey3 .
174
CAPÍTULO 8. REGRESSÃO DINÂMICA
Teste de Durbin-Watson
T
∑ (ε̂t − ε̂t−1 )2
t=2
d= T
, (8.3)
∑ ε̂t2
t=1
onde ε̂t , t = 1, . . . , T são os resı́duos da estimação de (8.1) por mı́nimos quadrados ordinários.
Após algumas aproximações, tem-se que d ≈ 2(1 − ρ̂ ), onde ρ̂ é a correlação de primeira ordem
crı́ticos dL e dU dependem das covariáveis do modelo e não podem ser obtidos para o caso geral; (ii) o
teste é inválido na presença da variável dependente defasada no lado direito da equação (8.1)4 ; e (iii) o
teste somente aborda correlação de primeira ordem, não sendo aplicável a correlações de maior ordem.
quais podemos citar: dwtest() no pacote lmtest (Zeileis & Hothorn, 2002), durbinWatsonTest() no
4 Durbin (1970, p. 200) propõe uma modificação do teste de Durbin-Watson que permite a inclusão da variável
175
8.3. CORRELAÇÃO SERIAL
pacote car (Fox & Weisberg, 2011), test.DW() no pacote dcv (Li, 2010), etc.
variáveis dependentes defasadas no modelo além de poder ser usado para testar correlações de ordem
p, p ≥ 1.
A hipóteste nula do teste é de que os erros são ruı́dos brancos. Se de fato essa hipótese for
verdadeira, então os resı́duos ε̂t obtidos da estimação da equação (8.1) via MQO são independentes
dos resı́duos defasados ε̂t−1 , . . . , ε̂t−p . Deste modo, para avaliar a presença de correlação serial de
ordem p o teste baseia-se no modelo
e, consequentemente, da estatı́stica BG(p), levando à não rejeição da hipótese nula de que os resı́duos
Identificada a presença de correlação serial nos erros através dos métodos apresentados na seção
anterior, precisamos encontrar alternativas ao modelo estático para lidar com tal problema. Nos
limitaremos, nesta seção, à descrição de duas abordagens: (i) inclusão de estrutura para os termos de
erro no modelo (8.1); e (ii) aplicação do método de Newey-West para correção dos erros padrão das
estimativas de MQO.
Assuma que as suposições do modelo de regressão linear são satisfeitas, porém os erros não são
176
CAPÍTULO 8. REGRESSÃO DINÂMICA
por AR(1), para descrever o comportamento dos erros de regressão, temos o modelo
εt =ρεt−1 + νt , (8.6b)
onde 0 ≤| ρ |< 1, νt tem distribuição N(0, σν2 ) e é independente de ν j , para j ̸= t bem como é inde-
pendente de εt , ∀t. De modo similar, εt ∼ N(0, σε2 ) porém os termos de erro são correlacionados ao
longo do tempo. O termo ρ reflete a correlação entre εt e εt−1 de modo que ρ = 0 implica ausência de
autocorrelação nos erros e | ρ | próximo a um resulta em correlação serial de primeira ordem. Cabe
destacar que, pela construção do modelo em (8.6a)-(8.6b), o efeito de εt será sentido em todos os
Podemos reescrever as equações (8.6a)-(8.6b) em uma única equação. Para tal, multiplicamos o
termo (1 − ρ L) em todos os termos da equação (8.6a), obtendo-se 8.7a
Yt∗ = β1 (1 − ρ ) + β1 X1,t
∗ ∗
+ β2 X2,t ∗
+ · · · + βk Xk,t + νt , (8.7a)
νt = εt − ρεt−1 . (8.7d)
Por construção, o modelo em (8.7a) possui erros independentes e identicamente distribuı́dos com
média 0 e variância constante. Deste modo, se ρ for conhecido podemos aplicar o método de mı́nimos
quadrados ordinários para obter estimativas eficientes de todos os parâmetros do modelo. Cabe a
β0∗
ressalva de que o intercepto é estimado como β0∗ = β0 (1 − ρ ), de onde obtemos β0 por β0 = 1−ρ . É
usual, entretanto, não conhecermos o valor de ρ , sendo necessária a adoção de procedimentos para
Um primeiro método atribui-se a Cochrane & Orcutt (1949) e consiste na estimação iterativa
177
8.3. CORRELAÇÃO SERIAL
Yt∗ = Yt − ρ̂ Yt−1 ;
7. Repetir os passos 3 - 6 até que a diferença entre as estimativas de ρ para duas iterações conse-
variáveis (passo 4), o que não implica em perda significativa de informação à medida que a amos-
tra cresce. Computacionalmente, podemos obter as estimativas dos coeficientes por meio da função
Outro método de estimação do modelo (8.6a)-(8.6b) foi introduzido por Prais & Winsten (1954)
com a exceção de que no passo 4 as variáveis no primeiro instante de tempo são construı́das como
√ √
∗ =
Y1∗ = 1 − ρ̂ 2 Y1 e X j,1 1 − ρ̂ 2 X j,1 , j ∈ {1, . . . , k}. Este método se mostra mais eficiente em amostras
pequenas, visto que não elimina nenhuma observação da amostra. No R encontra-se disponı́vel a função
consistentes do termo de erro, o que requer estimativas consistentes dos coeficientes usados no cálculo
dos resı́duos. Um caso importante onde os resı́duos não são estimados consistentemente aparece em
contextos onde a variável dependente defasada é usada como regressora no modelo e os erros são
autocorrelacionados. Para situações dessa natureza, os resı́duos obtidos via MQO não podem ser
usados para estimar ρ . Uma alternativa aos métodos anteriores aparece em Hildreth & Lu (1960),
cujo estimador procura o valor de ρ , −1 ≤ ρ ≤ 1, que minimiza a soma dos quadrados dos resı́duos no
modelo (8.7a).
Todas as metodologias descritas exigem cautela em sua realização, uma vez que os algoritmos
A segunda abordagem para lidar com a correlação serial dos erros segue em direção oposta
178
CAPÍTULO 8. REGRESSÃO DINÂMICA
ao apresentado anteriormente, tornando a inferência válida através da correção dos erros padrão dos
estimadores de MQO pelo método descrito em Newey & West (1987) ao invés de introduzir uma
estrutura para o erro. É importante frisar que tal correção somente é válida em casos onde o termo
de erro não é correlacionado com nenhuma das variáveis explicativas do modelo. A implementação do
método pode ser realizada através do pacote sandwich (Zeileis, 2004) do R, todavia maior detalhamento
Apresentaremos agora um breve exemplo com dados artificiais para ilustrar a situação em que
o modelo de regressão clássico não satisfaz a suposição de ausência de correlação serial dos erros.
A seguir temos o inı́cio da nossa base de dados, que contém 4 variáveis ao longo do tempo num
através da função lm(). Como o modelo não considera defasagens da variável dependente no lado
direito de (8.8), podemos estimar ε = {ε1 , . . . , εT } consistentemente a partir dos resı́duos da estimação
Lembrando que tanto o teste de Durbin-Watson quanto o de Breusch-Godfrey tem como hi-
pótese nula a ausência de correlação serial dos erros, conduzimos no R ambos os testes considerando
igual a 5%, os dois testes rejeitam a hipótese nula uma vez que os p-valores de ambos são inferiores a
179
8.3. CORRELAÇÃO SERIAL
Devido à presença de correlação serial de primeira ordem nos erros do modelo (8.8), surge a
necessidade de incluirmos uma estrutura em εt que reflita tal comportamento. Assumimos, então, o
modelo
εt = ρεt−1 + νt . (8.9b)
180
CAPÍTULO 8. REGRESSÃO DINÂMICA
> # Estimaç~
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 Median 3Q Max
-0.072610 -0.012760 0.000906 0.015209 0.077841
Coefficients:
Estimate Std. Error t value Pr(>|t|)
XB(Intercept) 0.2424113 0.2531469 0.958 0.3474
XBprice -1.1927018 0.6873988 -1.735 0.0950 .
XBincome 0.0031820 0.0014969 2.126 0.0436 *
XBtemp 0.0035572 0.0005339 6.662 5.56e-07 ***
---
Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
$rho
[1] 0.3788941
$number.interaction
[1] 12
> # Prais-Winsten
> require(prais)
> pw_reg <- prais.winsten(cons ~ price + income + temp, data = dados)
> pw_reg
181
8.3. CORRELAÇÃO SERIAL
[[1]]
Call:
lm(formula = fo)
Residuals:
Min 1Q Median 3Q Max
-0.079171 -0.017838 -0.000846 0.010029 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
[[2]]
Rho Rho.t.statistic Iterations
0.7018387 4.481754 49
Na Tabela 8.1 resumimos os valores estimados dos parâmetros pelos três diferentes métodos
abordados. Note que os coeficientes para o modelo clássico de regressão e para o método de Cochrane-
Orcutt são bastante similares para todo βk , k = 0, 1, 2, 3, mesmo que ρ seja estimado diferente de zero.
observações é pequeno, o segundo procedimento parece mais eficiente ao incluir a primeira observação.
Nesse exemplo tentamos ilustrar a implementação dos testes de correlação serial e dos procedi-
mentos de estimação do modelo estático com estrutura autoregressiva de primeira ordem para os erros.
Ainda que os dados não sejam reais e pouca, ou nenhuma, interpretação possa ser dada a eles, nosso
intuito foi expor a sintaxe das funções no R e prover base para maior aprofundamento do leitor.
182
CAPÍTULO 8. REGRESSÃO DINÂMICA
Até o momento tratamos a correlação serial de ε = {ε1 , . . . , εT } como uma violação das suposições
do modelo clássico de regressão linear. Podemos, em contrapartida, enxergar tal comportamento dos
imediatamente, sendo Y afetado somente após alguns instantes de tempo, ou mesmo Y pode afetar
seu próprio valor em tempos posteriores. A omissão dessa dinâmica pode induzir correlação serial nos
erros, sendo interessante nessas circunstâncias optar pelo uso de modelos dinâmicos.
Quando a dinâmica do modelo é ditada pelo comportamento das variáveis independentes de-
fasadas nos referimos a modelos com defasagens distribuı́das, sendo as defasagens responsáveis por
explicar Y . Se somente os valores passados de Y determinam seu valor em t, a dinâmica de Y pode ser
descrita segundo modelos autoregressivos. É possı́vel, ainda, combinar os dois modelos anteriores em
uma única equação, originando os chamados modelos autoregressivos com defasagens distribuı́das (do
A forma geral do modelo ADL com p defasagens para Y e q defasagens para X, denotado por
onde ϕ (L) = 1 − ϕ1 L − ϕ2 L2 − · · · − ϕ p L p cujas raı́zes não pertencem ao cı́rculo unitário, o que significa
Supondo que os erros ν = {ν1 , . . . , νT } são ruı́dos brancos, o modelo (8.11) pode ser estimado via
mı́nimos quadrados ordinários. A função dynlm() (Zeileis, 2016) do pacote de mesmo nome permite
a inclusão de defasagens e diferenças das variáveis no modelo, retornando as estimativas de MQO dos
parâmetros.
5 O capı́tulo se restringe à descrição do modelo ADL, sendo os outros dois modelos casos particulares deste. Mais
183
8.4. MODELOS AUTOREGRESSIVOS COM DEFASAGENS DISTRIBUÍDAS
Escolhendo as defasagens p e q:
Y no modelo. Entretanto, são raras as situações onde a teoria nos informa sobre os valores exatos
avaliar o número apropriado de defasagens no modelo, não existindo um “método correto”. A escolha
parâmetros. Podemos começar com um número elevado de defasagens e avaliar a significância do coe-
ficiente associado à maior defasagem. Caso esse coeficiente seja estatisticamente significativo, optamos
por esse modelo, em contrapartida, se o coeficiente não for significativo, estimamos o modelo com
uma defasagem a menos e continuamos o processo até que o coeficiente associado à maior defasagem
seja significativo. O caminho contrário também pode ser empregado, ou seja, começamos pelo modelo
com a menor defasagem e inserimos novas defasagens até que o coeficiente para a variável de maior
pelo número de parâmetros do modelo. A literatura dispõe de uma gama de critérios de informação,
figurando entre os mais utilizados o critério de informação de Akaike (AIC) e o critério de informação
bayesiano (BIC). Por meio dessa metodologia, escolhemos o número de defasagens com base no modelo
que retorna o menor valor desses critérios. Cabe a ressalva que o cálculo dessas medidas deve considerar
ainda, que usualmente nenhuma defasagem até p e q é omitida. No R, a função glmulti() do pa-
cote glmulti (Calcagno, 2013) recebe as variáveis dependentes e independentes do modelo e seleciona
184
CAPÍTULO 8. REGRESSÃO DINÂMICA
Por todo este capı́tulo descrevemos diferentes metodologias para lidar com variáveis observadas
ao longo do tempo. Os modelos apresentados supõem que tais variáveis são estacionárias. É comum,
entretanto, encontrarmos situações onde esse pressuposto não é satisfeito como, por exemplo, contex-
tos onde há uma quebra estrutural em determinado instante de tempo ou mesmo quando a variável
apresenta tendência.
Supor estacionariedade das variáveis em modelos de regressão linear quando de fato esse pres-
suposto é violado pode conduzir a conclusões inapropriadas. Mesmo que duas variáveis não sejam
determinação (R2 ) elevado, significando que a covariável conseguiu explicar bem a variável dependente,
e estatı́sticas de teste que levam à conclusão de significância dos parâmetros. Esse é um exemplo de
Existem diferentes abordagens para variáveis não estacionárias, porém nos concentraremos na-
quelas para variáveis integradas. Lembre-se que uma variável Z é dita integrada de ordem k se sua
Considere um modelo de regressão com apenas duas variáveis 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ão estacionariedade consiste em realizar a regressão tomando a primeira diferença das variáveis,
isto é, ∆Yt = β ∆Xt + ηt , onde ∆Yt e ∆Xt são estacionárias. Um aspecto negativo dessa metodologia
Um caso de especial interesse em econometria surge quando a combinação linear de duas variáveis
parágrafo anterior, terı́amos Yt , Xt ∼ I(1) mas νt ∼ I(0). Este caso define o conceito de cointegração,
que em economia usualmente está relacionado ao conceito de equilı́brio de longo prazo. A presença de
cointegração entre X e Y permite que os modelos clássicos de regressão sejam estimados corretamente
Quando duas séries são cointegradas, perturbações em qualquer uma delas provocam alterações
em sua relação de longo prazo. A taxa à qual o sistema retorna ao equilı́brio após tais perturbações
185
8.5. MODELO DE CORREÇÃO DE ERRO
pode ser estimada a partir dos chamados modelos de correção de erro (ECM)6 , escritos como
onde a taxa de retorno ao equilı́brio é γ , γ < 0, e β nos informa sobre os efeitos de curto prazo de Xt
sobre Yt . Note que o modelo de correção de erro é “balanceado” no sentido que todas as variáveis no
lado direito de (8.12) são estacionárias e, portanto, o método de mı́nimos quadrados é aplicável.
[ ( ) ]
β0 + β1
∆Yt = β0 ∆Xt + (ρ − 1) Yt−1 + Xt−1 + ηt . (8.15)
ρ −1
( )
β0 +β1
Fazendo γ = (ρ − 1), ϕ = ρ −1 e β = β0 em (8.15) chegamos ao modelo de correção de erro
na equação (8.12).
Note que a equivalência não é exata, visto que alguns parâmetros são escritos em função de
outros.
Estimação do modelo:
O modelo de correção de erro apresentado em (8.12) pode ser estimado de duas maneiras dife-
2004).
186
CAPÍTULO 8. REGRESSÃO DINÂMICA
1. Estimar o modelo Yt = ϕ Xt + εt ;
mentação desses modelos à expectativa de inflação dos consumidores brasileiros bem como da aplicação
uma pergunta quantitativa sobre a expectativa de inflação individual para os próximos 12 meses.
Pretendemos estimar um modelo de correção de erro baseado nos dois procedimentos da Seção 8.5,
com a expectativa de inflação sendo explicada pelo Índice de Preços ao Consumidor Amplo (IPCA -
IBGE). Os dados aplicados no exemplo pertencem ao perı́odo entre setembro de 2005 e dezembro de
Expectativa de
Data IPCA
Inflação do Consumidor
Set/05 9.44 6.04
Out/05 9.50 6.36
Nov/05 9.13 6.22
.. .. ..
. . .
Nov/2013 9.01 5.77
Dez/2013 9.25 5.91
O primeiro passo de nossa análise contempla o teste de estacionariedade das variáveis em ques-
tão. A literatura dispõe de diversos testes, entretanto somente realizaremos o teste de Dickey-Fuller
187
8.6. APLICAÇÃO À EXPECTATIVA DE INFLAÇÃO DOS CONSUMIDORES
Aumentado (ADF)7 . Esse teste tem como hipótese nula a presença de raiz unitária e pode ser aplicado
resultados do teste ADF aplicado a essa variável, assumindo defasagem máxima igual a 12 e adotando
o AIC como critério de escolha da defasagem. O teste retornou defasagem igual a 1 e estatı́stica
0,5713. Como a estatı́stica de teste é maior que o valor crı́tico ao nı́vel de 5% de confiança, a saber
Call:
lm(formula = z.diff ~ z.lag.1 - 1 + z.diff.lag)
Residuals:
Min 1Q Median 3Q Max
-1.00779 -0.27690 0.02725 0.25452 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
188
CAPÍTULO 8. REGRESSÃO DINÂMICA
Para avaliar se o teste ADF foi conduzido corretamente, a Figura 8.2 analisa a presença de
autocorrelação nos resı́duos do modelo utilizado pelo teste e a consequente necessidade de inclusão
de mais defasagens no modelo. Como podemos observar, não existe autocorrelação significativa de
0.2
−0.2
0 5 10 15
Lag
dente função de autocorrelação dos resı́duos do teste (Figura 8.3). Novamente assumimos defasagem
> # IPCA
> adf_ipca <- ur.df(ipca, type = "none", lags = 12, selectlags = "AIC")
> summary(adf_ipca)
189
8.6. APLICAÇÃO À EXPECTATIVA DE INFLAÇÃO DOS CONSUMIDORES
###############################################
# 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 3Q Max
-0.54453 -0.10688 0.04011 0.15284 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
0.2
−0.2
0 5 10 15
Lag
190
CAPÍTULO 8. REGRESSÃO DINÂMICA
O teste retornou o modelo com apenas uma defasagem como o de menor AIC e estatı́stica de
teste (0,1185) que nos leva à conclusão de não rejeição da hipótese nula, ou seja, a variável IPCA
(Figura 8.3) não fornece indı́cios de incorreção do teste, visto que a autocorrelação não é significativa
Tendo concluı́do pela não estacionaridade das variáveis em estudo, os modelos clássicos de
regressão linear não podem ser empregados. O próximo passo é, então, verificar se as variáveis são
cointegradas. Esse teste avaliará se os resı́duos da regressão ExpInft = α + β IPCAt + εt são estacionários
via teste ADF.
Residuals:
Min 1Q Median 3Q Max
-2.8746 -0.4482 0.0905 0.8496 2.1819
Coefficients:
Estimate Std. Error t value Pr(>|t|)
ipca 1.47992 0.01979 74.78 <2e-16 ***
---
Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
191
8.6. APLICAÇÃO À EXPECTATIVA DE INFLAÇÃO DOS CONSUMIDORES
###############################################
# 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 3Q Max
-1.37125 -0.31229 0.07097 0.36439 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
0.2
−0.2
0 5 10 15
Lag
A análise da estatı́stica do teste ADF (-2,8666) nos leva à rejeição da hipótese nula e os resı́duos
192
CAPÍTULO 8. REGRESSÃO DINÂMICA
do teste não apresentam autocorrelação significativa (Figura 8.4). Portanto, concluı́mos que as variáveis
são cointegradas. Assim, podemos estimar o modelo de correção de erro para encontrar as relações de
longo e curto prazo entre elas. A Tabela 8.3 apresenta os valores estimados dos parâmetros usando
as duas metodologias descritas na Seção 8.5. Como esperado, ambos os procedimentos resultam em
estimativas similares.
> # Estimaç~
ao do modelo
> require(dynlm)
> # Procedimento em duas etapas
> reg1 <- lm(expinf_mensal$x ~ IPCA$x - 1)
> res <- ts(reg1$residuals, start = c(2005,09), freq = 12)
> reg2 <- dynlm(d(expinf_cons, 1) ~ d(ipca, 1) + L(res, 1) -1 )
> # Procedimento em única etapa
> reg <- dynlm(d(expinf_cons, 1) ~ d(ipca, 1) + L(expinf_cons, 1) + L(ipca, 1) -1)
na presença de correlação serial nos resı́duos e discutimos duas frentes para solucionar o problema:
(i) incluir uma estrutura autoregressiva nos erros e aplicar os procedimentos de Cochrane-Orcutt e
Prais-Winsten; ou (ii) tratar a correlação serial como um indı́cio de especificação incorreta do modelo
e incluir defasagens tanto das variáveis independentes quanto da variável dependente pelo emprego
dos modelos autoregressivos com defasagens distribuı́das (ADL). Um exemplo com dados artificiais
contribuiu para o entendimento dos métodos em (i) e expôs os códigos utilizados no software R.
Em contextos em que essa suposição não é razoável, podemos incorrer em conclusões equivocadas.
Apesar das diferentes formas de não estacionariedade, nos restringimos a variáveis integradas e apre-
193
8.7. CONSIDERAÇÕES FINAIS
sentamos o modelo de correção de erro (ECM) como possı́vel solução para problemas associados a
regressões espúrias. Na Tabela 8.4 encontra-se um resumo dos modelos cabı́veis a diferentes situações
Variável Variável
Erro Método de Estimação
Independente Dependente
I(0) I(0) I(0) ADL
Variáveis Cointegradas.
I(1) I(1) I(0)
ECM
Por fim, ilustramos o emprego dos modelos ADL e ECM na modelagem da série histórica das
expectativas de inflação dos consumidores brasileiros usando o IPCA como variável explicativa.
194
9 Modelo Vetorial Autoregressivo
9.1 Introdução
É comum, principalmente para modelos econômicos, que existam fortes evidências de que uma
variável seja definida dentro de um sistema; um exemplo básico são os modelos macroeconômicos de
curto prazo onde PIB, consumo, investimento e gastos governamentais são determinados simultanea-
mente.
Nestes casos, é um erro de especificação modelar esses processos de maneira puramente autore-
gressiva, ou não controlando a dinâmica temporal, dado que podem existir relações entre os choques
contemporâneos. Assim, surgiram os modelos de função de transferência, onde se assumia uma relação
unidirecional entre séries de tempo. Todavia, essa hipótese não corresponde a muitos casos de interesse,
como no exemplo do parágrafo acima.
Uma solução surge com os modelos VAR (do inglês, Vector Autoregressive) no trabalho seminal
de Christopher Sims, Macroeconomics and Reality (Sims, 1980), que propõe tratar todas as variáveis
do sistema simetricamente, sem fazer hipóteses sobre a estrutura de correlação entre elas.
relação entre as váriaveis do sistema, o que é comumente feito através das funções de impulso-resposta
e decomposição de variância; relacionadas ao interessante resultado que nos permite representar o VAR
Entretanto, como em muitos casos é interessante que o modelo possua sentido econômico, o
que é de certa maneira sacrificado pela ausência de uma estrutura de causalidade na especificação
reduzida, vários esforços surgiram na busca por meios de se identificar os parâmetros estruturais após
a estimação do VAR, o que deu origem aos modelos SVAR (do inglês structural VAR).
A abordagem vetorial permite também uma análise muito mais detalhada das relações de coin-
tegração, advindas da extensão do importante trabalho em Engle & Granger (1987), que dá origem aos
modelos VECM (do inglês vector error correction model ), dos quais o método de estimação proposto
por Johansen (1988) é a principal referência.
O conteúdo deste texto está baseado principalmente nos livros de Pfaff (2008), Enders (2008)
e Lütkepohl (2005). A não ser quando explicitamente mencionado, fazem parte do pacote vars (Pfaff
et al., 2013). Ademais, todos os códigos R e dados utilizados para produção deste capı́tulo, alguns
196
CAPÍTULO 9. MODELO VETORIAL AUTOREGRESSIVO
<https://github.com/pedrocostaferreira/Analise-de-Series-Temporais-em-R>.
Este capı́tulo está estruturado da seguinte forma: após esta introdução, a seção 9.2 define o
modelo VAR e apresenta suas principais propriedades, como estabilidade e representação em médias
móveis. Na seção 9.3 são abordadas a estimação e previsão, assim como algumas ferramentas de análise
9.5 apresentam as versões mais robustas do modelo - estrutural (SVAR) e de correção de erro (VECM)
a seção 9.6 apresenta um breve exemplo da metodologia, aplicada a dados de investimento e confiança
da economia brasileira.
9.2.1 Definição
Abordaremos os principais aspectos dos modelos VAR estudando uma especificação bivariada
simples, com a média do processo sendo o único termo determinı́stico; o que não afeta a generalidade
do que será exposto. Tal abordagem auxilia a abstração e facilita a compreensão de vários aspectos
da metodologia.
Assim, partindo da perspectiva de modelos dinâmicos, e seguindo a apresentação feita por Enders
(2008, p. 264), olhamos primeiramente para o que seria um modelo em sistema bivariado (equação
(9.1)). A idéia é que se não sabemos se há feedback 1 , partimos de um modelo em que as inovações
197
9.2. O MODELO VAR
No sistema 9.1, os termos y1,t e y2,t representam a dinâmica contemporânea, relaxando a hipótese
de restrição de feedback. O modelo acima está no que chamamos forma estrutural, devido à presença
Para colocá-lo na forma reduzida, escrevemos o modelo na forma matricial a partir do rearranjo:
1 δ2 y1 α1 β1 β2 y1 e1
= + + (9.3)
δ1 1 y2 α2 β2 β1 y2 e2
t t−1 t
−1
1 δ2 1 −δ1
A−1 = = 1
1−δ1 δ2 (9.5)
δ1 1 −δ2 1
donde obtemos:
yt = a + Byt−1 + εt , (9.6)
Vale observar que a pré-multiplicação acima torna os termos de erro da equação (9.6) (i.e. εt )
combinações lineares dos erros puros (et ), da equação (9.3). Essa transformação tem consequências
importantes, principalmente quando se deseja estudar caracterı́sticas estruturais das variáveis contidas
2 Lembrando que se pode obter a inversa de uma matriz como o produto do inverso de seu determinante e sua adjunta.
198
CAPÍTULO 9. MODELO VETORIAL AUTOREGRESSIVO
no modelo.
narmos ao modelo na forma (9.4) a partir de um modelo reduzido estimado caso desejemos realizar
análises estruturais. Obtendo a matriz A, por exemplo. Para essa identificação (i.e. obter os parâme-
tros da versão estrutural a partir da reduzida) recorremos à restrições, que dão origem aos modelos
Um dos primeiros aspectos de modelos VAR a serem tratados em livros-texto é sua estabilidade.
Da mesma forma que para modelos univariados, a definição das condições de estabilidade de modelos
VAR tem direta relação com a possibilidade de estimação e realização de inferência do modelo.
Similarmente com a condição de que as raı́zes do polinômino definido nos operadores de defa-
sagem de um modelo univariado estejam fora do cı́rculo unitário (Enders, 2008, p. 28), para modelos
multivariados verificamos uma condição a partir dos autovalores da matriz de coeficientes (Enders,
2008, p. 267).
Para ver o porquê disso mais claramente, sigamos o desenvolvimento de Lütkepohl (2005) e
y1 = a + By0 + ε1 ,
y2 = a + By1 + ε2 ,
= a + B(a + By0 + ε1 ) + ε2 ,
..
.
t−1
yt = (I + B + B2 + · · · + Bt−1 )a + Bt y0 + ∑ Bi εt−i
.. i=0
.
Agora, se pudermos assumir que este processo se iniciou no que alguns autores chamam de
199
9.2. O MODELO VAR
k
yt = (I + B + B2 + · · · + Bk )a + Bk+1 yt−k−1 + ∑ Bi εt−i (9.8)
i=0
Daı́ fica claro que o sistema só converge caso Bk desapareça a medida que k → ∞ (por isso a
hipótese do “passado infinito”, que nos permite assumir estarmos em um presente onde k é suficiente-
mente grande). Neste caso, teremos que (I + B + B2 + · · · + Bk ) → (1 − B)−1 , o que permite representar
∞
yt = y + ∑ Bi εt−i (9.9)
i=0
a
onde y = (I−B)
Por outro lado, para que essa convergência ocorra é necessário que os autovalores da matriz B
(que chamaremos λ ) sejam menores que 1 em módulo. Dado que estes satisfazem det(I λ − B) = 0,
definindo z = 1/λ (o recı́proco de λ ) temos a condição para estabilidade de um modelo VAR em (9.10).
Ou seja, se as raı́zes do determinante de B(z) = I − Bz estão fora do cı́rculo unitário, o VAR em questão
é estável3 .
y1 a1 .5 0 0 y1 u1
y2 = a2 + .1 .1 .3 + u2 (9.11)
y2
y2 a2 .0 .2 .3 y2 u2
t t−1 t
200
CAPÍTULO 9. MODELO VETORIAL AUTOREGRESSIVO
1 0 0 .5 0 0 1 − 0.5z 0 0
det 0 1 0 − .3 z = det −0.1z 1 − 0.1z −0.3z (9.12a)
.1 .1
0 0 1 .0 .2 .3 0 −0.2z 1 − 0.3z
As raı́zes desse polinômio são z1 = −15.4858, z2 = 2 e z3 = 2.1525. Como todos estão fora do
cı́rculo unitário, temos que seus recı́procos (os autovalores da matriz de coeficientes) estão dentro do
No caso de modelos VAR, tal relação se dá pelo fato de que modelos VAR estáveis são sempre estaci-
onários. A negativa dessa afirmação não é verdadeira (Lütkepohl, 2005, p. 25). Entretanto processos
instáveis (e.g. que “explodem” em uma determinada direção) não têm apelo econômico, e por isso não
são de interesse.
Simularremos agora um processo VAR e analisaremos suas propriedades de acordo com o que
Consideremos assim o modelo da equação (9.13), no qual por motivos discutidos na seção se-
y
1 0.5
0.7 0.4 y1 ε1
= + + (9.13)
y2 1.0 0.2 0.3 y2 ε2
t t−1 t
É fácil ver que os processos aparentam seguir uma dinâmica comum. Em contrapartida, podemos
201
9.2. O MODELO VAR
6
4
2
0
−6 −4 −2
obter um processo não-estável simplesmente forçando que as raı́zes de seu polinômico sejam unitárias:
y1 1 0 y1 ε1
= + (9.14)
y2 0 1 y2 ε2
t t−1 t
Na Figura 9.2 percebemos uma consequência imediata de processos instáveis: estes tendem a se
Esse processo, apesar da aparente instabilidade, apresenta uma caracterı́stica interessante, exem-
plificada entre as observações de número 100 e 200: ainda que eles venham a romper uma trajetória
comum, tendem recuperá-la nos perı́odos seguintes. Esse fenômeno, visto com mais detalhes na se-
ção 9.5, é conhecido como cointegração; presente, grosso modo, quando duas séries não-estacionárias
202
CAPÍTULO 9. MODELO VETORIAL AUTOREGRESSIVO
10 15 20
5
0
−5
−15
9.3.1 Estimação
VAR estável de ordem infinita (representado como na equação (9.8)) convergem para zero rapidamente,
o que implica ser possı́vel aproximar satisfatoriamente o processo original a partir de um número finito
de coeficientes.
Com base neste resultado, conforme em Pfaff (2008, p. 25), a determinação da quantidade de
defasagens do VAR se faz através de critérios de informação ou pelo erro final de previsão.
previsão(FPE).
VARselect(y, lag.max = 10, type = c(“const”, “trend”, “both”, “none”), season = NULL,
exogen = NULL)
203
9.3. ESTIMAÇÃO, ANÁLISE E PREVISÃO
Para os dados simulados da equação (9.13), a função parametrizada com 6 defasagens máximas
criteria
1 2 3 4 5 6
AIC(n) -0.5302180 -0.5186390 -0.5137012 -0.5055825 -0.4948419 -0.4949713
HQ(n) -0.5168583 -0.4919197 -0.4736222 -0.4521439 -0.4280437 -0.4148134
SC(n) -0.4961893 -0.4505818 -0.4116153 -0.3694680 -0.3246988 -0.2907995
FPE(n) 0.5884767 0.5953307 0.5982786 0.6031576 0.6096740 0.6096001
A primeira parte da saı́da indica o número de defasagens ótimo para cada critério, seguido pela
tabela com o valor de cada um para cada defasagem. A defasagem ótima é sempre aquela para qual o
Na prática, dado que estamos suprimindo termos determinı́sticos, essa é toda informação que
necessitamos para estimar um processo VAR. Como as funções que analisaremos a seguir necessitam
de um processo, estimemos um VAR(1) para os dados que simulamos para a equação (9.13). Isso é
204
CAPÍTULO 9. MODELO VETORIAL AUTOREGRESSIVO
y_1.l1 y_2.l1
0.6770019 0.3888598
y_1.l1 y_2.l1
0.1983028 0.2227066
Observe que os coeficientes estimados estão bem próximos do original. Isso não ocorre sim-
plesmente porque estamos trabalhando com dados simulados, mas sim pela eficiência do MQO para o
caso onde os resı́duos de cada equação são independentes e homocedásticos, dado que foram gerados a
De fato, a utilização do MQO é geralmente o motivo pelo qual a estacionariedade dos dados é
propriedade de interesse na estimação de modelos VAR. Ainda assim, como visto em Enders (2008,
p. 270), vários autores argumentam contra a diferenciação dos dados em caso de não estacionarie-
dade, dada a possibilidade de existência de relações de longo prazo entre as variáveis em nı́vel, o que
9.3.2 Diagnóstico
Após a estimação do modelo, seguimos naturalmente aos testes de diagnóstico, a fim de verifi-
car se os resı́duos satisfazem as hipóteses feitas para o método de estimação, que são em geral ideais
para qualquer modelo. Nesse sentido, os testes mais comuns analisam a presença de correlação re-
sidual e heterocedasticidade, assim como a estabilidade dos parâmetros. Vamos apresentar algumas
implementações desses testes, dos quais os detalhes podem ser vistos em Pfaff (2008, p. 44).
205
9.3. ESTIMAÇÃO, ANÁLISE E PREVISÃO
normality.test(), respectivamente. Além disso, a não ser pela possibilidade de definir a quantidade
de defasagens em ambos os casos (uni e multivariado) presente no primeiro teste, os argumentos das
na equação (9.10), porém calculando os autovalores associados (o que nos permite facilmente avaliar
a condição tendo em mente a definição de z) através da função roots(), assim como os processos de
modulus: retorna o valor absoluto das raı́zes, caso contrário retorna tanto a parte real como
Para nosso modelo estimado, como sabemos que este é estável por construção, esperamos auto-
4 Apesar do nome (raı́zes em inglês), a função retorna na verdade os autovalores associados à expressão em (9.10).
206
CAPÍTULO 9. MODELO VETORIAL AUTOREGRESSIVO
Uma maneira rápida de verificar essa condição no caso de um sistema com várias variáveis é
2
1
Parte Complexa
0
−1
Autovalores
−2
−2 −1 0 1 2
Parte Real
Dado que nosso VAR é bivariado, a saı́da nos apresenta dois autovalores, ambos corroborando
a estabilidade do modelo.
Uma ferramenta útil na análise das interações das variáveis presentes em um modelo VAR pode
ser obtida com algumas simples manipulações algébricas da representação em médias móveis. Se
y1 y1 ε
i 1
= + ∑∞
i=0 B (9.15)
y2 y2 ε2
t t−i
ε1 1 1 −δ1 e1
= 1−δ1 δ2 (9.16)
ε2 −δ2 1 e2
t−i t−i
207
9.3. ESTIMAÇÃO, ANÁLISE E PREVISÃO
temos,
y1 y1 i
1 −δ1 e1
= + 1−δ11 δ2 ∑∞
i=0 B (9.17)
y2 y2 −δ2 1 e2
t t−i
y1 y1 ϕ1,1 (i) ϕ1,2 (i) e1
= + ∑∞
i=0 (9.18)
y2 y2 ϕ2,1 (i) ϕ2,1 (i) e2
t t−i
onde cada ϕi, j é uma função de impulso-resposta e seu gráfico é uma maneira prática de visualizar
respostas a esses choques, que chamamos impulso, convirjam para zero em tempo finito, preferencial-
mente em poucos lags. Vale observar que ϕi, j (0), a resposta instantânea, é chamado de multiplicador
de choque.
O gráfico de ϕi, j (t) é formado para uma sequência de valores de tempo (i.e. t = 0, 1, 2, . . . , n, . . . )
assumindo na equação (9.18) que εt = 1. Dessa maneira a interpretação se inicia assumindo um choque
de uma unidade na variável j, com a respectiva resposta na variável i dada pelo comportamento gráfico.
irf(x, impulse = NULL, response = NULL, n.ahead = 10, ortho = TRUE, cumulative = FALSE,
...)
ortho: permite calcular respostas ortogonais - livre de ruı́dos de outras variáveis - caso os resı́duos
5 De fato, essa é a realidade em geral e a solução empregada por esse argumento, que é a mais simples, é a realização
208
CAPÍTULO 9. MODELO VETORIAL AUTOREGRESSIVO
Como exemplo, geraremos a função para o modelo da equação (9.13) (Figura 9.4).
1.0 1.0
0.8 0.8
0.6 0.6
y_1
y_1
0.4 0.4
0.2 0.2
0.0 0.0
1.0 1.0
0.8 0.8
0.6 0.6
y_2
y_2
0.4 Time 0.4 Time
0.2 0.2
0.0 0.0
0 10 20 30 40 0 10 20 30 40
Time Time
A interpretação é bastante direta: um choque de uma unidade na variável y1 gera uma pertur-
bação exponencialmente descrescente na variável y2 (Figura 9.4a), que desaparece completamente por
volta do perı́odo 18. Já y2 tem um efeito crecente em y1 nos primeiros dois perı́odos (Figura 9.4b), a
Outra perspectiva é oferecida quando calculamos o efeito acumulado (Figura 9.5), que nada
mais é do que a soma dos choques em cada perı́odo. Como as funções convergem a zero6 , o efeito
cumulativo também apresenta truncagem. Na literatura, essa função é conhecida como multiplicador
de longo-prazo.
8 8
6 6
y_1
y_1
4 4
2 2
0 0
8 8
6 6
y_2
y_2
4 Time 4 Time
2 2
0 0
0 10 20 30 40 0 10 20 30 40
Time Time
Figura 9.5: FIR Acumulada da equação (9.13), com 95% Bootstrap CI e 100 repetições
A interpretação neste caso, é a de que o choque de uma unidade em y2 gera uma resposta
209
9.3. ESTIMAÇÃO, ANÁLISE E PREVISÃO
Outra técnica muito útil é a decomposição de variância dos erros de previsão, implementada na
função fevd()7 :
1.0
y_2
y_1
0.8
0.8
0.6
0.6
%
%
0.4
0.4
0.2
0.2
0.0
0.0
1 2 3 4 5 6 7 1 2 3 4 5 6 7
Horizonte Horizonte
Em linhas gerais, a função retorna quanto da variação (percentual) do erro de previsão é atribuı́do
a cada variável para uma sequência de valores no tempo. Ou seja, a variância total dos erros de previsão
essa análise nos ajuda a verificar quais variáveis são realmente importantes quando o objetivo é realizar
previsões. Quanto maior for a contribuição percentual de uma variável para a variação total de outra,
mais importante ela é para realizarmos boas previsões da variável da qual realizamos a decomposição.
Assim, na decomposição da variância da equação (9.13), verificamos que por volta de 50% dos
desvios da previsão de y2 em relação aos valores observados se devem às oscilações de ε1 (Figura 9.6b),
enquanto que a mesma relação para ε2 e y1 é inferior a 10% (Figura 9.6a). Tais efeitos eram esperados,
dado que a parte estocástica de y2 depende fortemente dos choques estruturais em y1 , como ressaltamos
210
CAPÍTULO 9. MODELO VETORIAL AUTOREGRESSIVO
9.3.5 Previsões
Duas maneiras para gerar previsões estão implementadas em predict() e fanchart(), a pri-
meira retorna os pontos médios dos intervalos de confiança para cada previsão, enquanto a segunda
Várias parametrizações estão disponı́veis (a maior parte similar às disponı́veis em plot()).
Abaixo segue a definição função fanchart():
fanchart(x, colors = NULL, cis = NULL, names = NULL, main = NULL, ylab = NULL, xlab
= NULL, col.y = NULL, nc, plot.type = c(“multiple”, “single”), mar = par(“mar”), oma =
par(“oma”), ...)
2
2
0
0
−2
−2
−4
−4
450 460 470 480 490 500 450 460 470 480 490 500
As previsões (Figura 9.7) foram geradas para 10 perı́odos a frente, com intervalo de confiança de
95%, onde a tonalidade mais escura indica maior probabilidade do valor a ser observado se encontrar
naquela região. Novamente, dada a estabilidade do modelo, a partir de alguns passos as previsões
211
9.3. ESTIMAÇÃO, ANÁLISE E PREVISÃO
entre as variáveis. Uma metodologia muito utilizada para esse fim é a causalidade de Granger (Granger,
1969). Todavia, é importante salientar que essa metodologia se baseia em inferir se valores passados8
Dessa maneira, o teste não nos informa nada a respeito de causalidade em termos literais, mas,
sim, oferece evidências estatı́sticas de que oscilações passadas de uma variável estão correlacionadas
y1,t = µ1 + β1,t−1 y1,t−1 + · · · + β1,t−p y1,t−p + β2,t−1 y2,t−1 + · · · + β2,t−k y2,t−k + ε1,t (9.19)
cause: permite especificar a variável de “causa”; se não especificado, utiliza-se a primeira variável
do data frame;
$Granger
8 Assim, não vale associar a existência de Granger-causalidade com exogeneidade, dado que esta necessita da ausência
de efeitos contemporâneos.
212
CAPÍTULO 9. MODELO VETORIAL AUTOREGRESSIVO
A saı́da do teste apresenta também uma estatı́stica acerca de relações contemporâneas, que pode
9.4.1 Definição
Ainda que os modelos VAR resolvam as limitações da rigidez de feedback dos modelos de funções
de transferência, tratando todas as variáveis simetricamente, tal abordagem , como enfatiza Enders
estimado. Como vimos na definição teórica do modelo, os erros da forma reduzida são combinações
lineares dos erros da forma irrestrita, o que na prática pode se traduzir em correlações significativas
entres os termos de erro de diferentes equações, de maneira que não somos capazes de isolar os choques
Além do problema da interpretação econômica, como na maioria das vezes um modelo reduzido
será sobreparametrizado, para fins de predição modelos estruturais são também mais atrativos, dado
Uma maneira simples de abordar essa limitação é estruturar a dinâmica dos resı́duos de maneira
recursiva, o que se traduz em trasformar a matriz da variância e covariância dos erros numa forma
triangular. No sistema bivariado em (9.3), um exemplo desse tipo de restrição é impor δ2,1 = 0, o que
após pré-multiplicação do sistema por A−1 , resulta em uma dinâmica recursiva nos resı́duos.
ε1 1 −δ 1,1 ε1
= (9.20)
ε2 0 1 ε2
t−i t−i
Ou seja, o termo de erro do processo y1,t é uma composição dos erros estruturais, o que na litera-
213
9.4. VAR ESTRUTURAL
tura costuma-se chamar choques puros. Todavia, o ponto importante é que através dessa especificação
Formalmente, o modelo VAR estrutural difere da forma reduzida se a matriz A na equação (9.21)
difere da identidade9 .
De fato, é condição necessária, mas não suficiente, que em um modelo VAR de n variáveis sejam
n(n−1)
impostas 2 restrições no modelo estrutural para ser possı́vel recuperá-lo a partir da estimação da
forma reduzida. Quanto à insuficiência, a falta de uma estrutura triangular é um exemplo de limitação
em sistemas com o número adequado de restrições mas que ainda não podem ser identificados.
muito comum em trabalhos empı́ricos, um problema que surge é a ordenação dos choques. No sistema
(9.20), por exemplo, estamos impondo que ε2 precede ε1 uma vez que o primeiro entra diretamente
na equação do segundo, que apenas afeta y2 no perı́odo seguinte. Esse ordenamento pode não ser tão
fácil quando se trata de várias variáveis, o que acaba criando a necessidade de encontrar justificativas
Todavia, a importância da ordenação é mais relevante caso a correlação entre os resı́duos seja
alta e estatisticamente siginificante, uma vez que as variáveis seriam, portanto, mais sensı́veis a choques
em outras. Entretanto, no caso de sistemas de variáveis econômicas, é comum que muitas apresentem
214
CAPÍTULO 9. MODELO VETORIAL AUTOREGRESSIVO
9.4.2 Exemplo
1 −0.7 y1 0.5 0.2 y1 −0.3 −0.7 y1 ε1
= + + (9.22)
0.8 1 y2 −0.2 −0.5 y2 −0.1 0.3 y2 ε2
t t−1 t−2 t
estimar a matriz A, quando queremos obter os coeficientes contemporâneos das variáveis; na B, quando
queremos obter a matriz de variância e covariância dos choques puros ou restrições para obter em
ambas10 .
Vamos aqui simular o sistema da equação (9.22), na qual uma matriz do tipo A, que está pré-
multiplicando seu lado direito define as relações contemporâneas entre y1 e y2 . Em seguida vamos
modelo VAR com os dados simulados anteriormente, e em seguida impomos as restrições na matriz de
covariância dos choques puros (argumento Amat), que já sabemos quais são dado que definimos essa
215
9.5. NÃO-ESTACIONARIEDADE E COINTEGRAÇÃO
que estabelecemos:
Estimated A matrix:
y1 y2
y1 1.0000 -0.6975
y2 0.8571 1.0000
Como visto nas seções anteriores, a proposta original dos modelos VAR era apenas a obtenção
de evidências estatı́sticas acerca da existência de relações entre variáveis de um sistema. Porém, dado
o forte interesse de se poder mensurar essas relações preservando seu sentido econômico e os reflexos
de choques de uma variável nas outras do sistemas, surgiu a proposta dos modelos estruturais, que
Ainda que não sugerida pelo autor da metodologia, a estacionariedade das variáveis do sistema
foi largamente imposta em diversos trabalhos empı́ricos, principalmente pela possibilidade de assim se
de log-verossimilhança, dos quais os detalhes sugerimos ao leitor consultar diretamente no manual do pacote vars.
216
CAPÍTULO 9. MODELO VETORIAL AUTOREGRESSIVO
O problema, como observa Pfaff (2008), é que a maioria das deduções de longo prazo em modelos
macroeconômicos surge de modelos com variáveis em nı́vel, o que impõe grande desafio em avaliar
resultados empı́ricos a partir de modelo com variáveis diferenciadas, que é a solução mais comum
Por outro lado, modelos lineares estimados por métodos clássicos utilizando variáveis não esta-
cionárias geram problemas ainda mais sérios, como as notáveis regressões espúrias reveladas em Yule
(1926).
9.5.1 Engle-Granger
O problema apresentado anteriormente foi uma das motivações do trabalho seminal de Engle
& Granger (1987), que possibilitou uma abordagem endógena da não estacionariedade, onde apontam
que em alguns casos é possı́vel representar a tendência estocástica presente nas variáveis como uma
função linear delas mesmas, o que tem como principal consequência a possibilidade de estimar relações
Mais precisamente, os autores provaram que é possı́vel que a combinação linear de dois processos,
como no sistema 9.23 com ordem de integração maior ou igual a 1 tenha ordem de integração inferior.
k l
yt = α1 + ∑ β1,i yt−1 + ∑ δ1,i xt + ε1,t ,
i=1 i=1
p q
(9.23)
xt = α2 + ∑ β2,i xt−1 + ∑ δ2,i yt + ε2,t ,
i=1 i=1
Definição 9.5.1. Os componentes de um vetor xt são ditos cointegrados de ordem (d, b) se: i) todos
os componentes são integrados de ordem d e ii) existe um vetor não-nulo α tal que α ′ xt é cointegrado
De maneira simplificada, a solução prática do teorema é a inclusão dos resı́duos (zˆt ) da Regressão
k
yt = ∑ αi xt,i + zt (9.24)
i=1
217
9.5. NÃO-ESTACIONARIEDADE E COINTEGRAÇÃO
Como zˆt representa as oscilações em relação ao comportamento de equilı́brio de longo prazo das
variáveis, em teoria espera-se que sejam estacionários; o que deve ser testado antes de imputá-los no
sistema.
O resultado final (sistema 9.25), é chamado Modelo de Correção de Erros (ECM, do inglês
error-correction model ) uma vez que os desvios em t − 1 são corrigidos em t dada a presença de zt ; do
k l
∆yt = ϕ1 + λ1 zt + ∑ β1,i ∆yt−1 + ∑ δ1,i ∆xt + ε1,t ,
i=2 i=2
p q
(9.25)
∆xt = ϕ2 + λ2 zt + ∑ β2,i ∆xt−1 + ∑ δ2,i ∆yt + ε2,t ,
i=2 i=2
9.5.2 VECM
Uma clara limitação da abordagem de Engle-Granger surge quando o sistema contém mais de
duas variáveis. Se um sistema possui n variáveis, é fácil verificar que se pode obter até n − 1 relações
de cointegração. Assim, a medida que n cresce estimar essas relações fica mais trabalhoso.
Assumindo hipóteses análogas as de Engle-Granger, Campbell & Shiller (1987) definem cointe-
Definição 9.5.2. Um vetor yt de dimensão n é dito cointegrado se existir pelo menos um vetor β
a dois L.I.12 ) dizemos que yt é cointegrado com posto13 de integração r e definimos a matriz B =
β ′ yt são tendência-estacionários.
Apresentamos agora o modelo de correção na forma vetorial14 . Para isso, estabelecemos nova-
p
yt = µ + ∑ Πi yt−i + ΦDt + εt , (9.26)
i=1
218
CAPÍTULO 9. MODELO VETORIAL AUTOREGRESSIVO
onde Πi e Dt são a matriz de coeficientes das variáveis defasadas - sobre a qual inferiremos a existência
A partir dessa estrutura, e da definição 9.5.2, extraı́mos duas versões de um modelo de correção
vetorial15 . O primeiro (equação (9.27) com os impactos cumulativos de longo prazo, dados pelas
p−1
∆yt = µ + ∑ Γi ∆yt−i+2 + Πi yt−p + ΦDt + εt (9.27a)
i=1
Γi = −(I − Π1 − · · · − Πi ) (9.27b)
Πi = −(I − Π1 − · · · − Π p ) (9.27c)
A segunda especificação (equação (9.28) por sua vez mede os impactos transitórios, através de
uma diferente especificação das matrizes Γi e a presença de yt em nı́vel com apenas uma defasagem.
p−1
∆yt = µ + ∑ Γi ∆yt−i+2 + Πi yt−1 + ΦDt + εt (9.28a)
i=1
Γi = −(Πi+1 − · · · − Π p ) (9.28b)
Πi = −(I − Π1 − · · · − Π p ) (9.28c)
Existem três casos possı́veis para estrutura de Π, com implicações nas relações de cointegração
do modelo. O primeiro é quando o posto de Π é igual a k. Nesses casos existem k combinações lineares
possı́veis, todas L.I. Isso ocorre se todas as variáveis no vetor yt são estacionárias, de forma que um
O caso em que o posto é nulo não é interessante, nesse caso somente a solução trivial é esta-
cionária (i.e. não há relação de cointegração), de maneira que o VAR em diferenças é a alternativa
natural.
Finalmente, quando o posto da matriz é maior que zero e menor que k existem relações de
cointegração não triviais (i.e. Πyt forma um sistema estacionário). De fato, dado que a matriz Π é
15 Apesar das diferenças, a análise sobre a matriz Π será a mesma para ambas especificações.
219
9.5. NÃO-ESTACIONARIEDADE E COINTEGRAÇÃO
matriz de ajuste, dado que seus elementos determinam a velocidade com a qual os processos voltam a
seu comportamento de longo prazo. Como exposto anteriormente, as colunas de β são os vetores de
cointegração do sistema.
A estimação dos modelos de cointegração vetorial tem como referência o trabalho em Johansen
(1988) que desencadeou uma série de outros que consolidaram a metodologia atual.
Sucintamente, os resultados dos trabalhos nos fornecem duas estatı́sticas, baseadas em maximi-
zação de funções de verossimilhança baseadas em regressões auxiliares nas diferenças e valores defasados
do vetor yt .
n
−2 ln(Q) = −T ∑ (1 − λ̂i ) (9.29)
i=r+1
A segunda, de comparação entre dois valores r e r + 1, proposta em Johansen & Juselius (1990),
chamada estatı́stica do máximo autovalor:
Um detalhe importante é a utilização dos valores crı́ticos adequados para cada especificação
Para exemplificar, simularemos um sistema composto por três processos, no qual dois deles são
AR(1) com uma componente linear do terceiro processo, que é um passeio aleatório. Ou seja, as três
16 Diz-se que uma matriz é singular se não possui inversa, condição equivalente a ter posto menor que sua dimensão.
17 Às vezes referida como estatı́stica do posto.
220
CAPÍTULO 9. MODELO VETORIAL AUTOREGRESSIVO
221
9.5. NÃO-ESTACIONARIEDADE E COINTEGRAÇÃO
Nos resultados abaixo, r = 0 equivale à hipótese nula de não existência de relações de cointegra-
######################
# Johansen-Procedure #
######################
Eigenvalues (lambda):
[1] 3.357938e-01 1.410541e-01 4.949758e-02 7.842278e-19
No resultado temos que as estatı́sticas de teste rejeitam as duas hipóteses nulas iniciais (r = 0 e
r ≤ 1) a 1% de significância, enquanto que a existência de duas relações apenas a 5%18 . Como temos
######################
# Johansen-Procedure #
######################
Eigenvalues (lambda):
[1] 3.357938e-01 1.410541e-01 4.949758e-02 7.842278e-19
Por padrão, a saı́da da função ca.jo() apresenta os vetores de cointegração, porém normalizados
para a primeira variável, uma transformação proposta por Johansen, explicada com mais detalhe em
18 A interpretação natural para cada linha da tabela (de baixo pra cima) é de que se a hipótese nula de i ou menos
vetores de cointegração é rejeitada, exitem portanto mais do que i vetores; o que verificamos com a estatı́stica da linha
imediatamente superior.
222
CAPÍTULO 9. MODELO VETORIAL AUTOREGRESSIVO
Pfaff (2008, p. 83), que permite identificarmos esses vetores de acordo como aparecem na relação
r: posto de cointegração ;
reg.number: quantas relações queremos que ele retorne (a ordem é definida pela magnitude do
A saı́da da função retorna não só os vetores (beta), assim como a matriz de coeficientes do
modelo (rlm):
Coefficients:
y1.d y2.d y3.d
ect1 -0.28617 -0.04983 0.03755
ect2 -0.05629 -0.88156 -0.07667
y1.dl1 -0.22437 -0.10328 0.07510
y2.dl1 0.08227 -0.80306 0.01229
y3.dl1 0.07289 -0.05364 -0.16650
$beta
ect1 ect2
y1.l2 1.0000000 6.938894e-18
y2.l2 0.0000000 1.000000e+00
y3.l2 -0.8333508 2.676756e-0
constant 0.3157532 6.741008e-02
Na seção correspondente aos vetores de cointegração (beta), temos duas colunas, cada uma com
1 entre y1 e si mesmo. Como y2 não está na equação de y1 , o coeficiente estimado foi nulo. Já a relação
19 Os coeficientes estão com sinais trocados pois na identificação proposta por Johansen estes termos aparecem do
223
9.6. INVESTIMENTO E CONFIANÇA INDUSTRIAL
industrial, a partir de um modelo VAR contendo também proxies para o hiato do produto, capacidade
instalada e incerteza econômica20 . Os dados utilizados vão de setembro de 2005 a março de 2016.
divulgada pelo Instituto Brasileiro de Geografia e Estatı́stica (IBGE). O hiato do produto é estimado
utilizando o Índice de Atividade Econômica do Banco Central do Brasil (IBC-Br), ao qual aplicamos
o filtro HP (Hodrick & Prescott, 1997) para obter as flutuações em torno da tendência de longo prazo.
incerteza econômica utiliza-se o Indicador de Incerteza da Economia - Brasil (IIE-Br.21 .). Todas essas
séries são produzidas e divulgadas pelo Instituto Brasileiro de Economia da FGV (FGV|IBRE).
$selection
AIC(n) HQ(n) SC(n) FPE(n)
3 2 1 3
$criteria
1 2 3 4 5 6
AIC(n) 6.208073 5.955130 5.932581 6.163804 6.278435 6.412128
HQ(n) 6.498722 6.487987 6.707645 7.181075 7.537914 7.913815
SC(n) 6.924142 7.267924 7.842099 8.670046 9.381402 10.111820
FPE(n) 496.978658 386.860247 380.567621 485.178840 554.564507 652.248330
7 8 9 10 11 12
AIC(n) 6.391821 6.465630 6.550572 6.614371 6.575081 6.570238
HQ(n) 8.135714 8.451731 8.778880 9.084887 9.287804 9.525168
SC(n) 10.688236 11.358770 12.040436 12.700960 13.258394 13.850275
FPE(n) 665.504804 757.002843 886.304953 1038.063235 1125.684215 1304.257888
Como os dados são mensais, seguimos a sugestão comum na literatura de verificar o número de
20 Vale observar que não utilizamos uma proxy para custo de capital, pois não consta no estudo original do qual este
exemplo se deriva.
21 Desenvolvido pelo Núcleo de Métodos Estatı́sticos e Computacionais (FGV|IBRE)
224
CAPÍTULO 9. MODELO VETORIAL AUTOREGRESSIVO
apenas o AIC e FPE convergem, o que pode causar confusão na escolha. Todavia, há de se ter em
mente que um dos principais propósitos da inclusão de defasagens em modelos autoregressivos é reduzir
Parametrizamos então o modelo com 3 lags e a presença de constante, uma vez que nenhuma
variável aparenta apresentar tendências determinı́sticas, porém possuem perı́odos condizentes com a
4
hiato
0
bk
80
−4
60
−8
100
iiebr
110
ici
80
90
1996 1998 2000 2002 2004 2006
82
nuci
Ano
78
74
Ano
Dado o que o modelo envolve 5 variáveis e três defasagens, a saı́da da função summary() é
extensa, de maneira que apresentaremos apenas os resultados para a equação da variável de Produção
de Bens de Capital (bk), com a omissão de algumas linhas da saı́da, incluindo as de variáveis não
estatisticamente significantes (i.e. p-valor acima de 10%). Vale ressaltar ainda que mesmo que algumas
variáveis e defasagens não sejam significantes para essa equação, o são para outras, de maneira que
decidimos mantê-las22 :
22 De fato, para podermos definir especificações distintas para cada equação, o ideal seria estimar o modelo através
do método SUR (Zellner, 1962) (do inglês seemingly unrelared regressions), não disponı́vel nos pacotes discutı́dos nesse
capı́tulo.
225
9.6. INVESTIMENTO E CONFIANÇA INDUSTRIAL
---
Signif. codes: 0 *** 0.001 ** 0.01 * 0.05 . 0.1 1
Após estimar o modelo verificamos sua estabilidade e realizamos os testes de correlação residual
dentro do cı́rculo unitário (Figura 9.10), de maneira que o processo é estável, o que é corroborado nos
testes de flutuação empı́rica (Figura 9.11).
2
1
Parte Complexa
0
−1
Autovalores
−2
−2 −1 0 1 2
Parte Real
no teste mais adequado ao modelo dado a tamanho da amostra (Portmanteau ajustado), sem
226
CAPÍTULO 9. MODELO VETORIAL AUTOREGRESSIVO
−1.0
0.0 0.2 0.4 0.6 0.8 1.0 0.0 0.2 0.4 0.6 0.8 1.0
Time Time
−1.0
0.0 0.2 0.4 0.6 0.8 1.0 0.0 0.2 0.4 0.6 0.8 1.0
Time Time
Time
ARCH (multivariate)
Notamos que aambos os testes apresentam p-valores bem mais altos que os adequados para po-
dermos prosseguir, o que não se altera muito quando estimamos o modelo com os dados diferenciados.
Todavia, como o propósito deste exemplo é tão apenas apresentar aplicações das metodologias, de
227
9.6. INVESTIMENTO E CONFIANÇA INDUSTRIAL
maneira que não realizamos um estudo exaustivo da especificação ideal do modelo. Todavia, conside-
raremos e estabilidade do modelo e conduziremos o estudo mesmo sem poder considerar ausência de
correlação residual e homocedasticidade dos resı́duos. Entretanto, alertamos ao leitor que a rejeição
Assim, partimos à análise das funções de impulso resposta, onde se aplica a identificação recursiva
Para a produção de bens de capital (bk) (Figura 9.12), obtemos respostas estatisticamente
siginificantes para a confiança (ici), hiato (hiato) e incerteza (iiebr), além dele próprio. A função
sugere que choques na confiança aumentam a produção de bens de capital, enquanto que choques no
2
from ici
−1
−2
4
3
2
Time
from bk
1
0
−1
−2
−3
3
2
Time
from nuci
−1
−2
2
0
from hiato
Time
−2
−4
−6
2
Time
from iiebr
−1
−2
0 5 10 15 20 25 30
Time
Para a confiança e a incerteza, a resposta atinge maior valor entre o 5ž e 7ž mês do choque,
a partir de onde convergem a zero. Para o hiato a resposta só parece ser significativa a partir do 8ž
mês, durando até o 26ž, o que pode ocorrer tanto pelo tempo de ajuste necessário entre os pedidos e
a produção quanto por uma possı́vel espera dos agentes associados à demanda em verificar se o desvio
228
CAPÍTULO 9. MODELO VETORIAL AUTOREGRESSIVO
do produto potencial é de fato um sinal de aquecimento fora de equilı́brio da economia, o que requer
2
from ici
−1
−2
2
1
Time
from bk
−1
−2
−3
3
2
Time
from nuci
−1
−2
2
0
from hiato
Time
−2
−4
−6
2
Time
from iiebr
−1
−2
0 5 10 15 20 25 30
Time
Para confiança industrial, Figura 9.13, as respostas siginificativas ocorrem para o hiato e a
incerteza. As funções sugerem que choques em ambas as variáveis diminuem a confiança do setor
industrial. Porém, enquanto a resposta máxima da incerteza ocorre em torno do 5ž mês, é a partir daı́
que se faz sentir a resposta de desvios do hiato, o que deve possuir explicação similar à da produção
de bens de capital.
Com base nesses resultados, vemos que confiança e incerteza são relevantes no estudo do com-
portamento da formação bruta de capital fixo. Ainda mais, vemos como os efeitos se concentram
nos perı́odos imediatamente subsequentes aos choques, com picos antes dos 6 meses, se dissipando
em menos de um ano. Ou seja, essas variáveis não aparentam explicar a dinâmica de longo prazo da
229
9.7. CONSIDERAÇÕES FINAIS
Neste capı́tulo fomos apresentados ao modelos VAR e suas principais propriedades, como estabi-
lidade e representação em médias móveis, que sustentam resultados importantes tanto para estimação
quanto análise do modelo. Entre as ferramentas para análise, discutimos as funções de impulso-
resposta, a decomposição de erros de previsão e a causalidade de Granger, que podem oferecer impor-
tantes informações quanto ao comportamento estrutural do modelo. Dado que todas essas ferramentas
são melhor aproveitadas quando somos capazes de identificar os parâmetros estruturais do modelo,
relações de longo prazo presentes em muitos modelos envolvendo séries não-estacionárias, discutimos os
modelos vetoriais de correção de erro (VECM), aos quais se aplicam as mesmas ferramentas de análise
de um VAR comum. Finalmente, fizemos um breve estudo envolvendo proxies para investimento e
230
Referências Bibliográficas
Akaike, H. (1973). Information Theory and an Extension of the Maximum Likelihood Principle. 2nd
Bai, J., & Perron, P. (2003). Computation and Analysis of Multiple Structural Change Models. Journal
of Applied Econometrics, 18 (1), 1–22. 110, 112
Box, G. E. P., & Jenkins, G. M. (1970). Time Series Analysis: Forecasting and Control. 116, 117, 129,
Breusch, T. S. (1978). Testing for Autocorrelation in Dynamic Linear Models*. Australian Economic
Brown, R. L., Durbin, J., & Evans, J. M. (1975). Techniques for Testing the Constancy of Regression
Relationships over Time. Journal of the Royal Statistical Society. Series B (Methodological), 37 (2),
149–192. 108
Calcagno, V. (2013). glmulti: Model Selection and Multimodel Inference Made Easy. R package version
1.0.7.
Campbell, J. Y., & Shiller, R. J. (1987). Cointegration and Tests of Present Value Models. Journal
Chan, K.-S., & Ripley, B. (2012). TSA: Time Series Analysis. R package version 1.01.
Chow, G. C. (1960). Tests of Equality between Sets of Coefficients in Two Linear Regressions. Eco-
Cochrane, D., & Orcutt, G. H. (1949). Application of Least Squares Regression to Relationships
Containing Auto-correlated Error Terms. Journal of the American Statistical Association, 44 (245),
32–61. 177
Cowpertwait, P. S., & Metcalfe, A. V. (2009). Introductory Time Series with R. Springer Science &
Dickey, D. A., & Fuller, W. A. (1979). Distribution of the Estimators for Autoregressive Time Series
with a Unit Root. Journal of the American Statistical Association, 74 (366a), 427–431. 123
Dolado, J. J., Jenkinson, T., & Sosvilla-Rivero, S. (1990). Cointegration and Unit Roots. Journal of
Dragulescu, A. A. (2014). xlsx: Read, Write, Format Excel 2007 and Excel 97/2000/XP/2003 Files.
Durbin, J. (1970). Testing for Serial Correlation in Least-squares Regression when some of the Re-
gressors are Lagged Dependent Variables. Econometrica: Journal of the Econometric Society, (pp.
410–421). 175
Durbin, J., & Watson, G. S. (1950). Testing for Serial Correlation in Least Squares Regression. I.
Durbin, J., & Watson, G. S. (1951). Testing for Serial Correlation in Least Squares Regression. II.
Durbin, J., & Watson, G. S. (1971). Testing for Serial Correlation in Least Squares Regression. III.
Elliott, G., Rothenberg, T., & Stock, J. (1996). Efficient Test for an Autoregressive Unit Root.
232
Enders, W. (2008). Applied Econometric Time Series., vol. 4. John Wiley & Sons Inc. 94, 95, 96, 102,
Engle, R. F. (1984). Wald, Likelihood Ratio, and Lagrange Multiplier Tests in Econometrics. Handbook
Engle, R. F., & Granger, C. W. (1987). Co-Integration and Error Correction: Representation, Esti-
Ferreira, P. C., Gondin, J. L., & de Mattos, D. M. (2015). Métodos de Ajuste Sazonal para Séries
Findley, D. F., Monsell, B. C., Bell, W. R., Otto, M. C., & Chen, B.-C. (1998). New Capabilities
and Methods of the X-12-ARIMA Seasonal-adjustment Program. Journal of Business & Economic
Fok, D., Franses, P. H., & Paap, R. (2005). Performance of Seasonal Adjustment Procedures: Simu-
Fox, J., & Weisberg, S. (2011). An R Companion to Applied Regression. Thousand Oaks CA: Sage, 2
ed.
French, M. W. (2001). Estimating Changes in Trend Growth of Total Factor Productivity: Kalman
and H-P Filters versus a Markov-Switching Framework. FED - Finance and Economics Discussion
Gavrilov, I., & Pusev, R. (2014). normtest: Tests for Normality. R package version 1.1.
URL https://CRAN.R-project.org/package=normtest 118
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
Gómez, V., & Maravall, A. (1998). Guide for Using the Programs TRAMO and SEATS . Banco de
España. 140
233
Granger, C. W. (1969). Investigating Causal Relations by Econometric Models and Cross-spectral
Granger, C. W., & Newbold, P. (1974). Spurious Regressions in Econometrics. Journal of econometrics,
Granger, C. W., & Newbold, P. (1976). Forecasting Transformed Series. Journal of the Royal Statistical
Graves, S. (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. Prentice Hall, Upper Saddle River, 5 ed. 183
Hamilton, J. D. (1994). Time Series Analysis. Princeton University Press. 94, 123, 128, 163
Harvey, A., & Shepard, N. (1993). Structural Time Series Models. Elsevier Science Publishers B.V..
140
Hildreth, C., & Lu, J. (1960). Demand Relations with Auto-correlated Disturbances, Michigan State
Hodrick, R., & Prescott, E. (1997). Postwar Business Cycles. Jornal of Money, Credit and Banking.
112, 224
Hungarian Central Statistical Office (2007). Seasonal Adjustment Methods and Pratices. European
Hylleberg, S., Engle, R. F., Granger, C. W., & Yoo, B. S. (1990). Seasonal Integration and Cointegra-
Hyndman, R. J. (2015). forecast: Forecasting Functions for Time Series and Linear Models. R package
version 6.2.
Hyndman, R. J., Koehler, A. B., Ord, J. K., & Snyder, R. D. (2008). Forecasting with Exponential
Smoothing: The State Space Approach. Springer Science & Business Media. 70
Hyndman, R. J., Razbash, S., & Schmidt, D. (2012). Forecasting Functions for Time Series and Linear
234
IBGE (2015a). Pesquisa de Orçamentos Familiares.
IBGE (2015c). Pesquisa Industrial Mensal Produção Fı́sica - Brasil - Notas Metodológicas.
URL http://www.ibge.gov.br/home/estatistica/indicadores/industria/pimpfbr/notas_
metodologicas.shtm 151
URL http://www.ipea.gov.br/portal/index.php?option=com_content&view=article&id=
21971&catid=10&Itemid=9 64
Jarque, C. M., & Bera, A. K. (1980). Efficient Tests for Normality, Homoscedasticity and Serial
Independence of Regression Residuals. Economics letters, 6 (3), 255–259. 135
Johansen, S., & Juselius, K. (1990). Maximum Likelihood Estimation and Inference on Cointegrati-
onwith Applications to the Demand for Money. Oxford Bulletin of Economics and Statistics, 52 (2),
169–210. 220
Keele, L., & De Boef, S. (2004). Not Just for Cointegration: Error Correction Models with Statio-
Kleiber, C., & Zeileis, A. (2008). Applied Econometrics with R. Springer Science & Business Media.
112
Komsta, L., & Novomestky, F. (2015). Moments, Cumulants, Skewness, Kurtosis and Related Tests.
44
Koopman, S. J., Harvey, A., Doornik, J., & Shepard, N. (2009). Structural Time Series Analyser,
235
Kwiatkowski, D., Phillips, P. C., Schmidt, P., & Shin, Y. (1992). Testing the Null Hypothesis of
Stationarity Against the Alternative of a Unit Root: How Sure Are We that Economic Time Series
Li, Z. (2010). dcv: Conventional Cross-validation Statistics for Climate-growth Model. R package
version 0.1.1.
Livsey, J., Pang, O., & McElroy, T. (2014). Effect of Trading Day Regressors on Seasonal Adjustment
Ljung, G. M., & Box, G. E. (1978). On a Measure of Lack of Fit in Time Series Models. Biometrika,
Lütkepohl, H. (2005). New Introduction to Multiple Time Series Analysis, vol. 3. Springer Science &
Business Media. 196, 199, 201
MacKinnon, J. G. (1996). Numerical Distribution Functions for Unit Root and Cointegration Tests.
Mohr, F. (2015). prais: Prais-Winsten Estimation Procedure for AR(1) Serial Correlation. R package
version 0.1.1.
Morettin, P. A., & Toloi, C. (2006). Análise de Séries Temporais. 2. ed. São Paulo: Editora Blucher.
70, 81, 83
Newey, W. K., & West, K. D. (1987). A Simple, Positive Semi-Definite, Heteroskedasticity and
Pfaff, B. (2008). Analysis of Integrated and Cointegrated Time Series with R. Springer Science &
Business Media. 196, 201, 203, 205, 213, 215, 217, 218, 223
Pfaff, B., Stigler, M., & Pfaff, M. B. (2013). Package vars. 196
Pfaff, B., Zivot, E., & Stigler, M. (2016). urca: Unit Root and Cointegration Tests for Time Series
Data.
236
Phillips, P. C., & Perron, P. (1988). Testing for a Unit Root in Time Series Regression. Biometrika,
Pindyck, R. S., & Rubinfeld, D. L. (1998). Econometric Models and Economic Forecasts, vol. 4.
Plosser, C. I. (1979). A time series analysis of seasonality in econometric models. The National Bureau
of Economic Research. 140
Prais, S. J., & Winsten, C. B. (1954). Trend Estimators and Serial Correlation. Tech. rep., Cowles
Rasmussen, R. (2004). On Time Series Data and Optimal Parameters. The International Journal of
Schwarz, G., et al. (1978). Estimating the Dimension of a Model. The annals of statistics, 6 (2),
Shapiro, S. S., & Wilk, M. B. (1965). An Analysis of Variance Test for Normality (Complete Samples).
Shiskin, J., Young, A. H., & Musgrave, J. C. (1967). The X-11 Variant of the Census Method II
Spada, S., Quartagno, M., & Tamburini, M. (2012). orcutt: Estimate Procedure in Case of First Order
237
Trapletti, A., & Hornik, K. (2015). tseries: Time Series Analysis and Computational Finance. R
URL http://CRAN.R-project.org/package=tseries
Tsay, R. S. (1988). Outliers, Level Shifts, and Variance Changes in Time Series. Journal of forecasting,
U.S. Census Bureau (2015). X13-arima-seats reference manual acessible html output version.
Verzani, J. (2015). UsingR: Data Sets, Etc. for the Text “Using R for Introductory Statistics”, Second
URL https://CRAN.R-project.org/package=UsingR 40
Walker, A. (2015). openxlsx: Read, Write and Edit XLSX Files. R package version 3.0.0.
URL https://CRAN.R-project.org/package=openxlsx 19
URL https://CRAN.R-project.org/package=readxl 19
Wickham, H., & Chang, W. (2015). ggplot2: An Implementation of the Grammar of Graphics.
URL http://cran.r-project.org/package=ggplot2 70
in Sampling and the Nature of Time-Series. Journal of the Royal Statistical Society, 89 (1), 1–63.
217
Zeileis, A. (2004). Econometric Computing with HC and HAC Covariance Matrix Estimators. Journal
Zeileis, A., & Hothorn, T. (2002). Diagnostic Checking in Regression Relationships. R News, 2 (3),
238
Zeileis, A., Leisch, F., Hornik, K., & Kleiber, C. (2001). strucchange. an R package for testing for
Zellner, A. (1962). An efficient method of estimating seemingly unrelated regressions and tests for
aggregation bias. Journal of the American Statistical Association, 57 (298), 348–368. 225
Zellner, A. (1979). Front Matter to Seasonal Analysis of Economic Time Series. The National Bureau
Zivot, 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. 106