Ajuste sazonal no Python com o X13-ARIMA-SEATS

O ajuste sazonal remove de uma série o padrão que se repete todo ano e revela a tendência real da série. Este tutorial mostra como fazer o ajuste no Python com o X13-ARIMA-SEATS, o método de referência do IBGE e do US Census Bureau, usando o statsmodels. Traz a instalação para Google Colab e para Windows.

O ajuste sazonal no Python remove de uma série temporal o padrão que se repete todo ano — o pico de dezembro, o vale de janeiro — para deixar à mostra a tendência real da série. A forma mais robusta de fazer isso é o X13-ARIMA-SEATS, o mesmo programa que o IBGE e o US Census Bureau usam, chamado a partir do Python pela biblioteca statsmodels.

Neste tutorial você vê como fazer o ajuste sazonal de ponta a ponta: coletar uma série mensal, instalar o X13 (no Google Colab e no Windows), rodar o ajuste e comparar a série original com a dessazonalizada. O gráfico abaixo já mostra o resultado.

Ajuste sazonal no Python com o X13-ARIMA-SEATS: série de empregados no varejo original, com picos sazonais, comparada à série dessazonalizada, que revela a tendência
Série original (cinza, com os dentes de serra sazonais) vs. série dessazonalizada pelo X13 (azul). Fonte: BLS/US.

A linha cinza tem um dente de serra que se repete todo ano: é a sazonalidade. A linha azul, ajustada pelo X13, apaga esse efeito de calendário e mostra o que de fato aconteceu com o emprego — a subida até 2007, a queda na crise de 2008 e a recuperação seguinte.

O que é sazonalidade em uma série temporal

Uma série temporal é uma sequência de observações em intervalos regulares: a inflação mensal, o PIB trimestral, o emprego mês a mês. É comum enxergá-la como a soma de três partes que não observamos separadamente.

📈

Tendência
O movimento geral, de subida ou descida ao longo do tempo. É o que se quer enxergar.
🔁

Sazonalidade
O padrão que se repete em período fixo e conhecido: o mês do ano, o dia da semana. É o que o ajuste remove.
🎲

Resíduo
O que sobra depois de extrair tendência e sazonalidade: a parte irregular, o choque não explicado.

A sazonalidade é um problema de leitura. O varejo contrata para as festas de fim de ano e demite em janeiro: se você olha só o número cheio, um salto em dezembro parece uma melhora da economia quando é apenas o calendário. Ajuste sazonal é remover essa componente para comparar dezembro com dezembro sem o ruído do mês.

Série aditiva e série multiplicativa

Há duas formas de a sazonalidade se combinar com o resto da série, e a escolha depende de como a "onda" sazonal se comporta. Na forma aditiva, a onda tem sempre o mesmo tamanho, independente do nível da série. Na forma multiplicativa, a onda cresce quando a série sobe — típico de séries econômicas em nível, em que a oscilação de dezembro fica maior à medida que o total aumenta.

Essa é uma decisão que costuma travar quem faz o ajuste na mão. O X13-ARIMA-SEATS resolve isso sozinho: ele testa e escolhe o modelo adequado, sem você ter que definir de antemão.

O que é o X13-ARIMA-SEATS

O X13-ARIMA-SEATS é o método de ajuste sazonal mais robusto disponível e o padrão que institutos oficiais publicam. Ele combina um modelo ARIMA — que projeta as pontas da série para o algoritmo não ficar cego no começo e no fim — com o algoritmo SEATS de extração sazonal, e ainda corrige efeitos de calendário como dias úteis e feriados móveis (a Páscoa, o Carnaval), que o olho não separa da sazonalidade comum.

O detalhe que muda o fluxo de trabalho: o X13 é um programa externo, escrito em Fortran pelo US Census Bureau. O Python não o reimplementa — ele chama o executável por baixo dos panos, pela statsmodels. Por isso o tutorial tem um passo que não existe em outras bibliotecas: baixar o binário e dizer ao Python onde ele está.

Como fazer o ajuste sazonal no Python, passo a passo

O procedimento tem quatro etapas. Nenhuma exige matemática pesada: o trabalho é preparar a série no formato certo, deixar o X13 acessível e chamar uma função.

Coletar a série
Uma série mensal (ou trimestral), com a data no índice e a frequência definida — exigência do X13.

Baixar o X13
O binário do US Census Bureau. É diferente para cada sistema: um para Linux/Colab, outro para Windows.

Apontar o X13PATH
Uma variável de ambiente que diz ao Python a pasta onde o programa está.

Rodar o ajuste
Uma chamada a x13_arima_analysis(); a série ajustada sai no atributo .seasadj.

1. A série de exemplo

