Category

Macroeconometria

Estimando um modelo SARIMA para a inflação brasileira

By | Macroeconometria

A despeito de sua simplicidade operacional, modelos univariados ainda são bastante utilizadas para fins de modelagem e previsão de um amplo conjunto de variáveis econômicas. Nesse post, vamos ilustrar a aplicação desses modelos sobre a inflação brasileira medida pelo IPCA. Em particular, estamos interessados em modelos do tipo ARIMA. Esses modelos podem ser representados em termos de notação polinomial como

(1)   \begin{equation*} \beta_{p}(L)(1 - L)^{d} y_{t} = c + \theta_{q}(L)\varepsilon_{t}  \end{equation*}

Para o caso específico da inflação, como veremos na sequência, a equação 1 precisa ser reformulada. Isto porque, os modelos ARIMA também são capazes de modelar uma ampla gama de dados sazonais, como é o caso da inflação brasileira. Um modelo ARIMA sazonal é formado pela inclusão de termos sazonais adicionais, na forma ARIMA (p,d,q) (P,D,Q)_m, onde o segundo componente faz referência à parte sazonal e m significa o número de períodos por estação. Em termos formais,

(2)   \begin{equation*} \phi_{P}(L^s) \beta_{p}(L) (1 - L^s)^D (1 - L)^{d} y_{t} = c + \theta_{q}(L) \Theta_{Q} (L^s) \varepsilon_{t}  \end{equation*}

Na sequência desse post, vamos aplicar a equação 2 à inflação brasileira. Para começar, precisamos carregar alguns pacotes de R como abaixo.


library(forecast)
library(tidyverse)
library(gridExtra)
library(xtable)
library(rbcb)
library(scales)
library(tsutils)
library(tsibble)
library(feasts)

Carregados os pacotes que utilizaremos, podemos pegar os dados da inflação medida pelo IPCA diretamente do Site do Banco Central a partir do pacote rbcb. O código abaixo exemplifica.


ipca <- get_series(433, start_date = as.Date('01/01/2007',
format = "%d/%m/%Y"))

Observe que estamos pegando os dados da série 433 (da inflação) a partir de janeiro de 2007. Isso é proposital, posto que há diversos problemas com a série antes desse período, que precisaríamos limpar a partir de uma análise exploratória dos dados. Estamos supondo aqui que essa etapa já foi cumprida. Na sequência, nós investigamos justamente a característica sazonal da inflação no Brasil.


ipca =
ipca %>%
mutate(date = yearmonth(date)) %>%
rename(vmensal = `433`) %>%
as_tsibble(index=date)

ipca %>%
gg_subseries(vmensal)+
labs(x='', y='%',
title='Sazonalidade da inflação medida pelo IPCA',
caption='Fonte: analisemacro.com.br com dados do IBGE')

Observe que a média mensal da inflação medida pelo IPCA cai ao longo do primeiro semestre e vai gradativamente aumentando ao longo do segundo. Esse comportamento está intimamente relacionado ao comportamento do processo produtivo ao longo do ano.

Uma vez que, portanto, diagnosticamos o efeito sazonal da inflação, precisaremos incluir isso na nossa modelagem. Antes de prosseguir, por suposto, vamos dar uma olhada no gráfico da série e nas funções de autocorrelação. Para isso, usamos a função ggtsdisplay do pacote forecast.


ggtsdisplay(ipca$vmensal)

Para fins de modelagem, vamos considerar que a inflação medida pelo IPCA é uma série estacionária e que os termos que a melhor descrevem, conforme os gráficos ACF e PACF são representados por um modelo SARIMA (1,0,0)(0,0,1). Com base nisso, nós estimamos o modelo SARIMA a partir da função Arima também do pacote forecast. Além disso, também estimamos um modelo automático com a função auto.arima. O código abaixo implementa.


### Modelos

inflacao_mensal = ts(ipca$vmensal, start=c(2007,01), freq=12)

auto <- auto.arima(inflacao_mensal, max.p=5, max.q=5, max.P=5, max.Q=5)

sarima <- Arima(inflacao_mensal, order=c(1,0,0), seasonal = c(0,0,1))

Abaixo, comparamos o ajuste dos modelos estimados.


ipca =
ipca %>%
mutate(auto_arima = fitted(auto),
sarima = fitted(sarima))

