Como preparar os dados para um modelo preditivo?

Modelos de previsão macroeconômica podem facilmente alcançar um número elevado de variáveis. Mesmo modelos simplificados, como o Modelo de Pequeno Porte (MPP) do Banco Central, usam cerca de 30 variáveis. Isso impõe um grande desafio ao nosso dia a dia: como fazer a gestão destes dados para uso em modelos, desde a coleta até o tratamento?

Neste artigo mostramos como é possível automatizar, usando linguagem de programação, todo o processo de preparação de dados para uso em modelos preditivos macroeconômicos. Tomando como exemplo as variáveis do MPP, mostramos como coletar e tratar os dados de diferentes fontes e, no fim, montamos uma tabela que serve de base para a estimação do modelo.

Etapa 1: identificar as variáveis

Partindo de um modelo macroeconômico a ser estimado, o primeiro passo é identificar quais são as variáveis necessárias para o mesmo. No caso do MPP, as variáveis estão descritas no relatório de inflação publicado pelo Banco Central.

Para facilitar a gestão de informações, o usuário pode montar uma tabela resumo destas variáveis, contendo as principais informações, como no exemplo abaixo:

Etapa 2: coletar os dados

Em seguida, devemos identificar as fontes de dados que dão origem a estas variáveis e coletar os dados brutos. No caso do MPP, alguns dados não estão disponíveis de forma fácil ou pública, então adaptações ou cortes podem ser necessários.

Em suma, é necessário coletar dados destas fontes para o exemplo em questão:

  • Banco Central do Brasil (BCB)
  • Instituto Brasileiro de Geografia e Estatística (IBGE)
  • National Oceanic and Atmospheric Administration (NOAA)

No caso do BCB, os dados podem vir de mais de uma fonte: Sistema Gerenciador de Séries Temporais, Sistema de Expectativas, API Documentos do Copom e outras APIs espalhadas pelo site da instituição.

Através da linguagem R e do pacote rbcb coletamos a maioria destes dados.

No caso do IBGE, todas as tabelas de dados necessárias estão localizadas no sistema SIDRA e podemos usar o pacote sidrar para fazer a coleta dos dados.

Por fim, no caso do NOAA, a variável ONI é disponibilizada através de uma URL para um arquivo de texto. Utilizamos o pacote readr para coletar estes dados.

Etapa 3: tratar dados e criar variáveis

Nesta etapa o objetivo é construir uma tabela final que servirá de base para o modelo, contendo todas as variáveis necessárias. Os dados coletados chegam em variados formatos, nem sempre sendo o tabular. Dessa forma, devemos tratar as informações de forma que representamos os dados na unidade de medida apropriada para o modelo e em formato tabular.

No caso do MPP, devemos converter os dados de modo a obter as variáveis em frequência trimestral e em semelhante unidade de medida descrita pelo BCB (não é possível replicar as variáveis usadas pela instituição pois o código fonte não é aberto pela mesma). Ademais, algumas variáveis são não observáveis e precisam ser estimadas e outras precisam ser calculadas.

A seguir apresentamos as tabelas individuais para as variáveis do MPP, sendo que algumas variáveis do modelo original não estão presentes por dificuldade de acesso/disponibilização de dados públicos ou por terem sido arbitrariamente excluídas.

  • Expectativa de inflação acumulada quatro trimestres à frente consistente com o modelo (model-consistent expectations)
date ipca_expec
2001-10-01 4.70
2002-01-01 4.81
2002-04-01 4.53
2002-07-01 5.64
2002-10-01 12.26
2003-01-01 9.30
  • Inflação trimestral do Índice Nacional de Preços ao Consumidor Amplo (IPCA), preços livres, com ajuste sazonal
date ipca_livres ipca_livres_sa
1999-07-01 2.5915500 2.1291681
1999-10-01 0.4902232 0.7818590
2000-01-01 0.5710226 1.0762945
2000-04-01 2.5903025 2.2557722
2000-07-01 0.7604714 0.2981345
2000-10-01 0.7107491 1.0023230
  • Inflação trimestral do IPCA, com ajuste sazonal
