Estimando um modelo SARIMA para a inflação brasileira

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!

_____________________

Compartilhe esse artigo

Facebook
Twitter
LinkedIn
WhatsApp
Telegram
Email
Print

Comente o que achou desse artigo

Outros artigos relacionados

Retropolando a série do desemprego no Brasil

Nosso objetivo neste exercício será estender a taxa de desemprego fornecida pela Pesquisa de Nacional por Amostra de Domicílios Contínua (PNAD Contínua) através daquela fornecida pela Pesquisa Mensal de Emprego (PME). Serão construídas duas séries: uma normal, outra dessazonalizada. Faremos todo o exercício utilizando o Python.

Variáveis Instrumentais no R: qual o impacto do gasto de segurança no crime?

Diversos métodos econométricos têm como principal finalidade melhorar o processo de investigar o efeito de uma variável sobre a outra, e um importante método encontra-se no uso de Variáveis Instrumentais na análise de regressão linear. Mas como podemos utilizar essa ferramenta para auxiliar no estudo da avaliação de impacto?

Neste post, oferecemos uma breve introdução a esse importante método da área de inferência causal, acompanhado de um estudo de caso para uma compreensão mais aprofundada de sua aplicação. Os resultados foram obtidos por meio da implementação em R, como parte integrante do nosso curso sobre Avaliação de Políticas Públicas utilizando esta linguagem de programação.

Análise regional do mercado de trabalho com dados do CAGED usando Python

Os microdados dos CAGED fornecem informações detalhadas a nível de cidade, sexo, raça, nível de instrução, idade, salário e outras sobre os trabalhadores formais do Brasil, possibilitando ricas análises regionais de dados. Neste artigo mostramos como acessar, processar e analisar estes dados utilizando o Python.

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.