ipca %>%
gather(variavel, valor, -date) %>%
ggplot(aes(x=date, y=valor, colour=variavel))+
geom_line(size=.8)+
theme(legend.title = element_blank(),
legend.position = 'top')+
scale_x_date(breaks = date_breaks('2 year'),
labels = date_format("%Y"))+
labs(x='', y='%',
title='Inflação medida pelo IPCA vs. Modelos',
caption='Fonte: analisemacro.com.br com dados do IBGE')

Uma vez que tenhamos construído o nosso modelo SARIMA, podemos utilizá-lo para fins de previsão. O código abaixo implementa uma previsão de 12 meses.


fauto <- forecast(auto, h=12)
fsarima <- forecast(sarima, h=12)

O gráfico abaixo ilustra a previsão gerada pelos modelos.

Curtiu? O exercício acima faz parte do nosso Curso de Análise de Séries Temporais, que cobre uma introdução a modelos univariados e multivariados de séries temporais, com diversas aplicações feitas com o R. Confira e veja se é adequado para você! Até o próximo exercício!

_____________________

Consumo de Energia e Crescimento do PIB

By | Macroeconometria

Ao longo das últimas semanas, tenho publicado diversos posts sobre a pandemia do coronavírus bem como o seu impacto sobre a economia brasileira a partir de indicadores antecedentes de nível de atividade. Uma boa proxy para o que vai ocorrer com a atividade nesse período, por suposto, está no consumo de energia elétrica. De forma a identificar esse efeito, produzimos a edição 73 do Clube do Código, que busca verificar a relação entre consumo de energia e crescimento econômico. Para isso, construímos diversos modelos e análises ao longo da respectiva edição com base tanto no nível quanto nas taxas de crescimento das séries.

Para fazer essa análise, primeiro podemos dar uma olhada na carga diária de energia, que é uma série temporal disponibilizada pelo Operador Nacional do Sistema Elétrico (ONS).

Com a série acima, não dá para fazer muita coisa, não é mesmo? Precisamos tratá-la. Primeiro, nós mensalizamos a série.

Na sequência, nós dessazonalizamos a série. O gráfico abaixo ilustrar o comportamento de um recorte da série, a partir de 2010. Com esse tratamento que fizemos, é possível observar uma queda significativa no consumo de energia no mês de março e nos primeiros dias de abril.

O gráfico a seguir ilustra a variação interanual, isto é, o mês t contra o mês t-12. Os primeiros dias de abril sugerem uma queda próxima a 9% no consumo de energia.

Identificamos assim que, de fato, houve um impacto significativo sobre o consumo de energia, como era esperado, dado o fechamento de estabelecimentos comerciais em quase todo o país. Uma vez feito isso, precisamos agora relacionar o consumo de energia com o PIB. Para isso, contudo, precisamos ao invés de mensalizar o consumo de energia, trimestralizá-lo, de forma a torná-lo comparável ao PIB. O gráfico a seguir ilustra o PIB com ajuste sazonal e o consumo de energia trimestralizado, bem como as variações anualizadas. A série do PIB está disponível no SIDRA/IBGE.

Um ponto importante aqui é que a despeito das mesmas não serem estacionárias, elas possuem uma relação de longo prazo. Em termos econométricos, dizemos que as mesmas são cointegradas.

Uma vez tratadas as nossas séries, nós agora precisamos verificar o sentido da causalidade entre as séries. Ao aplicarmos o procedimento de Toda-Yamamoto, os resultados encontrados sugerem que há uma causalidade no sentido do PIB para a carga de energia. Estabelecido o sentido da causalidade, nós podemos criar o nosso modelo log-log, de modo a estimar a elasticidade entre as séries. Ao estimarmos nosso modelo, chegamos a uma elasticidade de 1,1, em linha com exercícios similares.

Dada uma elasticidade próxima de 1, podemos esperar um grande estrago sobre o nível de atividade, dados os primeiros números relacionados ao consumo de energia de meados de março para cá.

________________________

Lee, C.C., 2005, Energy Consumption and GDP in Developing Countries: A Cointegrated Panel Analysis, Energy Economics, 27, 415-427.

Toda H.Y.; Yamamoto T. (1995). Statistical inference in vector autoregressions with possibly integrated processes. Journal of Econometrics, 66, 225–250. 

(*) Aprenda a produzir exercícios como esse em nossos Cursos Aplicados de R.

(**) Os códigos estarão disponíveis amanhã na Edição 73 do Clube do Código.