date ipca ipca_sa
1999-07-01 2.88 2.5162687
1999-10-01 1.05 1.3691481
2000-01-01 1.97 2.3843835
2000-04-01 2.76 2.3901643
2000-07-01 0.97 0.6063608
2000-10-01 0.66 0.9792566
  • Inflação trimestral importada de commodities, medida pelo desvio da variação do Índice de Commodities – Brasil (IC-Br) em reais em relação à meta de inflação doméstica
  • Inflação trimestral importada de commodities agrícolas, medida pelo desvio do IC-Br Agropecuária em relação à meta de inflação doméstica
  • Inflação trimestral importada de commodities metálicas, medida pelo desvio do IC-Br Metal em relação à meta de inflação doméstica
  • Inflação trimestral importada de commodities energéticas, medida pelo desvio do IC-Br Energia em relação à meta de inflação doméstica
date ic_br ic_br_agro ic_br_energia ic_br_metal
1999-01-01 39.904707 36.4659724 60.973747 47.028129
1999-04-01 -16.053561 -17.1533948 -12.872881 -11.606260
1999-07-01 2.151963 -0.5632035 11.376392 9.623529
1999-10-01 -8.613144 -8.2748196 -12.850746 -7.579916
2000-01-01 -10.549836 -11.0637272 -5.542484 -11.278885
2000-04-01 2.159968 2.5087083 11.534157 -5.411146
  • Desvio da variação trimestral da taxa de câmbio nominal (R$/US$ ) em relação à sua variação de longo prazo prevista pela teoria da paridade do poder de compra
date cambio
1999-01-01 51.3585532
1999-04-01 -12.9274568
1999-07-01 1.5167101
1999-10-01 -8.9134398
2000-01-01 -9.4699371
2000-04-01 -0.1940299
  • Variável que captura choques de oferta provenientes de anomalias climáticas
  • Dummy que assume valor 1 quando a anomalia climática é positiva (eventos El Niño)
  • Dummy que assume valor 1 quando a anomalia climática é negativa (eventos La Niña)
date oni d_elnino d_lanina
1999-01-01 -1.306667 0 1
1999-04-01 -1.013333 0 1
1999-07-01 -1.123333 0 1
1999-10-01 -1.456667 0 1
2000-01-01 -1.380000 0 1
2000-04-01 -0.720000 0 1
  • Hiato do produto doméstico
date pib pib_hp hiato_produto
1996-01-01 175440.8 179028.7 -2.0040919
1996-04-01 177662.7 179901.8 -1.2445930
1996-07-01 183826.3 180772.6 1.6892555
1996-10-01 182461.8 181637.6 0.4537454
1997-01-01 184299.6 182495.0 0.9888714
1997-04-01 185327.3 183343.5 1.0820316
  • Expectativa da taxa Selic ao longo de um horizonte de doze meses
date selic_expec
2005-01-01 16.50
2005-04-01 16.50
2005-07-01 16.00
2005-10-01 15.25
2006-01-01 14.00
2006-04-01 13.75
  • Medida de hiato de taxa de juros real, obtida pela diferença entre a expectativa da taxa Selic ao longo de um horizonte de doze meses it,t+4|te e a expectativa de inflação referente ao mesmo período ( πt,t+4|te ), ambas apuradas pela pesquisa Focus e representadas em taxa anual, e uma taxa de juros real de equilíbrio não observável ( rr¯tIS )
date hiato_juros
2023-10-01 5.1250
2024-01-01 5.5394
2024-04-01 6.3902
2024-07-01 7.5519
2024-10-01 9.7997
2025-01-01 NA
  • Medida do resultado primário do governo central corrigido por outliers e ajustado pelo ciclo econômico, expressa como desvio de sua tendência
date rp rp_hp rp_hiato
1991-10-01 -0.9800000 -1.551224 0.5712242
1992-01-01 -0.8633333 -1.562846 0.6995126
1992-04-01 -1.3300000 -1.574111 0.2441107
1992-07-01 -1.5000000 -1.584224 0.0842242
1992-10-01 -1.2533333 -1.592240 0.3389064
1993-01-01 -1.7733333 -1.597158 -0.1761755
  • Choque autorregressivo
date is_choque_ar
1996-01-01 0.5532097
1996-04-01 -0.0764221
1996-07-01 0.8098506
1996-10-01 -1.9683965
1997-01-01 0.0073228
1997-04-01 1.6115114
  • Meta para a taxa Selic nominal
date selic
1999 Q1 42.0
1999 Q2 21.0
1999 Q3 19.0
1999 Q4 19.0
2000 Q1 18.5
2000 Q2 17.5
  • Meta de inflação
