Construindo um modelo de previsão para a inflação brasileira

Este exercício é um resumo de uma parte do curso de modelos preditivos da Análise Macro, onde o objetivo é desenvolver modelos para prever a inflação brasileira medida pelo IPCA, usando técnicas de Machine Learning e uma abordagem automatizada.

Por que usar Machine Learning?

Com vistas a obter melhor acurácia preditiva, Garcia et al. (2017) e Medeiros et al. (2019) mostraram que há benefícios no uso de conjuntos maiores de dados, disponíveis de forma muito rica e proliferada atualmente. Em especial, o uso conjunto de grandes bases de dados com modelos de Machine Learning costuma apresentar melhores resultados de performance em relação a modelos mais clássicos como AR, Random Walk e, até mesmo, curva de Phillips para previsão da inflação. Neste exercício exploraremos estas possibilidades.

Estratégia de previsão

Consideramos uma abordagem de previsão dinâmica onde a inflação  períodos à frente, πt+ℎ, é modelada em função de um conjunto de preditores medidos no tempo t, tal como:

onde G(xt) é um mapeamento de um conjunto de preditores q que pode ser de um único modelo ou de uma combinação (ensemble) de modelos; xt = (x1t, …, xqt)′ é um q-vetor que pode incluir preditores fracamente exógenos, valores defasados dos preditores e de πt e dummies sazonais; e ut é um erro aleatório de média zero.

Nossa estratégia é prever o IPCA todo dia 15 de cada mês, quando o índice do mês anterior já foi divulgado pelo IBGE. Assim, todos as variáveis utilizadas em modelos são as que estiverem disponíveis até o dia 15. No caso de dados do Focus, como são de frequência irregular e divulgados apenas em dias úteis, escolhemos sempre as últimas estatísticas disponíveis até o dia 15 de cada mês, optando por usar a mediana das expectativas para cada um dos próximos 12 meses.

Quais variáveis serão utilizadas?

Buscou-se utilizar dados que representassem diferentes áreas da economia, como monetária, fiscal, financeiro, mercado de trabalho e produção. Dessa forma, foi selecionado um conjunto de 33 variáveis exógenas — além do próprio IPCA —, para criar uma base maior e expandida com 1 até 4 defasagens, totalizando assim, após seleções descritas adiante, um conjunto com 159 variáveis potencialmente preditoras, incluindo dummies sazonais.

Descrevemos alguns metadados das variáveis utilizadas a seguir, que foram selecionadas com base em trabalhos que buscaram prever a inflação, como Baybuza (2018), Mandalinci (2017) e, principalmente para o Brasil, os já citados Garcia et al. (2017) e Medeiros et al. (2019).

Variável Unidade de Medida Fonte
Índice Nacional de Preços ao Consumidor Amplo (IPCA) % a.m. IBGE
Taxa de câmbio - Livre - Venda - Média mensal R$/US$ BCB
Interesse por “seguro desemprego” - Brasil Índice Google Trends
Custo médio m² - Construção Civil - Variação % em 12 meses % IBGE
Taxa de juros pré fixada - Estrutura a termo - LTN - 12 meses - Anbima % a.a. IPEADATA
PIB mensal - Valores correntes R$ milhões BCB
Índice geral de preços - Mercado (IGP-M) - FGV % a.m. BCB
Índice geral de preços - Disponibilidade interna (IGP-DI) - FGV % a.m. BCB
Meios de pagamento - M1 - Média dos dias úteis do mês R$ mil BCB
Meios de pagamento amplos - M2 - Saldo em final de período R$ mil BCB
Meios de pagamento amplos - M3 - Saldo em final de período R$ mil BCB
Meios de pagamento amplos - M4 - Saldo em final de período R$ mil BCB
Produção Industrial de Bens de Consumo - PIM-PF % a.m. IBGE
Estoque de empregos formais - Total - Encadeamento do antigo e novo CAGED Pessoa BCB
Balança comercial - Balanço de Pagamentos BPM6 - Mensal - Saldo US$ milhões BCB
Imposto sobre a renda (IR) - Total - Receita bruta - ME R$ milhões IPEADATA
Ibovespa - Índice de ações - Fechamento - Anbima % a.m. IPEADATA
Índice de volume de vendas no comércio varejista ampliado - PMC % a.a. IBGE
Vendas de veículos pelas concessionárias - Automóveis - Fenabrave Automóvel BCB
Dívida Líquida do Setor Público - Total - Setor público consolidado % PIB BCB
Consumo de energia elétrica - Comercial - Quantidade - Eletrobras GWh IPEADATA
Preço - petróleo bruto - Brent - FOB - Energy Information Administration (EIA) US$/barril IPEADATA
Expectativas de mercado mensais de inflação - IPCA - Focus/BCB % Focus/BCB

Modelos

