12.12 Suavização exponencial
Forecasts produced using exponential smoothing methods are weighted averages of past observations, with the weights decaying exponentially as the observations get older. In other words, the more recent the observation the higher the associated weight. (Rob J. Hyndman and Athanasopoulos 2021)
12.12.1 Simples (primeira ordem)
The demand during a period \(n\) periods ago is weighted by \((1-\alpha)^n\), hence the designation “exponential smoothing”. (R. G. Brown 1956, 3)
The calculation of the average depended only on the new information each month and on one past value of the average. We can call that a “first-order” system of smoothing. (R. G. Brown 1959, 65)
(R. G. Brown 1956, 2) decompõe a série temporal em
- Tendência: a variação é monotônica ao longo do intervalo de interesse, talvez por causa de um ciclo de baixa frequência.
- Ciclos: o padrão de variação é reproduzido, de alguma forma previsível, repetidamente.
- Ruído: variação aleatória, incluindo qualquer variação que não seja prevista, exceto em termos de uma função de distribuição estatística.
O artigo apresenta o desenvolvimento de “um procedimento para estimar rotineiramente a média, a tendência e a variação do ruído”. O autor informa que padrões cíclicos, como para demanda sazonal, não são discutidos.
A função forecast::ses()
retorna previsões via suavização exponencial e outras informações. A função forecast::accuracy()
retorna as seguintes medidas de acurácia:
- ME: Mean Error
- RMSE: Root Mean Squared Error
- MAE: Mean Absolute Error
- MPE: Mean Percentage Error
- MAPE: Mean Absolute Percentage Error
- MASE: Mean Absolute Scaled Error
- ACF1: Autocorrelation of errors at lag 1
Exemplo 12.17 Adaptado do exemplo oil production de (Rob J. Hyndman and Athanasopoulos 2018).
# Previsão de 10 períodos via suavização exponencial de primeira ordem
fc_ses <- forecast::ses(fpp2::oil)
plot(fc_ses)
## ME RMSE MAE MPE MAPE MASE ACF1
## Training set 8.81 48.04 35.52 2.14 10.74 0.98 0.16
Exercício 12.26 Veja
- (R. G. Brown 1956)
- https://otexts.com/fpp3/ses.html
- https://otexts.com/fpp3/accuracy.html
- Implemente e valide as estimativas de
forecast::ses()
. - Implemente e valide as medidas de
forecast::accuracy()
. - https://www.quora.com/What-makes-exponential-smoothing-exponential
12.12.2 Com tendência (segunda ordem)
The calculation of the trend used two values of the average and is therefore a kind of second-order system of smoothing, and we note that this second-order system, combining the average and the trend, can track a steadily rising demand. (R. G. Brown 1959, 65)
(Holt 1957, 5) sugere métodos para “suavizar as flutuações aleatórias atuais e revisar continuamente os ajustes sazonais e de tendência”, de maneira que tais flutuações aleatórias passam então “ser extrapoladas para o futuro para fins de previsões”.
Exemplo 12.18 Exemplo baseado na documentação de forecast::holt()
.
# Previsão de 10 períodos via suavização exponencial de segunda ordem
fc_holt <- forecast::holt(fpp2::oil)
plot(fc_holt)
## ME RMSE MAE MPE MAPE MASE ACF1
## Training set -1.11 48.59 35.45 0.07 11.54 0.98 0.16
Exercício 12.27 Veja
- (Holt 1957)
- https://otexts.com/fpp3/holt.html
- Implemente e valide as estimativas de
forecast::holt()
. - Valide as medidas de
forecast::accuracy()
.
12.12.3 Com tendência e sazonalidade (terceira ordem)
Método de Holt-Winters, baseado em (Holt 1957) e (Winters 1960).
Exemplo 12.19 Exemplo baseado na documentação de forecast::hw()
.
# Previsão de 48 períodos via suavização exponencial de terceira ordem
fc_hw <- forecast::hw(USAccDeaths, h = 48)
plot(fc_hw)
## ME RMSE MAE MPE MAPE MASE ACF1
## Training set 16 266 212 0 2 0 0
## Test set -8033 8033 8033 -401642 401642 12 NA
(J. W. Taylor 2003) estende a versão linear do método Holt-Winters para incorporar uma segundo componente sazonal.
Exercício 12.28 Veja
- (Winters 1960)
- https://otexts.com/fpp3/holt-winters.html
- Implemente e valide as estimativas de
forecast::hw()
. - Valide as medidas de
forecast::accuracy()
. - Compare
forecast::hw()
estats::HoltWinters()
. - https://otexts.com/fpp3/taxonomy.html
12.12.4 Via espaço de estados (ETS)
Each model consists of a measurement equation that describes the observed data, and some state equations that describe how the unobserved components or states (level, trend, seasonal) change over time. Hence, these are referred to as state space models. (Rob J. Hyndman and Athanasopoulos 2021)
We label each state space model as \(\text{ETS(Error, Trend, Seasonal)}\). This label can also be thought of as ExponenTial Smoothing. (…) [T]he possibilities for each component (or state) are: \(\text{Error}=\{A,M\}\), \(\text{Trend}=\{N,A,A_d\}\) and \(\text{Seasonal}=\{N,A,M\}\). (Rob J. Hyndman and Athanasopoulos 2021)
O argumento model
da função forecast::ets()
usa uma sequência de três caracteres que identifica o método conforme a terminologia de estrutura de (Rob J. Hyndman et al. 2002) e (R. Hyndman et al. 2008).
- Primeira letra: tipo de erro (A,M)
- Segunda letra: tipo de tendência (N,A,M)
- Terceira letra: o tipo de período (N,A,M)
Em todos os casos
- N: nenhum
- A: aditivo
- M: multiplicativo
- Z: selecionado automaticamente
Exemplos.
- “ANN”: suavização exponencial simples com erros aditivos
- “MNN”: suavização exponencial simples com erros multiplicativos
- “AAN”: método linear de Holt com erros aditivos
- “MAN”: método linear de Holt com erros multiplicativos
- “ANA”: método aditivo de Holt-Winters com erros aditivos sem sazonalidade
- “MAA”: método multiplicativo de Holt-Winters com erros aditivos
- “MAM”: método multiplicativo de Holt-Winters com erros multiplicativos
Exemplo 12.20 Exemplo baseado na documentação de forecast::ets()
.
# Previsão de 48 períodos via suavização exponencial simples com erros aditivos
fc_ets <- forecast::ets(USAccDeaths)
plot(predict(fc_ets, h = 48))
Exercício 12.29 Veja
12.12.5 BATS
A key feature of the framework is that it relies on a new method that greatly reduces the computational burden in the maximum likelihood estimation. (De Livera, Hyndman, and Snyder 2011, 2)
A função forecast::bats()
ajusta um modelo BATS (Box-Cox transform, ARMA errors, Trend, and Seasonal) conforme descrito em (De Livera, Hyndman, and Snyder 2011). Segundo os autores, para evitar os problemas com modelos não lineares de espaço de estados com suavização exponencial, restringe-se a atenção a modelos homocedásticos lineares. Alguns tipos de não linearidade são admitidas usando transformações Box-Cox (Box and Cox 1964, 214), o que limita a abordagem a séries temporais positivas.
Os parâmetros do modelo BATS são \((\omega,\{p,q\},\phi,\{m_1,\ldots,m_T\})\).
- \(\omega\): parâmetro Box-Cox
- \(p,q\): parâmetros ARMA
- \(\phi\): parâmetro de amortecimento (damping parameter)
- \(m_i\): períodos sazonais
Exemplos.
- BATS\((1,\{0,0\},1,\{m_1\})\): método aditivo de sazonalidade única de Holt-Winters
- BATS\((1,\{0,0\},1,\{m_1,m_2\})\): modelo aditivo de sazonalidade dupla de Holt-Winters de (J. W. Taylor 2003)
- BATS\((1,\{1,0\},1,\{m_1,m_2\})\): modelo aditivo de sazonalidade dupla de Holt-Winters com resíduo AR(1) de (J. W. Taylor 2003) e (J. W. Taylor 2008)
- BATS\((1,\{1,0\},1,\{m_1,m_2,m_3\})\): modelo aditivo de sazonalidade tripla de Holt-Winters com ajuste AR(1) de (J. W. Taylor 2010)
Exemplo 12.21 Exemplo baseado na documentação de forecast::bats()
.
12.12.6 TBATS
[T]he proposed trigonometric formulation is presented as a means of decomposing complex seasonal time series, and it is shown that this decomposition leads to the identification and extraction of seasonal components which are otherwise not apparent in the time series plot itself. (De Livera, Hyndman, and Snyder 2011, 2)
A função forecast::tbats()
ajusta um modelo TBATS (Trigonometric Box-Cox transform, ARMA errors, Trend, and Seasonal) conforme descrito em (De Livera, Hyndman, and Snyder 2011). (De Livera, Hyndman, and Snyder 2011, 12) apontam algumas das principais vantagens da estrutura de modelagem TBATS.
- admite um espaço de parâmetros efetivo maior com a possibilidade de melhores previsões
- permite a acomodação de múltiplos componentes sazonais aninhados e não aninhados
- lida com características não lineares típicas que são frequentemente vistas em séries em tempo real
- permite que qualquer autocorrelação nos resíduos seja levada em consideração
- envolve um procedimento de estimativa muito mais simples, mas eficiente
Os parâmetros do modelo TBATS são \((\omega,\{p,q\},\phi,\{<m_1,k_1>,\ldots,<m_T,k_T>\})\).
- \(\omega\): parâmetro Box-Cox
- \(p,q\): parâmetros ARMA
- \(\phi\): parâmetro de amortecimento (damping parameter)
- \(m_i\): períodos sazonais
- \(k_i\): número de harmônicos necessários para o \(i\)-ésimo componente sazonal
Exemplo 12.22 Exemplo baseado na documentação de forecast::tbats()
.
12.12.7 Para saber mais
- (Xu and Suo 2023) apresentam a formulação, as propriedades e a motivação por trás do design das novas funções de janela.