Explicando a inflação de alimentos

No mês de dezembro, iremos lançar uma nova versão do Clube do Código. O projeto de compartilhamento de códigos da Análise Macro vai avançar para uma versão 2.0, que incluirá a existência de uma comunidade no Telegram/Whatsapp, de modo a reunir os membros do Novo Clube, compartilhando com eles todos os códigos dos nossos posts feitos aqui no Blog, exercícios de análise de dados de maior fôlego, bem como tirar dúvidas sobre todos os nossos projetos e Cursos Aplicados de R.

Para ilustrar o que vamos compartilhar lá nesse novo ambiente, vou publicar aqui nos próximos dias alguns dos nossos exercícios completos de análise de dados. Esses exercícios fazem parte do repositório atual do Clube, que irá migrar para o novo projeto. Além de todos os exercícios existentes, vamos adicionar novos exercícios e códigos toda semana, mantendo os membros atualizados sobre o que há de mais avançado em análise de dados, econometria, machine learning, forecasting e R.

Para começar, nesse Comentário de Conjuntura vou replicar um modelo descritivo para a inflação de alimentos. A inflação de alimentos tem sido uma grande incógnita nos últimos anos, influenciando de forma decisiva o erro de previsão da inflação cheia. Isso nos motivou a replicar um modelo do Banco Central do Brasil, exposto em boxe do Relatório de Inflação de junho de 2016, intitulado Evolução recente da inflação de alimentos. O modelo proposto pelo BCB consiste na seguinte equação

(1)   \begin{align*}\pi_t^{AD} = \sum_{i=0}^1 \phi_i \; \Delta \epsilon_{t-i} + \sum_{i=0}^1 \beta_i \;\Delta IC_{t-i}^{agro}+ \delta \; oni_{t-1} + \gamma \; h_t + \sum_{i=1}^4 \alpha_i \; T_i + \varepsilon_t  \end{align*}

onde \pi_t^{AD} é inflação de alimentação no domicílio, \Delta\epsilon_{t} é a variação da taxa de câmbio nominal, \Delta IC_{t-i}^{agro} é a variação do segmento de commodities agropecuárias do Índice de Commodities - Brasil (medido em dólares), oni_{t-1} é a primeira defasagem da dummy se o mundo está ou não sob efeito do El Niño, h_t é o hiato do produto e T_i são dummies sazonais.

Para estimar 1, nosso maior desafio será de coleta e tratamento das variáveis envolvidas. Isso é feito na sequência.

# Coleta e tratamento de dados

Para replicar o modelo proposto em 1, vamos precisar de cinco séries, a saber: a inflação de alimentação no domicílio, o Oceanic Niño Index (ONI), o Produto Interno Bruto, a taxa de câmbio nominal e o Índice de Commodities no seu corte agropecuário. Uma vez obtidas essas séries, elas precisarão ser trimestralizadas e tratadas, de modo a obter as variáveis que serão utilizadas para estimar 1. De modo a replicar os resultados do BCB, vamos obter as séries a partir do primeiro trimestre de 2000.

Antes, porém, o script começa carregando alguns pacotes.


library(BETS)
library(ggplot2)
library(forecast)
library(sidrar)
library(gridExtra)
library(rsoi)
library(xts)
library(mFilter)
library(dynlm)
library(stargazer)

Com efeito, o código abaixo coleta, trata e organiza as séries em uma matriz.


## Obter a série do Oceanic Niño Index (ONI)
oni = download_oni()
oni = xts(oni$ONI, order.by = oni$Date)
oni = window(oni[-1,], start='2000-01-01')
oni = ts(apply.quarterly(oni, FUN=mean),
start=c(2000,01), freq=4)
oni = ifelse(oni>0.5,1,0)
## Obter o Índice de Commodities Agro
icagro = BETSget(20050, from='1999-10-01', data.frame = TRUE)
icagro = xts(icagro$value, order.by = icagro$date)
icagro = ts(apply.quarterly(icagro, FUN=mean), start=c(1999,04),
freq=4)
dicagro = diff(icagro)
## Obter o PIB e o hiato
pib = BETSget(22109, from='2000-01-01', data.frame = TRUE)
hiato = ts(hpfilter(pib$value, freq=1600, type='lambda')$cycle,
start=c(2000,01), freq=4)
## Obter a taxa de câmbio
cambio = BETSget(3697, from='1999-10-01', data.frame = TRUE)
cambio = xts(cambio$value, order.by=cambio$date)
cambio = ts(apply.quarterly(cambio, FUN=mean), start=c(1999,4),
freq=4)
dcambio = diff(cambio)
## Obter a inflação de alimentação no domicílio
alim01 = get_sidra(api='/t/655/n1/all/v/all/p/all/c315/7171/d/v63%202')
alim02 = get_sidra(api='/t/2938/n1/all/v/63/p/all/c315/7171/d/v63%202')
alim03 = get_sidra(api='/t/1419/n1/all/v/63/p/all/c315/7171/d/v63%202')
alimentos = ts(c(alim01$Valor, alim02$Valor, alim03$Valor),
start=c(1999,08), freq=12)
fator = 1+alimentos/100
acumulado = (fator*lag(fator,-1)*lag(fator,-2)-1)*100
alimdom = acumulado
alimentos = xts(alimdom, order.by = as.Date(time(alimdom)))
alimentos = window(alimentos, start='2000-01-01')
alimentos = ts(apply.quarterly(alimentos, FUN=mean),
start=c(2000,01), freq=4)
## Obter as dummies sazonais
dummies = ts(seasonaldummy(alimentos), start=c(2000,01), freq=4)
## Juntar todos os dados em uma matriz
data = ts.intersect(alimentos, dcambio, dicagro,
oni, hiato, dummies)

