library(forecast)
library(ggplot2)
library(readxl)
library(seasonal)Decomposição de Séries Temporais
A decomposição de séries temporais é uma técnica essencial na análise de dados, permitindo a separação de uma série temporal em componentes distintas, como tendência, sazonalidade e ruído. Neste documento, exploraremos os conceitos teóricos da decomposição de séries temporais, apresentando uma aplicação prática utilizando um dado econômico brasileiro.
1 Conceitos
1.1 Séries Temporais
Uma série temporal é uma sequência de dados observados em intervalos de tempo sucessivos. Em termos práticos, esses dados podem representar valores mensais de inflação, produção industrial, taxas de desemprego, entre outros indicadores econômicos.
1.2 Componentes de uma Série Temporal
Uma série temporal pode ser decomposta em três componentes principais:
Tendência (T): Refere-se ao movimento de longo prazo na série, indicando a direção geral ao longo do tempo.
Sazonalidade (S): Reflete os padrões repetitivos que ocorrem em intervalos regulares, como variações sazonais ao longo de um ano.
Ruído (R): Representa a variação aleatória ou o componente irregular que não pode ser explicado por tendência ou sazonalidade.
1.3 Métodos de Decomposição
Existem diferentes métodos para decomposição de séries temporais, sendo os mais comuns:
Decomposição Clássica: Método que separa a série em componentes aditivos ou multiplicativos.
STL (Seasonal and Trend Decomposition using Loess): Um método mais flexível que utiliza o ajuste local (Loess) para decompor a série.
1.4 Tipos de Decomposição:
Existem dois principais tipos de decomposição clássica:
Aditiva: Supõe que os componentes são somados para formar a série original. A fórmula básica é: \(Y_t = T_t+S_t+I_t\) Este modelo é adequado quando as variações na série temporal são constantes ao longo do tempo.
Multiplicativa: Supõe que os componentes são multiplicados para formar a série original. A fórmula básica é:
\(Y_t = T_t × S_t × I_t\) Este modelo é adequado quando as variações na série temporal aumentam ou diminuem proporcionalmente ao nível da série.
2 Aplicação Prática
A decomposição clássica é utilizada em diversas áreas, como economia, finanças e ciências sociais, para entender padrões subjacentes nos dados temporais, prever tendências futuras e identificar períodos sazonais de alta ou baixa.
Essa técnica, apesar de simples, fornece uma base sólida para análises mais complexas e é frequentemente utilizada como etapa preliminar antes de aplicar modelos preditivos mais avançados, como ARIMA ou modelos de alisamento exponencial.
2.1 Dados
Para esta análise, utilizaremos dados da produção industrial brasileira. Este conjunto de dados é amplamente utilizado para entender as variações econômicas do país ao longo do tempo.
2.2 Preparação do Ambiente no R
Vamos começar instalando e carregando os pacotes necessários:
3 Carregando os Dados
# Baixando os dados da Produção Industrial
dados <- read_excel("tabela8888.xlsx")
# Preparando a série temporal
dados_ts <- ts(dados$pimpf, start=c(2002,1), frequency=12)
# Visualizando a série temporal
plot(dados_ts, main="Produção Industrial Brasileira", ylab="Produção", xlab="Ano")3.1 Decomposição Clássica
decomp_classica <- decompose(dados_ts)
plot(decomp_classica)3.2 Decomposição STL
decomp_stl <- stl(dados_ts, s.window="periodic")
plot(decomp_stl)decomp_stl <- stl(dados_ts, s.window="periodic")
plot(decomp_stl)3.3 Análise dos Resultados
A decomposição clássica nos mostra a tendência de longo prazo, sazonalidade e o ruído na série. Observa-se que há uma clara tendência decrescente em certos períodos, com padrões sazonais que se repetem anualmente. A decomposição STL, por sua vez, oferece uma visão mais detalhada e flexível da série, ajustando-se melhor às variações locais.
3.4 Pacote seasonal
O pacote seasonal, que é uma interface para o programa X-13ARIMA-SEATS do U.S. Census Bureau. 3. Como já temos a série temporal, pode-se ajustá-la sazonalmente usando a função seas:
ajuste_sazonal <- seas(dados_ts)
# Para visualizar o resultado ajustado sazonalmente
ajustado <- final(ajuste_sazonal)
print(ajustado)[1:20] Jan Feb Mar Apr May Jun Jul
2002 91.46787 91.99164 92.62253 92.54506 92.30594 92.61263 92.63727
2003 92.52423 93.36096 91.37655 92.45804 91.66402 92.23290 91.92395
2004 96.67789 97.08253 98.77073 98.89417 99.79844 99.83757 101.11680
2005 103.08142 102.52485 102.95090 103.30353 103.79362 104.50338 103.70191
2006 105.40120 105.50831 105.61953 105.63685 106.12624 105.71400 106.46912
2007 108.66484 109.32694 110.35955 111.29044 111.73996 112.31669 112.45266
2008 116.53243 116.80398 116.72992 117.11874 117.27558 118.91658 119.14259
2009 100.67610 101.60258 103.06428 103.88318 105.58462 106.46995 108.32787
2010 116.50478 116.33529 118.74641 118.89022 119.24441 118.91567 119.39874
2011 120.13580 121.18739 119.87954 119.34913 120.18230 119.39402 119.12087
2012 115.63024 115.85151 115.84933 115.94526 115.44932 115.85103 116.46666
2013 118.46676 117.63448 118.88277 119.48577 119.50280 119.85324 119.26818
2014 117.55996 118.47676 116.72803 116.57688 115.85710 114.68879 115.17952
2015 111.62562 110.15171 110.30241 108.42621 107.62240 106.45963 105.19386
2016 99.90744 99.19904 99.44591 99.14053 98.95226 99.14600 99.12734
2017 100.05855 100.26325 100.31752 100.14762 100.93308 101.24273 101.66872
2018 103.58469 103.10915 104.28867 104.37701 93.52547 104.19628 104.26730
2019 101.75058 102.72414 101.08182 102.01416 101.46609 101.39349 100.65395
2020 99.86194 100.04067 98.37407 77.93412 82.70740 91.12003 100.27587
2021 103.31783 102.24762 102.53081 101.40783 101.76195 101.10359 100.89055
2022 99.49257 100.29976 99.58628 100.23089 99.91812 100.06410 100.46541
2023 99.93743 99.39922 100.35032 99.78953 100.53322 99.80675 100.05036
2024 101.32708 101.96282 102.10736 102.62129 102.13561 103.85192
Aug Sep Oct Nov Dec
2002 92.43911 92.48220 93.02868 92.54188 93.11760
2003 92.69577 94.05594 94.70276 95.61475 95.38197
2004 101.55229 102.19207 102.06147 102.48787 102.99766
2005 103.91352 103.70979 103.87327 104.13773 105.14153
2006 106.53620 106.63557 107.01899 107.97838 108.62274
2007 113.89318 113.69521 115.52848 115.31430 116.18471
2008 118.68972 119.49852 118.67242 111.31854 99.15663
2009 109.61780 111.37407 113.07778 114.88255 115.28983
2010 119.30109 119.60812 119.68560 119.79498 119.85541
2011 118.32304 117.59736 117.06773 117.08729 117.57390
2012 117.73849 117.15163 118.05411 117.83283 118.02592
2013 119.24927 119.41173 119.08186 118.67292 117.50518
2014 114.92774 115.08715 114.35044 113.77905 111.86614
2015 104.66259 103.25263 102.66691 101.29754 100.30542
2016 98.18951 98.90071 98.11419 98.76206 98.95056
2017 102.10877 102.56633 103.03156 103.40977 104.03446
2018 103.63730 102.47217 102.43126 102.12104 102.21593
2019 101.15273 100.82010 101.15740 99.82561 99.88434
2020 101.08472 102.34774 102.43300 103.15447 102.71307
2021 100.47178 100.03825 99.45618 99.02211 99.89321
2022 99.88603 99.74544 99.60585 99.92207 99.46043
2023 100.32317 100.38475 100.56994 100.88379 101.75211
2024
[1] 91.46787 91.99164 92.62253 92.54506 92.30594 92.61263 92.63727 92.43911
[9] 92.48220 93.02868 92.54188 93.11760 92.52423 93.36096 91.37655 92.45804
[17] 91.66402 92.23290 91.92395 92.69577
Você pode ver um resumo do ajuste sazonal e do modelo estimado:
summary(ajuste_sazonal)
Call:
seas(x = dados_ts)
Coefficients:
Estimate Std. Error z value Pr(>|z|)
Leap Year 2.50656 0.62348 4.020 5.81e-05 ***
Mon 0.43801 0.19631 2.231 0.025665 *
Tue 0.65910 0.18974 3.474 0.000513 ***
Wed 0.13087 0.18879 0.693 0.488177
Thu 0.41786 0.18957 2.204 0.027508 *
Fri 0.02605 0.19171 0.136 0.891895
Sat 0.09041 0.18733 0.483 0.629369
Easter[1] -2.60177 0.36589 -7.111 1.15e-12 ***
LS2008.Nov -8.46948 1.81187 -4.674 2.95e-06 ***
LS2008.Dec -12.57178 1.80606 -6.961 3.38e-12 ***
AO2018.May -10.72753 1.46651 -7.315 2.57e-13 ***
AO2020.Apr -21.38811 1.59690 -13.393 < 2e-16 ***
AO2020.May -16.91850 1.74786 -9.680 < 2e-16 ***
AO2020.Jun -8.92205 1.60969 -5.543 2.98e-08 ***
AR-Nonseasonal-01 -0.97573 0.11076 -8.809 < 2e-16 ***
AR-Nonseasonal-02 -0.38373 0.05908 -6.495 8.32e-11 ***
AR-Seasonal-12 0.28262 0.08194 3.449 0.000563 ***
MA-Nonseasonal-01 -0.68396 0.11062 -6.183 6.30e-10 ***
MA-Seasonal-12 0.79129 0.05331 14.842 < 2e-16 ***
---
Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
SEATS adj. ARIMA: (2 1 1)(1 1 1) Obs.: 270 Transform: none
AICc: 1153, BIC: 1220 QS (no seasonality in final): 0
Box-Ljung (no autocorr.): 15.98 Shapiro (normality): 0.9865 *
Você pode também gerar gráficos para visualizar melhor a série original e a ajustada:
# Gráfico da série original e ajustada
plot(ajuste_sazonal)# Comparação entre a série original e a ajustada
plot(dados_ts, col = "blue", lty = 1, ylab = "Valor", main = "Série Original e Ajustada")
lines(ajustado, col = "red", lty = 2)
legend("topleft", legend = c("Original", "Ajustada"), col = c("blue", "red"), lty = 1:2)
3.5 Considerações Finais
A decomposição de séries temporais é uma ferramenta valiosa para analisar e prever comportamentos econômicos. Ao separar os componentes da série, podemos entender melhor os fatores que influenciam a dinâmica dos dados ao longo do tempo.
O ajuste sazonal em séries temporais é um processo essencial para a análise de dados que apresentam variações periódicas dentro de intervalos específicos, como meses ou trimestres. Essas variações sazonais podem mascarar as tendências subjacentes e tornar mais difícil identificar mudanças reais no comportamento da série.