Modelo de previsão para grupos do IPCA

Neste artigo investigamos se a previsão desagregada da inflação é capaz de gerar previsões mais acuradas do que a previsão agregada. Utilizamos o Índice Nacional de Preços ao Consumidor Amplo (IPCA) como medida de interesse, aplicando um modelo simples e um modelo de passeio aleatório para comparação. Todo o processo pode ser feito de maneira automatizada utilizando a linguagem de programação R.

Pacotes

Os pacotes utilizados no exercío são carregados conforme o código abaixo:


# Carregar pacotes
library(sidrar)
library(dplyr)
library(tsibble)
library(tidyr)
library(purrr)
library(fabletools)
library(fable)
library(ggplot2)

Dados

Os dados utilizados no exercício são provenientes do IBGE, através da API SIDRA. Utilizamos uma amostra de 2012 até os dados mais atuais, da última divulgação. O código abaixo coleta os dados e realiza os processamentos necessários:

Para ter acesso aos códigos deste exercício e outros de análise de dados, com vídeos, scripts, material complementar e suporte completo, conheça o Clube AM.

# A tibble: 1,278 × 4
       data grupo                   variacao  peso
      <mth> <chr>                      <dbl> <dbl>
 1 2012 Jan 1.Alimentação e bebidas   0.0086 0.231
 2 2012 Feb 1.Alimentação e bebidas   0.0019 0.232
 3 2012 Mar 1.Alimentação e bebidas   0.0025 0.231
 4 2012 Apr 1.Alimentação e bebidas   0.0051 0.231
 5 2012 May 1.Alimentação e bebidas   0.0073 0.231
 6 2012 Jun 1.Alimentação e bebidas   0.0068 0.232
 7 2012 Jul 1.Alimentação e bebidas   0.0091 0.233
 8 2012 Aug 1.Alimentação e bebidas   0.0088 0.234
 9 2012 Sep 1.Alimentação e bebidas   0.0126 0.236
10 2012 Oct 1.Alimentação e bebidas   0.0136 0.237
# ℹ 1,268 more rows

Modelos

O objetivo deste exercício é produzir e comparar as previsões de um modelo simples para a inflação, medida pelo IPCA em variação percentual mensal, através dos dados desagregados (grupos) e agregados (índice cheio). As previsões desagregadas são reagregadas utilizando o peso do grupo em questão para formar a variação percentual mensal do índice cheio, tal como em Carlo & Marçal (2016). O modelo escolhido para teste foi um SARIMA automatizado, além de um passeio aleatório para comparação.

O código abaixo estima os modelos para os grupos do IPCA, restringindo os últimos dois anos da amostra para finalidade de teste e cálculo de erro.

Para ter acesso aos códigos deste exercício e outros de análise de dados, com vídeos, scripts, material complementar e suporte completo, conheça o Clube AM.

$`1.Alimentação e bebidas`
# A mable: 1 x 2
# Key:     grupo [1]
  grupo                                              sarima
  <chr>                                             <model>
1 1.Alimentação e bebidas <ARIMA(1,0,0)(1,0,0)[12] w/ mean>

$`2.Habitação`
# A mable: 1 x 2
# Key:     grupo [1]
  grupo                       sarima
  <chr>                      <model>
1 2.Habitação <ARIMA(0,0,2) w/ mean>

$`3.Artigos de residência`
# A mable: 1 x 2
# Key:     grupo [1]
  grupo                                              sarima
  <chr>                                             <model>
1 3.Artigos de residência <ARIMA(1,0,1)(1,0,0)[12] w/ mean>

$`4.Vestuário`
# A mable: 1 x 2
# Key:     grupo [1]
  grupo                          sarima
  <chr>                         <model>
1 4.Vestuário <ARIMA(1,0,3)(0,1,1)[12]>

$`5.Transportes`
# A mable: 1 x 2
# Key:     grupo [1]
  grupo                         sarima
  <chr>                        <model>
1 5.Transportes <ARIMA(1,0,0) w/ mean>

$`6.Saúde e cuidados pessoais`
# A mable: 1 x 2
# Key:     grupo [1]
  grupo                                          sarima
  <chr>                                         <model>
1 6.Saúde e cuidados pessoais <ARIMA(0,1,2)(1,0,2)[12]>

$`7.Despesas pessoais`
# A mable: 1 x 2
# Key:     grupo [1]
  grupo                                  sarima
  <chr>                                 <model>
1 7.Despesas pessoais <ARIMA(1,1,2)(0,0,1)[12]>

$`8.Educação`
# A mable: 1 x 2
# Key:     grupo [1]
  grupo                                  sarima
  <chr>                                 <model>
1 8.Educação <ARIMA(0,0,0)(1,1,0)[12] w/ drift>

$`9.Comunicação`
# A mable: 1 x 2
# Key:     grupo [1]
  grupo                                    sarima
  <chr>                                   <model>
1 9.Comunicação <ARIMA(0,0,0)(1,0,0)[12] w/ mean>

Previsão

Para produzir as previsões desagregadas (grupos) utilizamos cada um dos nove modelos correspondentes de cada grupo do IPCA, gerando 24 pontos de previsão a frente. Com estas previsões em mãos, produzimos a previsão agregada do IPCA ao somar os produtos entre a previsão do grupo i no período t e último peso deste mesmo grupo conhecido até o momento da previsão.

