Sazonalidade é definida como mudanças na série que são sempre fixas e o seu período de ocorrência é conhecido. É muito comum a aparição desse padrão em séries econômicas e financeiras. No post de hoje, iremos mostrar os métodos para decompor uma série temporal com o Python.
Uma série temporal é definida como uma série de dados ou observações registradas em intervalos de tempos regulares (discretos) ou irregulares (contínuos). Em geral, definimos uma série temporal em sua forma discreta, com dados em intervalos bem definidos. A frequência de uma série pode ser em horas, dias, semanas, meses, trimestre ou anos.
Como uma série temporal é por observações no tempo, diversas variáveis econômicas e financeiras são partes desta área. O PIB de um país mede o crescimento econômico ao longo de trimestres ou anos. A inflação é medida em formato mensal. O preço de uma ação é observado no período de dias úteis ou mesmo de forma contínua no intra-diário.
Uma série temporal pode exibir uma variedade de padrões, e é comum separar a série em diferentes componentes, cada uma representando esse padrão. Esses componentes são:
Tendência (trend)
A tendência existe quando há um termo que mede inclinação da série, seja de forma crescente ou decrescente. É possível observar a tendência de forma linear, entretanto, é possível referi-la como ponto de mudança da série, de um ponto crescente para um decrescente
Sazonal (Seasonal)
Um padrão sazonal ocorre quando uma série temporal é afetada por efeitos sazonais como por exemplo a hora de um dia, dias semanas ou meses do ano. A sazonalidade de uma série é sempre fixa e o seu período de ocorrência é conhecido.
Ciclo (cyclic)
Um ciclo ocorre quando a série exibe subidas e quedas que não são fixas a uma frequência. Essas flutuações podem ocorrer por condições econômicas, conhecidas como ciclo econômico.
Série Temporal
Considerando uma série temporal com as observações uma decomposição desses pontos no tempo consiste em escrever como a soma ou multiplicação dos três componentes não observáveis acima - tendência, sazonalidade e ciclo.
Considere que T é o componente de tendência, S o componente de sazonalidade e R o termo residual.
Série Temporal Aditiva
Uma série aditiva é mais apropriada se a magnitude do componente sazonal ou a variação da tendência-ciclo, não varia com o nível do tempo da série.
Série Temporal Multiplicativa
Uma série multiplicativa é mais apropriada caso a variação do componente sazonal ou a variação da tendência-ciclo varia de forma proporcional ao nível da série temporal.
Decomposição
Agora que entendemos os componentes de uma série temporal, podemos passar a entender como podemos lidar com eles, principalmente o componente sazonal.
Como exemplo, iremos aplicar na série de concessão de crédito total, importada do Banco Central. Antes de dessazonalizar, iremos deflacionar a série.
Concessões Totais de Crédito
Observe no gráfico como fica claro entender os períodos de sazonalidade. Há claramente picos e declínios em períodos fixos da série. Ao lidarmos com essa série, seja para análise ou para modelagem, é necessário levarmos em conta esse aspecto.
Método Naive
O primeiro método é a possibilidade de extrair o componente sazonal da série por meio do método de médias móveis. Esse método é conhecido como "naive" e é o mais simples. É possível utiliza-lo com o método seasonal_decompose da biblioteca statsmodels.
Com o seasonal_decompose é possível escolher tanto o método multiplicativo, quanto o aditivo. O resultado será um objeto de classe statsmodels.tsa.seasonal.DecomposeResult, do qual será possível extrair os resultados com os atributos. Podemos utilizar .seasonal (para obter os valores sazonais) ou .resid, para obter o resultado da série sem a sazonalidade e a da tendência.
É possível visualizar os valores por meio do .plot()
STL
Outro método de decomposição útil para retirar a sazonalidade é o método STL, que utiliza o LOESS (regressão local) através do método STL do módulo statsmodels.tsa.seasonal. Utilizamos a função em conjunto com .fit() para obter seus valores.
x13-Arima Seats
Outro método mais robusto para extrair a sazonalidade de uma série é o x13-Arima Seats, criado pelo US Census Bureau. É possível utilizar o x13-Arima Seats no Python através do módulo statsmodels.tsa.x13.x13_arima_analysis, entretanto, é necessário instalar o programa do x13 e especificar a pasta do arquivo na função do módulo para a sua utilização, portanto, deixaremos para abordar esse método em outro post.
____________________________________
Quer saber mais?
Veja mais no nosso curso de Análise de Séries Temporais e no nossos cursos de Macroeconomia Aplicada.