Previsão da PMS no Python: econometria, ML e IA comparadas

Como prever a PMS do IBGE no Python? Neste tutorial, econometria (ARIMA), machine learning (XGBoost) e inteligência artificial (TimeGPT) competem na mesma série da Pesquisa Mensal de Serviços. Além das previsões, comparamos o que cada modelo previu há um ano com o que o IBGE de fato divulgou — e o XGBoost foi o que mais se aproximou.

Para prever a PMS no Python, três caminhos competem: a econometria clássica (ARIMA), o machine learning (XGBoost) e a inteligência artificial (TimeGPT). Neste tutorial você vê como montar os três sobre a mesma série da Pesquisa Mensal de Serviços do IBGE e como descobrir qual deles acertou quando confrontado com o dado que já se realizou.

A PMS é a estatística oficial do IBGE para o setor de serviços, o maior componente do PIB brasileiro. Sua variação mensal é uma das primeiras leituras do ritmo da atividade, e também uma das mais difíceis de antecipar: é uma série volátil, que muda de sinal com frequência e reage a choques sazonais e estruturais.

Gráfico da previsão da PMS no Python: ARIMA, XGBoost e TimeGPT contra a PMS realizada de ago/2025 a abr/2026, com o XGBoost mais próximo do dado do IBGE
Previsões feitas em set/2025 contra a PMS que o IBGE divulgou depois. Fontes: exercício e IBGE (SIDRA).

O gráfico acima confronta as previsões feitas há quase um ano com a PMS que o IBGE publicou desde então. Nenhum modelo capturou os saltos bruscos da série, mas, no erro acumulado, o XGBoost foi o que ficou mais perto do realizado.

Quer reproduzir esta comparação?

O script completo em Python (coleta a PMS na API do IBGE, treina ARIMA, XGBoost e TimeGPT, avalia numa janela de teste e gera as previsões) vai para os assinantes do Boletim AM. Assine, é gratuito, e receba no seu e-mail o código pronto para rodar.

Assinar o Boletim AM e receber o código →

Por que prever a PMS é difícil

A PMS que usamos é a variação do volume de serviços de um mês contra o anterior, já com ajuste sazonal. O ajuste sazonal remove o padrão que se repete todo ano, como o pico de fim de ano, para que a variação reflita movimento real da atividade, não o calendário.

Mesmo assim, a série é ruidosa. A variação típica de um mês para o outro é grande em relação ao nível médio, próximo de 0,5%. Ela sobe e desce, cruza o zero e responde a choques que nenhum modelo enxerga de antemão. Prever mês a mês essa série, com precisão, é praticamente impossível.

Por isso o exercício coloca métodos de naturezas diferentes para competir. Cada família de modelo enxerga a série de um jeito, e comparar os três diz mais do que confiar em qualquer um deles isoladamente.

Como o exercício foi feito, etapa por etapa

O método é um pipeline de dados com quatro etapas. As três primeiras preparam o terreno; a quarta é a competição entre os modelos.

📥

1. Coletar a PMS
Baixa a série direto da API SIDRA do IBGE, já com ajuste sazonal.
🧪

2. Montar a avaliação
Separa os últimos 12 meses como janela de teste, que nenhum modelo vê no treino.
🤖

3. Treinar os modelos
Ajusta ARIMA, XGBoost e TimeGPT sobre a mesma série.
📊

4. Comparar
Mede o erro de cada um e confronta a previsão com o realizado.

1. A PMS vem pronta da API do IBGE

A série está na API SIDRA do IBGE, na tabela da PMS. Em vez de baixar planilhas à mão, o código lê o dado direto de uma URL e devolve uma série mensal limpa. A variável escolhida já traz o ajuste sazonal, o que evita ter que dessazonalizar por conta própria.

Série histórica da PMS no Python desde 2011: variação mensal do volume de serviços com ajuste sazonal, oscilando em torno de zero, com o mergulho da pandemia em 2020
Variação mensal da PMS, com ajuste sazonal, desde 2011. Fonte: IBGE (SIDRA, tabela 5906).

O gráfico da série mostra o tamanho do problema: a PMS oscila em torno de zero, muda de sinal a todo momento e traz o choque extremo da pandemia em 2020. É esse ruído que os modelos precisam enfrentar.

2. A janela de teste garante uma comparação justa

Para saber quem prevê melhor, a regra de ouro é avaliar cada modelo em dados que ele não viu no treino. Por isso o exercício separa os últimos 12 meses como janela de teste: treina com o resto da série e compara a previsão com o que realmente aconteceu naqueles 12 meses.

O erro é medido por três métricas clássicas. O RMSE penaliza erros grandes com mais força; o MAE é a média do tamanho do erro; o MAPE mede o erro em termos percentuais. Em todas, quanto menor, melhor.

3. Três modelos, três formas de enxergar a série

O ARIMA é o cavalo de batalha da econometria de séries temporais. Ele usa os próprios valores passados da série e o erro recente para projetar o futuro, e na versão sazonal captura o padrão que se repete a cada 12 meses. A escolha da configuração é automática, feita pela função que busca a melhor combinação.