Abaixo, um gráfico das séries já devidamente tratadas.

# Modelo

Com os dados devidamente tratados, podemos estimar o modelo proposto pelo BCB em 1 para o período replicado no boxe - i.e., até o quarto trimestre de 2016. O código abaixo implementa.


modelo = dynlm(alimentos~dcambio+lag(dcambio,-1)+dicagro+
lag(dicagro,-1)+lag(oni,-1)+hiato+
dummies.Q1+dummies.Q2+dummies.Q3,
data=data, end=c(2016,01))

A tabela 1 traz os resultados do modelo. A variável defasada da variação do câmbio, as variações do índice de commodities, a variável dummy associada ao ONI e o hiato do produto se mostram estatisticamente significativas para explicar a inflação de alimentação no domicílio. Em particular, o coeficiente da variável dummy é de 1.2, o que implica dizer que o fim do El Niño em um determinado trimestre reduz a inflação de alimentos em 1.2 pontos percentuais no trimestre seguinte.

Explicando a inflação de alimentos
Dependent variable:
alimentos
dcambio -2.342
(1.736)
lag(dcambio, -1) 3.940**
(1.787)
dicagro 0.061*
(0.035)
lag(dicagro, -1) 0.090**
(0.036)
lag(oni, -1) 1.173*
(0.591)
hiato 0.193**
(0.094)
dummies.Q1 0.083
(0.666)
dummies.Q2 -0.305
(0.697)
dummies.Q3 -0.537
(0.674)
Constant 1.395***
(0.503)
Observations 64
R2 0.537
Adjusted R2 0.460
Residual Std. Error 1.831 (df = 54)
F Statistic 6.972*** (df = 9; 54)
Note: *p<0.1; **p<0.05; ***p<0.01

______________________

Compartilhe esse artigo

Facebook
Twitter
LinkedIn
WhatsApp
Telegram
Email
Print

Comente o que achou desse artigo

Outros artigos relacionados

Como automatizar tarefas repetitivas usando Python? Um exemplo para largar o Excel

Manter relatórios diários com dados e análises atualizados é um desafio, pois envolve várias etapas: coleta de dados, tratamento de informações, produção de análises e atualização de relatório. Para superar este desafio algumas ferramentas como Python + Quarto + GitHub podem ser usadas para automatizar tudo que for automatizável. Neste artigo mostramos um exemplo com dados do mercado financeiro.

Criando um Dashboard de análise de Ações no Python

Um Dashboard é um painel de controle que consolida uma variedade de informações sobre um determinado objeto de estudo em um ou mais painéis. Ele simplifica significativamente o processo de análise de dados, oferecendo uma visão global e fácil de entender. Uma maneira simples de construir um Dashboard para acompanhar uma ação específica é utilizando duas ferramentas: Quarto e Python. Neste post, mostramos o resultado da criação de um Dashboard de Ação.

Analisando séries temporais no Python e esquecendo de vez o Excel

Séries temporais representam uma disciplina extremamente importante em diversas áreas, principalmente na economia e na ciência de dados. Mas, afinal, como lidar com esses dados que se apresentam ao longo do tempo? Neste exercício, demonstraremos como compreender uma série temporal e como o Python se destaca como uma das melhores ferramentas para analisar esse tipo de dado.

como podemos ajudar?

Preencha os seus dados abaixo e fale conosco no WhatsApp

Boletim AM

Preencha o formulário abaixo para receber nossos boletins semanais diretamente em seu e-mail.