Ajuste sazonal no Python com o X13-ARIMA-SEATS

Um padrão sazonal ocorre quando uma série de tempo é afetada por fatores sazonais, como a época do ano ou o dia da semana. A sazonalidade é sempre de um período fixo e conhecido. Por exemplo, as vendas mensais de panetone apresentam sazonalidade induzida pela época de Natal de cada ano. Nestes casos, cálculos e análises de dados exigem especial atenção.

Em dados econômicos, exemplos de séries temporais com padrão sazonal são abundantes: desde variáveis de inflação até a mercado de trabalho. Em muitos casos essa característica é bem forte e clara, mas em outros pode ser sutil. Por exemplo, a principal medida de inflação no Brasil, o IPCA do IBGE, apresenta picos nos meses de dezembro/janeiro de cada ano:

Para evitar problemas de sazonalidade em análises, podemos realizar o procedimento de ajuste sazonal. Para tal, começamos assumindo que, conforme Hyndman e Athanasopoulos (2021), a série temporal possa ser decomposta de uma das duas maneiras abaixo:

  • Aditiva: Yt = St + Tt + Rt
  • Multiplicativa: Yt = St × Tt × Rt

onde:
Yt é a série temporal observada;
St é o componente de sazonalidade;
Tt é o componente de tendência;
Rt é o componente de ruído (flutuações aleatórias).

Sendo assim, se removermos o componente sazonal, St, dos dados, a série temporal resultante será a série "sazonalmente ajustada" (vamos chamá-la de Yts.a.). Então, para uma decomposição aditiva, Yts.a. = Yt - St e, para uma decomposição multiplicativa, Yts.a. = Yt / St.

Existem vários métodos/programas de estimação/decomposição para chegar a série sazonalmente ajustada, a maioria deles são complicados ou demandam muito para um post introdutório, não havendo um consenso sobre o uso. Algumas instituições estatísticas, como o IBGE, usam os métodos X-11/SEATS e variações deles (X-12-ARIMA, X-13-ARIMA-SEATS, etc.), enquanto que também é comum a utilização do método STL de decomposição. Para uma introdução e mais informações sobre os métodos veja Hyndman e Athanasopoulos (2021).

Agora que você sabe a importância da sazonalidade em análises de séries temporais, que tal usar o Python para aplicar um ajuste sazonal?

Como fazer ajuste sazonal no Python com o X13-ARIMA-SEATS?

Para obter uma série temporal ajustada sazonalmente pelo X13-ARIMA-SEATS são necessários 4 passos no Python:

  1. Baixe e descompacte o X13-ARIMA-SEATS: acesse o site do Census Bureau/US, criador do X13, e localize os links do programa e documentação referente aplicável ao seu sistema operacional;
  2. No Python, instale e importe uma versão atual da biblioteca statsmodels (>=0.13.5): essa biblioteca pode ser usada, através de funções em tsa.x13, como interface de comunicação entre o Python e o programa X13;
  3. Defina o XPATH como variável de ambiente: para que o statsmodels saiba onde os arquivos do programa X13 foram descompactados, crie uma variável de ambiente "X13PATH" e aponte o caminho para a pasta;
  4. Realize o ajuste sazonal com a função x13_arima_analysis(): aponte no argumento endog a série temporal e no argumento freq a frequência da mesma para que o método do X13 seja aplicado.

Ao final, do objeto resultante da última etapa, você poderá obter a série ajustada sazonalmente acessando o elemento seasadj. Aproveite e plote a série original com a série ajustada sazonalmente para observar as diferenças. Você deve obter algo parecido com isso:

 

Saiba mais

Se você precisar de mais detalhes e códigos de exemplo, no Clube AM da Análise Macro mostramos todo o procedimento passo a passo aplicado a séries econômicas, além de haver diversos outros exercícios sobre ciência de dados para economia e finanças usando o R e o Python.

E se você precisa entender mais sobre análise de dados macroeconômicos, confira a trilha Macroeconomia Aplicada da Análise Macro.

Referências

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

 

 

Compartilhe esse artigo

Facebook
Twitter
LinkedIn
WhatsApp
Telegram
Email
Print

Comente o que achou desse artigo

Outros artigos relacionados

Criando operações SQL com IA Generativa no R com querychat

No universo da análise de dados, a velocidade para obter respostas é um diferencial competitivo. Frequentemente, uma simples pergunta de negócio — “Qual foi nosso produto mais vendido no último trimestre na região Nordeste?” — inicia um processo que envolve abrir o RStudio, escrever código dplyr ou SQL, executar e, finalmente, obter a resposta. E se pudéssemos simplesmente perguntar isso aos nossos dados em português, diretamente no nosso dashboard Shiny?

Dashboard Financeiro com IA e Shiny Python: Análise de Dados Abertos da CVM

Este artigo apresenta um tutorial completo sobre como construir uma ferramenta de análise financeira de ponta. Utilizando Shiny for Python, demonstramos a automação da coleta de dados das Demonstrações Financeiras Padronizadas (DFP) da CVM e o tratamento dessas informações com Pandas. O ponto alto do projeto é a integração da IA Generativa do Google Gemini, que atua como um assistente de análise, interpretando os dados filtrados pelo usuário e fornecendo insights contábeis e financeiros em tempo real. O resultado é um dashboard dinâmico que democratiza a análise de dados complexos e acelera a tomada de decisão.

Econometria, ML ou IA para previsão da PMS?

Prever a Pesquisa Mensal de Serviços (PMS/IBGE) é um desafio por natureza: trata-se de uma série mensal, sujeita a volatilidade e choques que vão de fatores sazonais a mudanças estruturais no setor. Para enfrentar esse problema, realizamos um exercício de comparação entre três abordagens de modelagem: econometria tradicional (ARIMA), machine learning (XGBoost) e inteligência artificial (TimeGPT).

Boletim AM

Receba diretamente em seu e-mail gratuitamente nossas promoções especiais e conteúdos exclusivos sobre Análise de Dados!

Boletim AM

Receba diretamente em seu e-mail gratuitamente nossas promoções especiais e conteúdos exclusivos sobre Análise de Dados!

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.