Como utilizaremos um total de 159 variáveis possivelmente preditoras e, em em exercícios de previsão, costuma-se dividir a amostra em conjuntos de dados de treino e teste para comparar modelos, ou ainda utilizar validação cruzada, podemos incorrer no problema de alta dimensionalidade, onde há mais variáveis do que observações amostrais. Essa é uma questão que traz implicações estatísticas bastante relevantes, como baixa generalização dos modelos (Friedman et al., 2001), o que implica que precisamos utilizar métodos que sejam específicos para tratar esse problema de dimensionalidade.

Dessa forma, selecionamos 3 modelos que têm fácil aplicação, pois não necessitam de muita otimização de hiperparâmetros e que são variações do modelo de regressão linear. São eles:

  • Complete Subset Regression
  • Bagging
  • LASSO

Além destes modelos, criaremos uma combinação (ensemble) usando a média das previsões dos modelos. A motivação é de que há muito se sabe, na literatura de previsão, que quando combinamos diferentes modelos temos resultados, em média, melhores do que os resultados individuais de suas previsões. Formas mais robustas de combinar as previsões também podem ser aplicadas, conforme Kolassa (2011). A seguir descrevemos brevemente cada modelo.

 

Complete Subset Regression (CSR)

Esse é um método relativamente novo e simples, apresentado por Elliott et al. (2013), sendo bastante interessante para problemas com alta dimensionalidade. Nele são estimadas todas as regressões possíveis de combinações entre as variáveis preditoras, o que auxilia no controle do problema da multicolinearidade. Entretanto, estimar todas as combinações possíveis em 159 variáveis é intensivo computacionalmente, de forma que seguimos o procedimento adotado por Garcia et al. (2017), em que há um procedimento de “pré teste” com cada uma das variáveis estimadas em uma regressão simples contra o IPCA. Assim, são selecionadas as 20 variáveis com melhores valores na estatística t e com elas são estimadas todas as combinações possíveis de regressões com 15 parâmetros, totalizando

factorial(20) / ((factorial(20 - 15) * factorial(15))) = 15504

regressões. Tomando a média das previsões dessas regressões, temos a previsão do modelo.

Bagging

O Bagging é uma técnica que visa diminuir a instabilidade de modelos (Friedman et al., 2001). A ideia é combinar previsões de vários modelos instáveis estimados para diferentes subamostras de bootstrap, que é um processo de reamostragem aleatória com substituição. Normalmente, há muito mais a ganhar com combinações de modelos se forem muito diferentes. As etapas de Bagging pode ser descritas conforme abaixo:

  1. Para cada amostra de bootstrap, rode uma regressão MQO com todas as variáveis candidatas e selecione aquelas com uma estatística t absoluta acima de um certo limite c;
  2. Estime uma nova regressão apenas com as variáveis selecionadas na etapa anterior;
  3. Os coeficientes da segunda regressão são então usados para calcular as previsões na amostra real;
  4. Repita as três primeiras etapas para B amostras de bootstrap e calcule a previsão final como a média das B previsões.

O principal efeito desse modelo é evitar que ruídos deixem de fora variáveis importantes para a previsão, melhorando capacidade do modelo de generalização (bom desempenho em dados futuros). Optamos por escolher 500 replicações de bootstrap, mas esse valor é arbitrário.

LASSO

LASSO (Least Absolute Shrinkage and Selection Operator) é um método desenvolvido por Tibshirani (1996) que tem como objetivo reduzir o número de parâmetros, principalmente em casos de multicolineariedade. Para tal, é adicionado à minimização dos mínimos quadrados (MQO) uma penalização de magnitude λ aos parametros de variáveis irrelevantes, qué determinado por técnicas data-driven como validação cruzada ou critérios de informação. O estimador LASSO é definido como:

Da equação acima, percebe-se que o valor de λ é extremamente relevante para o resultado do modelo. Se esse parâmetro aumenta, o viés do estimador também aumenta; se ele diminui, quem aumenta é a variância; caso ele seja 0, ele se torna igual ao estimador MQO. Dessa forma, o desafio é achar o valor ótimo para λ, sendo usual a técnica de validação cruzada para tal.

Fluxo de trabalho