Usando um VECM para projetar o Desemprego no Brasil

By | Macroeconometria

A semana termina aqui na Análise Macro com mais uma edição do Clube do Código. Estará disponível no próximo domingo a Edição 68 do Clube, titulada Usando um VECM para projetar o Desemprego no Brasil. Ao longo da semana, os leitores desse espaço acompanharam tanto no Comentário de Conjuntura quanto na divulgação de indicadores feita hoje, uma preocupação com a projeção da taxa de desemprego. Na mais nova edição do Clube, detalhamos mais um modelo de previsão para a taxa de desemprego, utilizando um Vetor de Correção de Erros. O novo modelo de previsão para a taxa de desemprego utiliza pesquisas do Google, seguindo o paper "The predictive power of google search in forecasting US unemployment".

Acima temos um gráfico com as projeções da taxa de desemprego nos próximos seis meses. Abaixo, uma tabela com as previsões geradas pelo modelo.

Previsões para a Taxa de Desemprego
Lower Média Upper
Nov/19 11.2 11.4 11.5
Dez/19 11.0 11.2 11.4
Jan/20 11.1 11.4 11.8
Fev/20 11.3 11.8 12.3
Mar/20 11.5 12.1 12.8
Abr/20 11.1 11.9 12.7

O modelo utiliza as seguintes variáveis: (i) índice coincidente de desemprego da FGV; (ii) índice antecedente de emprego da FGV; (iii) índice de incerteza econômica da FGV; (iv) pesquisas no Google pela palavra 'emprego'; (v) IBC-BR; (vi) taxa de juros Selic.

Na Edição 68 do Clube do Código estão detalhados todos os códigos utilizados no exercício.

_________________________

Quer aprender a construir modelos de séries temporais? Veja nosso Curso de Séries Temporais usando o R.

Uma comparação econométrica entre o CAGED e a PNAD Contínua

By | Macroeconometria

Ontem, eu publiquei um post chamando atenção para a divergência na margem entre o CAGED e a PNAD Contínua. Enquanto o primeiro vinha apontando resultados positivos há cinco meses, a segunda tem apresentado queda na contratação com carteira desde junho. De modo a melhor diagnosticar a relação entre as séries, optei por realizar um exercício um pouco mais aprofundado. Aplicamos três metodologias distintas às séries: (1) a aplicação do procedimento de Toda e Yamamoto (1995); (2) um modelo BVAR; (3) um modelo de correção de erros. Você pode saber mais sobre eles, a propósito, no nosso Curso de Séries Temporais usando o R. Nesse post, resumo os resultados encontrados.

Antes de mais nada, precisamos carregar alguns pacotes. O script de R começa então com os seguintes pacotes:


## Pacotes
library(ecoseries)
library(sidrar)
library(ggplot2)
library(scales)
library(vars)
library(aod)
library(BMR)
### Pacote Seasonal
library(seasonal)
Sys.setenv(X13_PATH = "C:/Séries Temporais/R/Pacotes/seas/x13ashtml")

Os dados são baixados do IPEADATA e do SIDRA/IBGE com o código abaixo:


## Baixar dados
caged = ts(series_ipeadata('272844966',
periodicity = 'M')$serie_272844966$valor,
start=c(1999,05), freq=12)

po = get_sidra(api='/t/6320/n1/all/v/4090/p/all/c11913/allxt')
carteira = po$Valor[po$`Posição na ocupação e categoria do emprego no trabalho principal (Código)`=='31722']
pnad = ts(carteira, start=c(2012,03), freq=12)

A seguir, tratamos os dados com o código abaixo:


## Dessazonalizar Caged
cagedsa <- final(seas(caged))

## Comparar 3 meses
pnad3 = pnad - lag(pnad,-3)
pnad3 = final(seas(pnad3))

cagedsa3 = cagedsa+lag(cagedsa,-1)+lag(cagedsa,-2)

## Juntar dados
data = ts.intersect(cagedsa3/1000, pnad3)
colnames(data) = c('caged', 'pnad')

Observe que no código acima estou comparando a variação de três meses da PNAD Contínua com o acumulado de três meses do CAGED. Isso é necessário porque a primeira é uma pesquisa de estoque enquanto a segunda é uma pesquisa de fluxo. Ademais, a PNAD faz referência a trimestres móveis enquanto o CAGED é mensal. Uma vez devidamente tratados, podemos apresentá-los no gráfico a seguir.