date meta_inflacao
1999-01-01 8
1999-04-01 8
1999-07-01 8
1999-10-01 8
2000-01-01 6
2000-04-01 6
  • Taxa de juros de equilíbrio
date juros_equilibrio
2005-01-01 10.870183
2005-04-01 10.553528
2005-07-01 10.236979
2005-10-01 9.921233
2006-01-01 9.607660
2006-04-01 9.298133

O código que gera estas tabelas individuais de variáveis é bastante simples e, portanto, pouco robusto e com espaço para melhorias.

Ao final de todo este processo, podemos cruzar as tabelas de dados de modo a obter uma única tabela de variáveis para o MPP:

date ipca_expec ipca_livres ipca_livres_sa ipca ipca_sa ic_br ic_br_agro ic_br_energia ic_br_metal cambio oni d_elnino d_lanina pib pib_hp hiato_produto selic_expec hiato_juros rp rp_hp rp_hiato is_choque_ar selic meta_inflacao juros_equilibrio
2024-07-01 3.9481 1.4457583 0.9844238 1.42 1.049972 -2.464639 -1.06103 -9.568977 -1.387618 1.831694 -0.0966667 0 0 336725.8 332307.0 1.3297416 11.50 7.5519 2.286667 1.0752876 1.2113791 -0.2734256 10.75 3 7.350497
2024-10-01 4.9503 0.8622929 1.1529477 1.05 1.371823 13.011769 15.39948 9.649049 6.317956 9.022376 -0.3866667 0 0 337306.9 334298.1 0.9000511 14.75 9.7997 1.366667 1.0279393 0.3387274 -1.3678932 12.25 3 7.681013
2025-01-01 5.1852 0.3903861 0.8988515 0.80 1.209509 NA NA NA NA NA -0.6400000 0 1 NA NA NA NA NA 0.370000 0.9802096 -0.6102096 NA 14.25 3 NA
2025-04-01 NA 2.1245766 1.7867778 1.48 1.117854 NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA 3 NA
2025-07-01 NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA 3 NA
2025-10-01 NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA 3 NA

Conclusão

Modelos de previsão macroeconômica podem facilmente alcançar um número elevado de variáveis. Mesmo modelos simplificados, como o Modelo de Pequeno Porte (MPP) do Banco Central, usam cerca de 30 variáveis. Isso impõe um grande desafio ao nosso dia a dia: como fazer a gestão destes dados para uso em modelos, desde a coleta até o tratamento?

Quer aprender mais?

Conheça nossa Formação Do Zero à Análise de Dados Econômicos e Financeiros usando a Linguagem R . Aprenda do ZERO a coletar, tratar, construir modelos e apresentar dados econômicos e financeiros usando a Linguagem R.

Compartilhe esse artigo

Facebook
Twitter
LinkedIn
WhatsApp
Telegram
Email
Print

Comente o que achou desse artigo

Outros artigos relacionados

Regimes da Política Monetária Brasileira com Markov Switching no Python

Este exercício analisa a política monetária brasileira utilizando modelos de Markov Switching Regression. O objetivo é identificar diferentes regimes de política monetária e como eles influenciam a taxa Selic, a meta de inflação e o hiato do produto. Usamos a linguagem de programação Python para o processo de coleta, tratamento, análise e modelagem dos dados.

Como criar janelas móveis de séries temporais usando o Python

Janelas Móveis/Deslizantes, ou Rolling Windows, são termos frequentes na análise de séries temporais. Mas o que são e como aplicá-las no Python? Neste tutorial, mostramos como essa ferramenta é essencial para a análise de dados utilizando como exemplo a correlação móvel de ações brasileiras.

Como incorporar choques em cenários de previsão?

Neste exercício mostramos como incorar choques no cenário de variáveis exógenas para fins de previsão. Usando como exemplo a previsão do IPCA, através de um modelo de machine learning, mostramos os cuidados a serem tomados e uma forma simples de definir o cenário com os choques. Ao final, apresentamos uma previsão com um suposto choque e uma previsão sem o choque para comparação.

Boletim AM

Receba diretamente em seu e-mail gratuitamente nossas promoções especiais e conteúdos exclusivos sobre Análise de Dados!

Boletim AM

Receba diretamente em seu e-mail gratuitamente nossas promoções especiais e conteúdos exclusivos sobre Análise de Dados!

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.