O código abaixo produz as previsões agregadas e desagregadas do IPCA:

Para ter acesso aos códigos deste exercício e outros de análise de dados, com vídeos, scripts, material complementar e suporte completo, conheça o Clube AM.

# A tibble: 216 × 5 grupo .model data variacao .mean <chr> <chr> <mth> <dist> <dbl> 1 1.Alimentação e bebidas sarima 2021 Nov N(0.011, 3.9e-05) 0.0111 2 1.Alimentação e bebidas sarima 2021 Dec N(0.009, 4.9e-05) 0.00900 3 1.Alimentação e bebidas sarima 2022 Jan N(0.0074, 5.2e-05) 0.00744 4 1.Alimentação e bebidas sarima 2022 Feb N(0.006, 5.3e-05) 0.00603 5 1.Alimentação e bebidas sarima 2022 Mar N(0.0057, 5.3e-05) 0.00570 6 1.Alimentação e bebidas sarima 2022 Apr N(0.0061, 5.3e-05) 0.00606 7 1.Alimentação e bebidas sarima 2022 May N(0.0061, 5.3e-05) 0.00609 8 1.Alimentação e bebidas sarima 2022 Jun N(0.0061, 5.3e-05) 0.00606 9 1.Alimentação e bebidas sarima 2022 Jul N(0.0063, 5.3e-05) 0.00632 10 1.Alimentação e bebidas sarima 2022 Aug N(0.0076, 5.3e-05) 0.00756 # ℹ 206 more rows

# A tibble: 24 × 2 data previsao <mth> <dbl> 1 2021 Nov 0.00766 2 2021 Dec 0.00658 3 2022 Jan 0.00462 4 2022 Feb 0.00625 5 2022 Mar 0.00434 6 2022 Apr 0.00445 7 2022 May 0.00430 8 2022 Jun 0.00434 9 2022 Jul 0.00392 10 2022 Aug 0.00338 # ℹ 14 more rows

Acurácia

Visando comparar a qualidade da previsão entre as duas metodologias, calculamos a Raiz do Erro Quadrático Médio (RMSE) da previsão reagregada do IPCA a partir dos grupos, de um modelo de previsão agregado (índice cheio) do IPCA e de um modelo passeio aleatório. O código abaixo realiza estes procedimentos:

Para ter acesso aos códigos deste exercício e outros de análise de dados, com vídeos, scripts, material complementar e suporte completo, conheça o Clube AM.

Acurácia do modelo reagregado: 
# A tibble: 1 × 1
     RMSE
    <dbl>
1 0.00448
Acurácia do modelo agregado e passeio aleatório: 
# A tibble: 2 × 3
  .model .type    RMSE
  <chr>  <chr>   <dbl>
1 rw     Test  0.00929
2 sarima Test  0.00472

Podemos observar que o modelo de previsão reagregado do IPCA apresenta, na amostra utilizada, um erro marginalmente menor em relação aos demais, o que corrobora com os resultados encontrados em Carlo & Marçal (2016).

Os resultados deste exercício podem ser diferentes para amostras de dados diferentes. Recomendamos testes mais intensivos com o uso de validação cruzada para uma visão mais geral sobre a perfomance das metodologias.

Visualização de dados

Finalizamos exibindo no gráfico abaixo as previsões geradas para os nove grupos do IPCA comparadas com os dados obervados no período:

Note que o modelo apresenta resultados melhores para determinados grupos devido a dinâmica da série temporal propícia para a estrutura do modelo. Para os demais grupos outros modelos poderiam ser aplicados para melhorar os resultados.

Conclusão

Neste artigo investigamos se a previsão desagregada da inflação é capaz de gerar previsões mais acuradas do que a previsão agregada. Utilizamos o Índice Nacional de Preços ao Consumidor Amplo (IPCA) como medida de interesse, aplicando um modelo simples e um modelo de passeio aleatório para comparação. Todo o processo pode ser feito de maneira automatizada utilizando a linguagem de programação R.

Quer aprender mais?

Clique aqui para fazer seu cadastro no Boletim AM e baixar o código que produziu este exercício, além de receber novos exercícios com exemplos reais de análise de dados envolvendo as áreas de Data Science, Econometria, Machine Learning, Macroeconomia Aplicada, Finanças Quantitativas e Políticas Públicas diretamente em seu e-mail.

Referências

Thiago Carlomagno Carlo & Emerson Fernandes Marçal (2016): Forecasting Brazilian inflation by its aggregate and disaggregated data: a test of predictive power by forecast horizon, Applied Economics, DOI: 10.1080/00036846.2016.1167824

Compartilhe esse artigo

Facebook
Twitter
LinkedIn
WhatsApp
Telegram
Email
Print

Comente o que achou desse artigo

Outros artigos relacionados

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.

Transfer Learning: mostrando porque o Python está na ponta do desenvolvimento

A aprendizagem por transferência (transfer learning) é o reuso de um modelo pré-treinado em um novo problema. Portanto, sua utilização torna-se um avanço enorme para a previsão de diferentes tipos de variáveis, principalmente para aquelas ordenadas no tempo. Mostramos nesta postagem o uso do Transfer Learning com o Python para o caso de Séries Temporais.

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.