A correlação entre as séries é de 0,75. Na margem, contudo, observe que enquanto a PNAD está caindo, o CAGED acumulado em três meses segue aumentando. De modo a compreender a relação entre as séries, prosseguimos com a modelagem econométrica. Primeiro, aplicamos o procedimento proposto por Toda e Yamamoto (1995). Nesse procedimento, os resultados encontrados sugerem que o CAGED ajuda a explicar a PNAD Contínua, enquanto o inverso não é verdadeiro.

Ao se construir um BVAR com Minnesota Prior e extrair as funções de impulso-resposta, observamos que um choque no CAGED afeta a PNAD positivamente. A figura acima ilustra. A seguir, construímos um modelo de correção de erros entre as séries, já que as mesmas não são estacionárias. Também extraímos as funções de impulso-resposta. Abaixo, ilustramos com um choque no CAGED e o efeito sobre a PNAD.

Por fim, mas não menos importante, fazemos a decomposição de variância entre as séries. Descobrimos que, passados 12 meses, o CAGED explica cerca de 49% da variância da PNAD, enquanto a PNAD explica apenas 1% da variância do CAGED no mesmo horizonte de tempo.

Em outras palavras, os resultados encontrados sugerem que o saldo do CAGED tem precedência temporal sobre a população ocupada com carteira da PNAD Contínua, servindo de base para antecipar os resultados da mesma. O que significa que, na margem, o CAGED pode estar antecipando uma dinâmica futura da PNAD, isto é, a melhora no mercado de trabalho formal.

Esse ponto é importante haja visto que o diagnóstico consensual extraído da PNAD de que o mercado de trabalho aumentou a informalidade nos últimos meses. Isso dá margem para diversas discussões sobre precarização do trabalho e questões similares. À luz dos resultados encontrados nesse exercício, o movimento atual pode ser apenas parte da dinâmica natural do mercado de trabalho, isto é, primeiro há uma melhora do mercado informal, só depois isso se espalha para a formalização.

Um último ponto que queria chamar atenção - e aí, os economistas especializados em mercado de trabalho me corrijam se eu estiver falando bobagem - é que o CAGED capta um rito formal, isto é, o registro de admitidos e demitidos nas empresas, enquanto a PNAD capta questões um pouco mais abstratas, já que está baseada na resposta das pessoas a um questionário. Em outros termos, o CAGED está em melhor posição para capturar, portanto, a tendência do mercado de trabalho. Os resultados encontrados nesse exercício parecem fortalecer esse argumento.

___________________

(*) Os códigos completos desse exercício, a propósito, estarão disponíveis na Edição 67 do Clube do Código.

(**) Quer sugerir exercícios? Manda um e-mail para mim: vitorwilher@analisemacro.com.br.

O Banco Central sob os mandatos de Meirelles, Tombini e Goldfajn

By | Macroeconometria

A Edição 62 do Clube do Código atualiza um exercício feito nesse espaço pelo Ricardo Lima nos idos de 2015, quando comparava as administrações de Henrique Meirelles e Alexandre Tombini à frente do Banco Central. A ideia básica do exercício era verificar a reação do Banco Central a choques na inflação e no desemprego. Nessa atualização, nós adicionamos o período de Ilan Goldfajn à frente da autoridade monetária, mudamos o desemprego pelo hiato do produto e apresentamos os resultados.

Os dados utilizados no exercício foram a taxa básica de juros, a inflação mensal medida pelo IPCA e o Índice de Nível de Atividade do Banco Central, o IBC-Br. Com base nesses dados, nós construímos um BVAR com Minnesota prior. Dividimos a amostra em três subamostras que faziam referência aos períodos de gestão de Meirelles, Tombini e Goldfajn à frente da autoridade monetária. Nessas subamostras, calculamos as funções de impulso-resposta com base em choques no hiato do produto e na inflação. Para ilustrar, abaixo a resposta para um choque na inflação.

A resposta de Meirelles e Goldfajn a choques na inflação são similares, enquanto a resposta da gestão Tombini não parece ser significativa. Abaixo a resposta acumulada.

Os códigos do exercício estarão disponíveis no repositório do Clube na próxima sexta-feira. 

Cadastre-se em nossa Lista VIP para receber conteúdos exclusivos!

Fazer Inscrição
{"cart_token":"","hash":"","cart_data":""}