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.
								