Aqui descrevemos brevemente os procedimentos adotados neste exercício de previsão, usando a linguagem de programação R:

  1. Carregar pacotes e dependências em um projeto de RStudio;
  2. Definir e carregar funções úteis;
  3. Importar dados brutos com base nos metadados das variáveis selecionadas;
  4. Tratar dados brutos de modo a obter uma tabela com as séries temporais do IPCA e as demais 33 variáveis exógenas, em frequência mensal;
  5. Testar a estacionariedade das variáveis exógenas e aplicar as transformações necessárias (diferenças);
  6. Criar base expandida com 1 até 4 defasagens de todas as variáveis;
  7. Contabilizar atrasos de publicação: preencher valores ausentes com última observação e remover séries de variáveis exógenas do momento presente (t), com exceção das expectativas do Focus;
  8. Adicionar dummies sazonais;
  9. Implementar validação cruzada partindo de 150 observações, acrescentando 1 observação e gerando 12 pontos de previsão pseudo out-of-sample, com finalidade de obter métricas de acurácia;
  10. Comparar a acurácia entre os modelos e benchmarks (Focus e Random Walk), usando o RMSE para escolha do modelo candidato para previsão fora da amostra;
  11. Reestimar o modelo candidato com a amostra completa de dados e gerar previsão fora da amostra;
  12. Visualização de resultados.

Dashboard de resultados

O resultado de todo o fluxo de trabalho deste exercício de previsão do IPCA é sintetizado e pode ser conferido nesta dashboard:

https://analisemacropro.github.io/ipca/

Saiba mais

Códigos de reprodução em R deste exercício estão disponíveis para membros do Clube AM da Análise Macro.

Para se aprofundar no assunto confira os cursos aplicados de R e Python da Análise Macro:

Referências

Baybuza, I. (2018). Inflation forecasting using machine learning methods. Russian Journal of Money and Finance, 77(4), 42-59.

Choi, H., & Varian, H. (2012). Predicting the present with Google Trends. Economic record, 88, 2-9.

Elliott, G., Gargano, A., & Timmermann, A. (2013). Complete subset regressions. Journal of Econometrics, 177(2), 357-373.

Friedman, Jerome, Trevor Hastie, Robert Tibshirani, and others. (2001). The Elements of Statistical Learning. Vol. 1. 10. Springer series in statistics New York.

Garcia, M. G., Medeiros, M. C., & Vasconcelos, G. F. (2017). Real-time inflation forecasting with high-dimensional models: The case of Brazil. International Journal of Forecasting, 33(3), 679-693.

Hyndman, R. J., & Athanasopoulos, G. (2021) Forecasting: principles and practice, 3rd edition, OTexts: Melbourne, Australia. OTexts.com/fpp3. Accessed on 2022-04-01.

Kolassa, S. (2011). Combining exponential smoothing forecasts using Akaike weights. International Journal of Forecasting, 27(2), 238-251.

Mandalinci, Z. (2017). Forecasting inflation in emerging markets: An evaluation of alternative models. International Journal of Forecasting, 33(4), 1082-1104.

Marcelo C. Medeiros, Gabriel F. R. Vasconcelos, Álvaro Veiga & Eduardo Zilberman (2019). Forecasting Inflation in a Data-Rich Environment: The Benefits of Machine Learning Methods, Journal of Business & Economic Statistics, DOI: 10.1080/07350015.2019.1637745

Naccarato, A., Falorsi, S., Loriga, S., & Pierini, A. (2018). Combining official and Google Trends data to forecast the Italian youth unemployment rate. Technological Forecasting and Social Change, 130, 114-122.

Tibshirani, R. (1996). Regression shrinkage and selection via the lasso. Journal of the Royal Statistical Society: Series B (Methodological), 58(1), 267-288.

Notas de rodapé

  1. Veja detalhes sobre validação cruzada no capítulo 5 de Hyndman e Athanasopoulos (2021).↩︎

Compartilhe esse artigo

Facebook
Twitter
LinkedIn
WhatsApp
Telegram
Email
Print

Comente o que achou desse artigo

Outros artigos relacionados

A gramática dos gráficos: como deixar de criar gráficos no Excel e usar o plotnine no Python

A etapa de visualização de dados refere-se a uma parte fundamental da análise de dados, pois permite não somente compreender os dados que estamos analisando, mas como também é uma ferramenta útil para explanar os resultados encontrados. Mas qual a forma mais fácil de construir um gráfico, como podemos melhorar a produtividade nesta tarefa? É onde podemos aplicar a gramática dos gráficos e construir com a biblioteca plotnine no Python.

O que são APIs e como utilizá-las no Python?

Utilizar APIs para coletar dados online pode acelerar e automatizar significativamente o processo de análise de dados. Diversas bases de dados hoje em dia possuem APIs para livre utilização, como Banco Central, Portal de Dados Abertos, IBGE e outras. Neste artigo, explicamos intuitivamente o que são APIs, como funcionam e mostramos um exemplo em Python de utilização.

Como fazer web scraping no Python? Um tutorial para largar o Excel

Programar robôs para coletar informações online que não estão estruturadas ou disponíveis facilmente parece algo futurista, mas é uma vantagem competitiva de quem utiliza Python para analisar dados e automatizar processos. Neste artigo, apresentamos o que é a técnica web scraping, suas vantagens/desvantagens e como aplicar ela com o Python em um exemplo prático, do início ao fim.

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.