O XGBoost não é um modelo de séries por natureza: é um algoritmo de árvores de decisão. Para usá-lo em previsão, o truque é transformar a série numa tabela de variáveis explicativas, as features: defasagens (o valor de 1, 3, 6, 12 meses atrás), médias móveis recentes e marcadores do calendário. O modelo aprende a relação entre essas features e o valor do mês seguinte.

O TimeGPT, da Nixtla, é um modelo de fundação para séries temporais. Assim como os grandes modelos de linguagem foram treinados em imensos volumes de texto, o TimeGPT foi treinado em bilhões de séries. A promessa é prever sem treinar nada na sua série específica. Para usá-lo é preciso criar uma conta na Nixtla e obter uma chave de API própria, o que pode exigir plano corporativo conforme o volume de uso.

Por fim, o exercício monta um ensemble: a média das previsões. Combinar modelos que erram de formas diferentes costuma reduzir o erro médio, sem precisar apostar de antemão em qual é o melhor.

Quem acertou: previsto contra realizado

As previsões geradas para o período iniciado em agosto de 2025 já podem ser comparadas com a PMS que o IBGE divulgou desde então. A tabela traz o erro de cada modelo nesses nove meses, medido pelo RMSE e pelo MAE.

Modelo Abordagem RMSE MAE
XGBoost Machine learning 0,852 0,638
Ensemble Média dos modelos 0,870 0,668
ARIMA Econometria clássica 0,877 0,690
TimeGPT Inteligência artificial 0,994 0,825

Erro das previsões (set/2025) contra a PMS realizada, 9 meses (ago/2025 a abr/2026). Fontes: exercício e IBGE (SIDRA).

O XGBoost teve o menor erro, seguido de perto pelo ensemble e pelo ARIMA. O TimeGPT, a inteligência artificial do trio, superestimou de forma consistente a variação e ficou por último nesta janela. Não é um veredito geral sobre os métodos: é o que aconteceu nesta série, neste período. Testar as previsões contra o dado que se realizou é o que dá base à comparação, em vez de comparar modelos apenas pelo desempenho no período de treino.

A previsão para os próximos 12 meses

Com os modelos re-treinados sobre a série atualizada, o exercício projeta os 12 meses seguintes ao último dado do IBGE. ARIMA e XGBoost, junto do ensemble, apontam variações em torno da média histórica.

Previsão da PMS no Python para os 12 meses seguintes ao último dado do IBGE, com ARIMA, XGBoost e o ensemble projetando variações em torno da média
Previsão da PMS para os 12 meses seguintes ao fim da amostra. Fonte: IBGE (SIDRA, tabela 5906).

O padrão é o esperado numa série tão volátil: os modelos convergem para previsões próximas da média, porque antecipar o ruído mês a mês é quase impossível. A diferença entre eles está em como cada um lida com a inércia e a sazonalidade da série.

As ferramentas por trás

Logo do Python
Python — a linguagem que reúne coleta, tratamento e os três modelos de previsão num só ambiente.
Logo do IBGE
IBGE — fonte da PMS, lida direto da API SIDRA já com ajuste sazonal.
Logo da Nixtla (TimeGPT)
Nixtla / TimeGPT — o modelo de fundação de inteligência artificial para séries temporais. Requer conta e chave de API própria (documentação).

Considerações finais

O ponto central deste exercício não é qual método vence, mas o método de comparação: uma janela de teste que nenhum modelo viu no treino, métricas de erro claras e a checagem do previsto contra o dado que se realizou. Numa série tão volátil quanto a PMS, nenhum modelo acerta os saltos mês a mês, e reconhecer esse limite já é parte da análise.

O Python resolve bem esse tipo de trabalho porque reúne, num só ambiente, a coleta na fonte oficial, o preparo dos dados e três famílias de modelo bem diferentes. O mesmo caminho, coletar, avaliar, modelar e confrontar com a realidade, se repete em quase todo problema de previsão macroeconômica. O que muda é a aplicação por área:

  • Economista de conjuntura: antecipa o ritmo dos serviços e da atividade para leitura de cenário.
  • Analista de investimentos: usa a projeção de indicadores para calibrar apostas em juros, câmbio e setores.
  • Cientista de dados: compara econometria, machine learning e IA num problema real, com avaliação rigorosa.
  • Gestor e planejamento: incorpora previsões de atividade em orçamentos e cenários de demanda.
  • Pesquisador e estudante: reproduz um exercício de previsão com dados abertos, sem depender de bases proprietárias.

Em todas essas frentes, saber programar em Python é o que permite sair da leitura passiva do indicador para produzir a própria análise.

Você viu como funciona; aprenda a montar o pipeline

A Formação em Análise Macroeconômica ensina a montar pipelines como este, da coleta no IBGE à modelagem e previsão em Python. Quem quer acesso a todas as formações tem o AM Black, a assinatura anual.

Conheça a Formação em Análise Macroeconômica →Ver o AM Black →

Leia também:


Compartilhe esse artigo

Facebook
Twitter
LinkedIn
WhatsApp
Telegram
Email
Print
Análise Macro © 2011 / 2026

comercial@analisemacro.com.br – Rua Visconde de Pirajá, 414, Sala 718
Ipanema, Rio de Janeiro – RJ – CEP: 22410-002

como podemos ajudar?

Preencha os seus dados abaixo e fale conosco no WhatsApp