Usamos uma série mensal de empregados no varejo (fonte: o BLS, instituto de estatísticas do trabalho dos EUA), de 1995 a 2019. Serve bem para o exemplo: a sazonalidade de fim de ano aparece com clareza no gráfico. O X13 pede a série com a data no índice e a frequência marcada como mensal — sem isso, ele não sabe o período do ciclo a procurar.

2 e 3. Baixar o X13 e apontar o caminho (Colab e Windows)

Aqui está o passo que confunde. Como o X13 é um executável externo, você baixa o arquivo certo para o seu sistema e informa a pasta dele ao Python pela variável X13PATH. O download direto do site do Census costuma ser bloqueado, então a Análise Macro hospeda os dois binários.

No Google Colab (Linux), que é o ambiente padrão do tutorial, você baixa o binário Linux e aponta o caminho para a pasta onde ele foi descompactado. É o caminho mais simples, porque o Colab roda na nuvem e não depende da sua máquina.

No Windows, o binário Linux não funciona — é preciso a versão Windows, um arquivo .exe. Você baixa o .zip, descompacta e aponta o X13PATH para a pasta que contém o executável. É a única diferença real entre rodar no Colab e rodar no seu computador; do resto do código para a frente, tudo é idêntico.

4. Rodar o ajuste e extrair a série ajustada

Com o caminho configurado, o ajuste é uma linha: você passa a série para a função x13_arima_analysis() da statsmodels. Ela roda o X13, ajusta o modelo ARIMA, extrai a sazonalidade e devolve um objeto com os componentes. A série dessazonalizada, que é a que queremos, sai no atributo .seasadj. A tabela abaixo mostra alguns meses, com o valor original e o ajustado lado a lado.

Mês Série original Dessazonalizada (X13)
jan/1995 13.775,2 13.842,4
fev/1995 13.579,5 13.859,4
mar/1995 13.539,2 13.828,6
abr/1995 13.654,1 13.872,7
jun/2019 15.775,5 15.770,7
jul/2019 15.785,9 15.769,5
ago/2019 15.749,5 15.759,0
set/2019 15.611,3 15.758,1

Amostra da série de empregados no varejo (em mil), original e dessazonalizada pelo X13. Fonte: BLS/US.

Repare em janeiro de 1995: o valor original (13.775) é bem menor que o ajustado (13.842), porque janeiro é um mês de baixa sazonal — o X13 "devolve" o que o calendário tirou. Em meses sem forte efeito sazonal, os dois valores quase coincidem.

As ferramentas por trás

Logo do Python
Python — a linguagem que orquestra todo o fluxo: coleta os dados, chama o X13 e monta o gráfico.
statsmodels — a biblioteca de estatística e econometria do Python. É ela que faz a ponte com o X13, pela função x13_arima_analysis().
X-13ARIMA-SEATS — o programa do US Census Bureau que executa o ajuste sazonal de referência, o mesmo usado por bancos centrais e institutos de estatística.

O que o resultado revela

  • A sazonalidade escondia a tendência. Sem ajustar, cada dezembro parecia um recorde e cada janeiro, uma queda; a série ajustada mostra que boa parte disso era só o calendário.
  • O ajuste não inventa dado. Ele redistribui: tira do mês de pico, devolve ao mês de vale, preservando o nível geral da série.
  • A crise de 2008 fica nítida. Na série ajustada, a queda de 2008-2009 aparece limpa, sem se confundir com a variação normal de fim de ano.

Considerações finais

O que este tutorial mostra é o poder do Python para análise econômica: com poucas linhas e dados públicos, você reproduz um ajuste sazonal de padrão oficial — o mesmo que o IBGE aplica antes de divulgar a produção industrial ou o varejo. O que antes exigia software especializado hoje cabe em um notebook.

O Python é a ferramenta certa para isso porque reúne no mesmo lugar a coleta dos dados, o tratamento, a modelagem e o gráfico, com bibliotecas maduras para cada etapa. O ajuste sazonal é só um exemplo; o mesmo caminho — coletar, tratar, modelar, visualizar — se repete em quase todo problema de análise de dados econômicos. O que muda é a aplicação:

  • Economista: compara indicadores mês a mês sem o ruído sazonal, base de qualquer leitura de conjuntura.
  • Analista de dados: dessazonaliza séries de vendas, demanda e produção para previsão e planejamento.
  • Gestor público: lê arrecadação, emprego e atividade já ajustados, como fazem os institutos oficiais.
  • Pesquisador: prepara séries para modelos de séries temporais, em que a sazonalidade precisa ser tratada antes.

Aprender a linguagem é o que abre a porta para todas essas frentes.

Você viu como funciona; aprenda a construir

O ajuste sazonal é uma das técnicas que você domina na Formação em Análise Macroeconômica, onde constrói em Python a análise dos principais indicadores da economia brasileira, da coleta ao gráfico final. 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