Introdução
Neste exercício, implementamos o Nowcasting utilizando Modelos de Fatores Dinâmicos (Dynamic Factor Models) em Python, com o objetivo de prever o PIB dos EUA com base nos dados dos conjuntos FRED-MD e FRED-QD.
De forma simplificada, o nowcasting é uma técnica que permite prever o presente, ou até mesmo o futuro ou passado muito recente. A principal meta aqui é identificar um conjunto de variáveis capaz de captar a dinâmica da série de interesse, conforme ela ocorre.
No entanto, esse conjunto de variáveis pode ser bastante extenso, envolvendo dezenas, centenas ou até milhares de variáveis. Quando o número de variáveis excede o número de observações, não é possível estimar coeficientes em modelos paramétricos tradicionais, como a Regressão Linear (OLS). Mesmo que seja possível estimar esses coeficientes, incluir um grande número de variáveis no modelo pode resultar em overfitting, o que tende a gerar previsões imprecisas.
Para contornar esse problema, uma abordagem comum é o uso de modelos com fatores. Essencialmente, um fator permite reduzir o conjunto de variáveis a uma única fonte de variação comum entre elas, que geralmente é não-observável. A ideia é usar um conjunto de variáveis relacionadas a essa fonte e, ao extrair o componente comum de variação, obter uma aproximação dessa fonte não observada.
Para ilustrar, imagine que desejamos acompanhar em "tempo real" a evolução da atividade econômica. Sabemos que várias variáveis são afetadas ou afetam a atividade econômica, embora em direções e magnitudes diferentes, como a utilização de energia elétrica, a produção industrial e a confiança dos consumidores. Ao extrair o componente comum entre essas variáveis, podemos obter uma medida indireta da atividade econômica. Se tivermos essas informações disponíveis no instante t, também poderemos prever a atividade econômica em t — um Nowcast.
*O código deste exercício é baseado em Fulton (2020).*
Aprenda a coletar, processar e analisar dados na formação de Do Zero à Análise de Dados Econômicos e Financeiros com Python.
Quer aprender a como criar modelos de série econômicas brasileiras usando Machine Learning e IA Generativa? Veja nosso curso IA para previsão Macroeconômica usando Python.
Dynamic Factor Model
Apresentamos aqui o modelo de fator dinâmico, que pode ser encontrado na classe `DynamicFactorMQ`, que faz parte do componente de análise de séries temporais (especificamente no subcomponente de modelos de espaço de estados) da biblioteca `statsmodels`.
Modelo estatístico:
O modelo estatístico e o algoritmo EM usados para a estimativa dos parâmetros são descritos em Bańbura e Modugno (2014) e Bańbura et al. (2011).
Como nestes artigos, a especificação básica parte da "forma estática" típica do modelo de fator dinâmico:
A classe `DynamicFactorMQ` permite as generalizações do modelo descritas nas referências acima, incluindo:
- Limitar blocos de fatores a carregar apenas em certas variáveis observadas
- Dados de frequência mista mensal e trimestral, conforme descrito por Mariano e Murasawa (2010)
- Permitir autocorrelação (via especificações AR(1)) nos distúrbios idiossincráticos
- Entradas ausentes nas variáveis observadas
Atenção: *O código deste exercício foi gerado utilizando o pandas na versão 1.5.3. O motivo é que a classe `DynamicFactorMQ` não foi atualizada para versões recentes do pandas, gerando erros. Há um pull request no repositório do Github para a atualização da classe, entretanto, ainda não implementada no statsmodels.*
Estimativa de parâmetros
Quando há um grande número de variáveis observadas , pode haver centenas ou até milhares de parâmetros a serem estimados. Nessa situação, pode ser extremamente difícil para os métodos típicos encontrar os parâmetros que maximizam a função de verossimilhança. Como esse modelo foi projetado para suportar um grande painel de variáveis observadas, o algoritmo EM é utilizado, pois pode ser mais robusto.
Em particular, o modelo acima está na forma de espaço de estados e, portanto, o módulo do statsmodels, statespace, pode ser usada para aplicar as rotinas do filtro de Kalman e suavização, que são necessárias para a estimativa.
Previsão e interpolação
Como o modelo está na forma de espaço de estados, uma vez que os parâmetros são estimados, é simples produzir previsões de qualquer uma das variáveis observadas .
Além disso, para quaisquer entradas ausentes nas variáveis observadas , também é simples produzir estimativas dessas entradas com base nos fatores extraídos de todo o conjunto de dados observados (estimativas "suavizadas" dos fatores). Em um modelo de frequência mista mensal/trimestral, isso pode ser usado para interpolar valores mensais para variáveis trimestrais.
Nowcasting, atualização de previsões e computação das "news"
Ao incluir tanto variáveis mensais quanto trimestrais, este modelo pode ser usado para produzir "nowcasts" de uma variável trimestral antes de sua publicação, com base nos dados mensais daquele trimestre. Por exemplo, a estimativa preliminar do PIB do primeiro trimestre (EUA) é tipicamente divulgada em abril, mas este modelo poderia produzir uma estimativa em março baseada em dados até fevereiro.
Muitos exercícios de previsão e nowcasting são atualizados frequentemente, em "tempo real", e é, portanto, importante que novos pontos de dados possam ser facilmente adicionados conforme chegam. Como esses novos pontos de dados fornecem novas informações, a previsão/nowcast do modelo mudará com novos dados, e também é importante que seja possível decompor facilmente essas mudanças em contribuições de cada série atualizada para as mudanças na previsão. Ambos os passos são suportados por todos os modelos de espaço de estados no Statsmodels – incluindo o modelo `DynamicFactorMQ` – como mostramos a seguir.
Dataset
Data vintage
Transformações de dados
Outliers
Modelo
Multiplicidades dos Fatores
Como esses modelos podem ser um tanto complexos para configurar, pode ser útil verificar os resultados do método `summary` do modelo. Esse método produz três tabelas.
1. Especificação do Modelo: a primeira tabela mostra informações gerais sobre o modelo selecionado, a amostra, a configuração dos fatores e outras opções.
2. Variáveis Observadas / Cargas dos Fatores: a segunda tabela mostra quais fatores carregam em quais variáveis observadas. Essa tabela deve ser verificada para garantir que os argumentos `factors` e `factor_multiplicities` foram especificados conforme desejado.
3. Ordens dos Blocos de Fatores: a última tabela mostra os blocos de fatores (os fatores dentro de cada bloco evoluem conjuntamente, enquanto entre blocos os fatores são independentes) e a ordem da autoregressão (vetorial).
Model: | Dynamic Factor Model | # of monthly variables: | 127 |
---|---|---|---|
+ 10 factors in 9 blocks | # of quarterly variables: | 1 | |
+ Mixed frequency (M/Q) | # of factor blocks: | 9 | |
+ AR(1) idiosyncratic | Idiosyncratic disturbances: | AR(1) | |
Sample: | 2000-01 | Standardize variables: | True |
- 2020-01 |
Dep. variable | Global.1 | Global.2 | Output and Income | Labor Market | Housing | Consumption, orders, and inventories | Money and credit | Interest and exchange rates | Prices | Stock market |
---|---|---|---|---|---|---|---|---|---|---|
Real Personal Income | X | X | X | |||||||
Real personal income ex ... | X | X | X | |||||||
IP Index | X | X | X | |||||||
IP: Final Products and N... | X | X | X | |||||||
IP: Final Products (Mark... | X | X | X | |||||||
IP: Consumer Goods | X | X | X | |||||||
IP: Durable Consumer Goo... | X | X | X | |||||||
IP: Nondurable Consumer ... | X | X | X | |||||||
IP: Business Equipment | X | X | X | |||||||
IP: Materials | X | X | X | |||||||
IP: Durable Materials | X | X | X | |||||||
IP: Nondurable Materials | X | X | X | |||||||
IP: Manufacturing (SIC) | X | X | X | |||||||
IP: Residential Utilitie... | X | X | X | |||||||
IP: Fuels | X | X | X | |||||||
Capacity Utilization: Ma... | X | X | X | |||||||
Help-Wanted Index for Un... | X | X | X | |||||||
Ratio of Help Wanted/No.... | X | X | X | |||||||
Civilian Labor Force | X | X | X | |||||||
Civilian Employment | X | X | X | |||||||
Civilian Unemployment Ra... | X | X | X | |||||||
Average Duration of Unem... | X | X | X | |||||||
Civilians Unemployed - L... | X | X | X | |||||||
Civilians Unemployed for... | X | X | X | |||||||
Civilians Unemployed - 1... | X | X | X | |||||||
Civilians Unemployed for... | X | X | X | |||||||
Civilians Unemployed for... | X | X | X | |||||||
Initial Claims | X | X | X | |||||||
All Employees: Total non... | X | X | X | |||||||
All Employees: Goods-Pro... | X | X | X | |||||||
All Employees: Mining an... | X | X | X | |||||||
All Employees: Construct... | X | X | X | |||||||
All Employees: Manufactu... | X | X | X | |||||||
All Employees: Durable g... | X | X | X | |||||||
All Employees: Nondurabl... | X | X | X | |||||||
All Employees: Service-P... | X | X | X | |||||||
All Employees: Trade, Tr... | X | X | X | |||||||
All Employees: Wholesale... | X | X | X | |||||||
All Employees: Retail Tr... | X | X | X | |||||||
All Employees: Financial... | X | X | X | |||||||
All Employees: Governmen... | X | X | X | |||||||
Avg Weekly Hours : Goods... | X | X | X | |||||||
Avg Weekly Overtime Hour... | X | X | X | |||||||
Avg Weekly Hours : Manuf... | X | X | X | |||||||
Avg Hourly Earnings : Go... | X | X | X | |||||||
Avg Hourly Earnings : Co... | X | X | X | |||||||
Avg Hourly Earnings : Ma... | X | X | X | |||||||
Housing Starts: Total Ne... | X | X | X | |||||||
Housing Starts, Northeas... | X | X | X | |||||||
Housing Starts, Midwest | X | X | X | |||||||
Housing Starts, South | X | X | X | |||||||
Housing Starts, West | X | X | X | |||||||
New Private Housing Perm... | X | X | X | |||||||
New Private Housing Perm... | X | X | X | |||||||
New Private Housing Perm... | X | X | X | |||||||
New Private Housing Perm... | X | X | X | |||||||
New Private Housing Perm... | X | X | X | |||||||
Real personal consumptio... | X | X | X | |||||||
Real Manu. and Trade Ind... | X | X | X | |||||||
Retail and Food Services... | X | X | X | |||||||
New Orders for Consumer ... | X | X | X | |||||||
New Orders for Durable G... | X | X | X | |||||||
New Orders for Nondefens... | X | X | X | |||||||
Unfilled Orders for Dura... | X | X | X | |||||||
Total Business Inventori... | X | X | X | |||||||
Total Business: Inventor... | X | X | X | |||||||
Consumer Sentiment Index | X | X | X | |||||||
M1 Money Stock | X | X | X | |||||||
M2 Money Stock | X | X | X | |||||||
Real M2 Money Stock | X | X | X | |||||||
Monetary Base | X | X | X | |||||||
Total Reserves of Deposi... | X | X | X | |||||||
Reserves Of Depository I... | X | X | X | |||||||
Commercial and Industria... | X | X | X | |||||||
Real Estate Loans at All... | X | X | X | |||||||
Total Nonrevolving Credi... | X | X | X | |||||||
Nonrevolving consumer cr... | X | X | X | |||||||
MZM Money Stock | X | X | X | |||||||
Consumer Motor Vehicle L... | X | X | X | |||||||
Total Consumer Loans and... | X | X | X | |||||||
Securities in Bank Credi... | X | X | X | |||||||
Effective Federal Funds ... | X | X | X | |||||||
3-Month AA Financial Com... | X | X | X | |||||||
3-Month Treasury Bill: | X | X | X | |||||||
6-Month Treasury Bill: | X | X | X | |||||||
1-Year Treasury Rate | X | X | X | |||||||
5-Year Treasury Rate | X | X | X | |||||||
10-Year Treasury Rate | X | X | X | |||||||
Moody’s Seasoned Aaa Cor... | X | X | X | |||||||
Moody’s Seasoned Baa Cor... | X | X | X | |||||||
3-Month Commercial Paper... | X | X | X | |||||||
3-Month Treasury C Minus... | X | X | X | |||||||
6-Month Treasury C Minus... | X | X | X | |||||||
1-Year Treasury C Minus ... | X | X | X | |||||||
5-Year Treasury C Minus ... | X | X | X | |||||||
10-Year Treasury C Minus... | X | X | X | |||||||
Moody’s Aaa Corporate Bo... | X | X | X | |||||||
Moody’s Baa Corporate Bo... | X | X | X | |||||||
Trade Weighted U.S. Doll... | X | X | X | |||||||
Switzerland / U.S. Forei... | X | X | X | |||||||
Japan / U.S. Foreign Exc... | X | X | X | |||||||
U.S. / U.K. Foreign Exch... | X | X | X | |||||||
Canada / U.S. Foreign Ex... | X | X | X | |||||||
PPI: Finished Goods | X | X | X | |||||||
PPI: Finished Consumer G... | X | X | X | |||||||
PPI: Intermediate Materi... | X | X | X | |||||||
PPI: Crude Materials | X | X | X | |||||||
Crude Oil, spliced WTI a... | X | X | X | |||||||
PPI: Metals and metal pr... | X | X | X | |||||||
CPI : All Items | X | X | X | |||||||
CPI : Apparel | X | X | X | |||||||
CPI : Transportation | X | X | X | |||||||
CPI : Medical Care | X | X | X | |||||||
CPI : Commodities | X | X | X | |||||||
CPI : Durables | X | X | X | |||||||
CPI : Services | X | X | X | |||||||
CPI : All Items Less Foo... | X | X | X | |||||||
CPI : All items less she... | X | X | X | |||||||
CPI : All items less med... | X | X | X | |||||||
Personal Cons. Expend.: ... | X | X | X | |||||||
Personal Cons. Exp: Dura... | X | X | X | |||||||
Personal Cons. Exp: Nond... | X | X | X | |||||||
Personal Cons. Exp: Serv... | X | X | X | |||||||
S&P’s Common Stock Price... | X | X | X | |||||||
S&P’s Composite Common S... | X | X | X | |||||||
S&P’s Composite Common S... | X | X | X | |||||||
VXO | X | X | X | |||||||
Real Gross Domestic Prod... | X | X | X |
block | order |
---|---|
Global.1, Global.2 | 4 |
Output and Income | 1 |
Labor Market | 1 |
Housing | 1 |
Consumption, orders, and inventories | 1 |
Money and credit | 1 |
Interest and exchange rates | 1 |
Prices | 1 |
Stock market | 1 |
Previsão
Embora os dados originais nos conjuntos de dados FRED-MD/QD para o PIB Real estejam em "Bilhões de Dólares Corrigidos de 2012", essa variável foi transformada para a taxa de crescimento anualizada trimestral (mudança percentual) para inclusão no modelo. Da mesma forma, a Taxa de Desemprego Civil estava originalmente em "Percentual", mas foi transformada na mudança de 1 mês (primeira diferença) para inclusão no modelo.
Como os dados transformados foram fornecidos ao modelo, os métodos de previsão e previsão produzirão previsões e previsões no espaço transformado. (Lembrete: a etapa de transformação, que fizemos antes de construir o modelo, é diferente da etapa de padronização, que o modelo lida automaticamente e que não precisamos reverter manualmente).
Abaixo, calculamos e plotamos as previsões diretamente do modelo associadas ao PIB Real e à taxa de desemprego.
Nowcasting e atualizações em tempo real
Os exercícios de previsão acima foram baseados em nosso objeto de resultados base, que foi calculado usando a base de dados de fevereiro de 2020. Isso foi antes de qualquer efeito da pandemia de COVID-19 e perto do fim de uma expansão econômica historicamente longa. Como resultado, as previsões acima pintam um quadro relativamente otimista para a economia, com forte crescimento do PIB real e uma contínua queda na taxa de desemprego. No entanto, os dados econômicos de março a junho mostraram fortes efeitos econômicos negativos decorrentes da pandemia e das interrupções associadas à atividade econômica.
É simples atualizar nosso modelo para levar em conta novos dados e produzir novas previsões. Além disso, podemos calcular o efeito que cada nova observação tem em nossas previsões. Para ilustrar, consideramos o exercício de previsão do crescimento do PIB real no segundo trimestre de 2020. Como este é o trimestre atual para a maior parte desse período, este é um exemplo de "nowcasting".
Para entender por que a previsão mudou tanto, podemos calcular os impactos de cada nova informação em cada uma das atualizações de dados (o que chamamos de "news").
Abaixo, mostramos como foi os impactos do vintage de abril comparado ao de março. Separamos quais as dez novas observações tiveram o maior impacto (em valor absoluto) na previsão de crescimento do PIB real para o segundo trimestre de 2020 (2020Q2).
observed | forecast (prev) | news | weight | impact | ||
---|---|---|---|---|---|---|
update date | updated variable | |||||
2020-03 | IP: Final Products and Nonindustrial Supplies | -6.53 | -0.10 | -6.42 | 0.61 | -3.94 |
Initial Claims | 253.49 | 0.94 | 252.55 | -0.01 | -2.05 | |
Moody’s Baa Corporate Bond Minus FEDFUNDS | 3.66 | 2.10 | 1.56 | -0.65 | -1.01 | |
IP: Final Products (Market Group) | -6.52 | -0.12 | -6.39 | -0.13 | 0.83 | |
VXO | 63.88 | 19.50 | 44.38 | -0.01 | -0.58 | |
IP: Manufacturing (SIC) | -6.46 | 0.05 | -6.51 | 0.06 | -0.41 | |
Moody’s Aaa Corporate Bond Minus FEDFUNDS | 2.39 | 1.25 | 1.14 | -0.35 | -0.40 | |
IP: Consumer Goods | -6.06 | -0.21 | -5.85 | -0.07 | 0.39 | |
All Employees: Total nonfarm | -0.46 | 0.15 | -0.61 | 0.53 | -0.32 | |
6-Month Treasury Bill: | -1.18 | -0.06 | -1.12 | 0.27 | -0.30 |
- A primeira coluna, "update date", é a data da nova observação.
- A segunda coluna, "updated variable", é a variável que foi atualizada.
- A terceira coluna, "observed", mostra o valor realmente registrado.
- A quarta coluna, "forecast (prev)", mostra o valor que havia sido previsto no vintage anterior (neste caso, no vintage de março de 2020).
- A quinta coluna, "news", mostra o componente inesperado da atualização (é igual a observado - previsão anterior).
- A sexta coluna, "weight", mostra o quanto essa combinação de data/variável influencia a previsão em questão.
- A última coluna, "impact", mostra o quanto a previsão de crescimento do PIB real em 2020Q2 mudou com base apenas na nova observação capturada por cada linha da tabela.
A partir desta tabela, podemos ver que, no vintage de abril, os maiores impactos na previsão do PIB real para 2020Q2 vieram de:
- Pedidos iniciais de seguro-desemprego e o Índice de Volatilidade CBOE S&P 100 (VXO), que foram muito mais altos do que o esperado.
- Spreads de títulos corporativos (AAA e BAA), que também foram mais altos do que o esperado.
- Produção industrial (incluindo produtos finais, manufatura, materiais duráveis e o índice geral) e utilização da capacidade, que foram muito mais baixos do que o esperado.
Referências
Bańbura, Marta, and Michele Modugno. "Maximum likelihood estimation of factor models on datasets with arbitrary pattern of missing data." Journal of Applied Econometrics 29, no. 1 (2014): 133-160.
Bańbura, Marta, Domenico Giannone, and Lucrezia Reichlin. "Nowcasting." The Oxford Handbook of Economic Forecasting. July 8, 2011.
Bok, Brandyn, Daniele Caratelli, Domenico Giannone, Argia M. Sbordone, and Andrea Tambalotti. 2018. "Macroeconomic Nowcasting and Forecasting with Big Data." Annual Review of Economics 10 (1): 615-43.
Fulton, Chad. "Large dynamic factor models, forecasting, and nowcasting". (2020) Acesso em: https://www.chadfulton.com/
Mariano, Roberto S., and Yasutomo Murasawa. "A coincident index, common factors, and monthly real GDP." Oxford Bulletin of Economics and Statistics 72, no. 1 (2010): 27-46.
McCracken, Michael W., and Serena Ng. "FRED-MD: A monthly database for macroeconomic research." Journal of Business & Economic Statistics 34, no. 4 (2016): 574-589.
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.