Método Holt-Winters
O método Holt-Winters estende a suavização exponencial para séries com tendência e sazonalidade ao manter três componentes suavizados: nível \(\ell_t\), tendência \(b_t\), e índice sazonal \(s_t\). Ele existe em variantes aditiva e multiplicativa, dependendo de como a sazonalidade interage com o nível.
Holt-Winters aditivo
Use quando as flutuações sazonais são aproximadamente constantes em termos absolutos, independentemente do nível da série.
\[\ell_t = \alpha(y_t - s_{t-m}) + (1-\alpha)(\ell_{t-1} + b_{t-1})\]
\[b_t = \beta(\ell_t - \ell_{t-1}) + (1-\beta)b_{t-1}\]
\[s_t = \gamma(y_t - \ell_{t-1} - b_{t-1}) + (1-\gamma)s_{t-m}\]
\[\hat{y}_{t+h} = \ell_t + h \cdot b_t + s_{t+h-m}\]
em que \(m\) é a duração da estação e \(\alpha, \beta, \gamma \in (0,1)\) são os parâmetros de suavização para nível, tendência e sazonalidade, respectivamente. O índice sazonal \(s_t\) é atualizado usando o desvio de \(y_t\) em relação ao nível sem tendência.
Holt-Winters multiplicativo
Use quando as flutuações sazonais crescem proporcionalmente ao nível (por exemplo, passageiros aéreos, vendas no varejo que escalam com o volume).
\[\ell_t = \alpha\frac{y_t}{s_{t-m}} + (1-\alpha)(\ell_{t-1} + b_{t-1})\]
\[b_t = \beta(\ell_t - \ell_{t-1}) + (1-\beta)b_{t-1}\]
\[s_t = \gamma\frac{y_t}{\ell_{t-1} + b_{t-1}} + (1-\gamma)s_{t-m}\]
\[\hat{y}_{t+h} = (\ell_t + h \cdot b_t) \cdot s_{t+h-m}\]
O modelo multiplicativo divide pelo índice sazonal em vez de subtraí-lo. Os índices sazonais flutuam em torno de 1 (valores acima de 1 indicam períodos acima da média; abaixo de 1, abaixo da média). Os índices do modelo aditivo flutuam em torno de 0.

O modelo aditivo (esquerda) prevê oscilações sazonais de tamanho constante. O modelo multiplicativo (direita) prevê oscilações que crescem com o nível, o que se ajusta melhor ao padrão histórico dos dados de passageiros aéreos.
Inicialização
A inicialização adequada é essencial: valores iniciais ruins podem levar muitos períodos para se corrigir. A abordagem padrão:
Nível \(\ell_m\): média da primeira estação completa: \[\ell_m = \frac{1}{m}\sum_{i=1}^m y_i\]
Tendência \(b_m\): média das mudanças da primeira para a segunda estação: \[b_m = \frac{1}{m}\left(\frac{y_{m+1}-y_1}{m} + \frac{y_{m+2}-y_2}{m} + \cdots + \frac{y_{2m}-y_m}{m}\right)\]
Índices sazonais \(s_1, \ldots, s_m\) (aditivo): desvio de cada período em relação à média da primeira estação: \[s_i = y_i - \ell_m, \quad i = 1, \ldots, m\]
Para o multiplicativo: \(s_i = y_i / \ell_m\).
Na prática, HoltWinters() e ets() do R estimam os valores iniciais em conjunto com os parâmetros de suavização, minimizando a SSE.
Holt-Winters com tendência amortecida
O Holt-Winters com tendência linear pode sobrestimar previsões em horizontes longos: a tendência é extrapolada indefinidamente. A variante de tendência amortecida introduz um parâmetro de amortecimento \(\phi \in (0,1)\) que aplaina a tendência ao longo do tempo:
\[\hat{y}_{t+h} = \ell_t + (\phi + \phi^2 + \cdots + \phi^h)b_t + s_{t+h-m}\]
Conforme \(h \to \infty\), a soma entre parênteses converge para \(\phi/(1-\phi)\), então a previsão se aproxima assintoticamente de um nível constante. A tendência amortecida geralmente tem melhor desempenho em horizontes médios e longos do que o Holt-Winters sem amortecimento.

A previsão sem amortecimento (vermelho) extrapola a tendência linearmente sem limite. A previsão amortecida (verde) se aplaina em direção a um nível constante, o que geralmente é mais realista em horizontes além de 1 a 2 estações.
Escolhendo entre aditivo e multiplicativo
| Critério | Aditivo | Multiplicativo |
|---|---|---|
| Amplitude sazonal | Constante ao longo do tempo | Cresce com o nível |
| Dados transformados em log | Ambos funcionam | Aditivo em log \(\equiv\) multiplicativo no original |
| Valores negativos possíveis | Sim | Não (exige \(y_t > 0\)) |
| Notação ETS | ETS(A,A,A) | ETS(M,A,M) ou ETS(A,A,M) |
Uma regra prática: plote a série e verifique se as oscilações sazonais se ampliam conforme a série cresce. Se sim, use o multiplicativo (ou transforme em log e use o aditivo).
⚠️ O modelo multiplicativo exige dados estritamente positivos
O Holt-Winters multiplicativo divide por \(s_{t-m}\) e \(\ell_{t-1} + b_{t-1}\), o que exige que todos os valores sejam estritamente positivos. Se a série contém zeros ou valores negativos (contagens com zeros, temperatura em Celsius), use o modelo aditivo ou transforme os dados.
Além disso, o modelo multiplicativo pode se tornar instável se o nível se aproximar de zero durante a recursão, produzindo índices sazonais explosivos.
Ajustando Holt-Winters em R
Tanto a variante aditiva quanto a multiplicativa estão a uma chamada de função de distância, com o R base otimizando \(\alpha\), \(\beta\) e \(\gamma\) automaticamente:
# Base R
fit_add <- HoltWinters(y, seasonal = "additive")
fit_mult <- HoltWinters(y, seasonal = "multiplicative")
# forecast package (recommended: automatic parameter optimization)
library(forecast)
fit <- hw(y, h = 24, seasonal = "multiplicative", damped = TRUE)
forecast(fit, h = 24)
# ETS framework (automatic model selection)
fit_ets <- ets(y) # selects best ETS model by AIC
summary(fit_ets) # shows selected model, e.g. ETS(M,Ad,M)
forecast(fit_ets, h = 24)
💡 Deixe o AIC escolher entre aditivo e multiplicativo
Em vez de escolher manualmente, ajuste ambos os modelos e compare o AIC:
fit_a <- ets(y, model = "AAA") # additive
fit_m <- ets(y, model = "MAM") # multiplicative (mult. error + seas.)
AIC(fit_a); AIC(fit_m)
Ou use ets(y), que busca automaticamente. O modelo selecionado é mostrado como ETS(error, trend, season), por exemplo ETS(M,Ad,M) significa erro multiplicativo, tendência aditiva amortecida, sazonalidade multiplicativa.