Método Holt-Winters

El método Holt-Winters extiende el suavizado exponencial a series con tendencia y estacionalidad manteniendo tres componentes suavizados: nivel \(\ell_t\), tendencia \(b_t\) e índice estacional \(s_t\). Existe en variante aditiva y multiplicativa según cómo interactúa la estacionalidad con el nivel.

Holt-Winters aditivo

Se usa cuando las fluctuaciones estacionales son aproximadamente constantes en términos absolutos independientemente del nivel de la serie.

\[\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}\]

donde \(m\) es la longitud de la estación y \(\alpha, \beta, \gamma \in (0,1)\) son los parámetros de suavizado para el nivel, la tendencia y la estacionalidad respectivamente. El índice estacional \(s_t\) se actualiza usando la desviación de \(y_t\) respecto al nivel de tendencia.

Holt-Winters multiplicativo

Se usa cuando las fluctuaciones estacionales crecen proporcionalmente con el nivel (p. ej., pasajeros aéreos, ventas minoristas que escalan con el volumen).

\[\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}\]

El modelo multiplicativo divide por el índice estacional en lugar de restarlo. Los índices estacionales fluctúan en torno a 1 (valores superiores a 1 indican periodos por encima de la media; inferiores a 1, por debajo). Los índices del modelo aditivo fluctúan en torno a 0.

Dos paneles que comparan las predicciones de Holt-Winters aditivo y multiplicativo sobre la serie de pasajeros aéreos

El modelo aditivo (izquierda) predice oscilaciones estacionales de tamaño constante. El modelo multiplicativo (derecha) predice oscilaciones que crecen con el nivel, lo que se ajusta mejor al patrón histórico de los pasajeros aéreos.

Inicialización

Una inicialización adecuada es esencial: unos valores iniciales pobres pueden tardar muchos periodos en corregirse. El enfoque estándar:

Nivel \(\ell_m\): media de la primera estación completa: \[\ell_m = \frac{1}{m}\sum_{i=1}^m y_i\]

Tendencia \(b_m\): media de los cambios de la primera a la segunda estación: \[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 estacionales \(s_1, \ldots, s_m\) (aditivo): desviación de cada periodo respecto a la media de la primera estación: \[s_i = y_i - \ell_m, \quad i = 1, \ldots, m\]

Para el multiplicativo: \(s_i = y_i / \ell_m\).

En la práctica, HoltWinters() y ets() de R estiman los valores iniciales junto con los parámetros de suavizado minimizando la SSE.

Holt-Winters con tendencia amortiguada

Holt-Winters con tendencia lineal puede sobreestimar a horizontes largos: la tendencia se extrapola indefinidamente. La variante de tendencia amortiguada introduce un parámetro de amortiguamiento \(\phi \in (0,1)\) que aplana la tendencia con el tiempo:

\[\hat{y}_{t+h} = \ell_t + (\phi + \phi^2 + \cdots + \phi^h)b_t + s_{t+h-m}\]

Cuando \(h \to \infty\), la suma entre paréntesis converge a \(\phi/(1-\phi)\), por lo que la predicción se aproxima asintóticamente a un nivel constante. La tendencia amortiguada suele dar mejor rendimiento a horizontes medianos y largos que el Holt-Winters sin amortiguar.

Comparación de predicciones de Holt-Winters con y sin amortiguamiento que muestra cómo el amortiguamiento evita la extrapolación excesiva de la tendencia

La predicción sin amortiguar (rojo) extrapola la tendencia linealmente sin límite. La predicción amortiguada (verde) se aplana hacia un nivel constante, lo que suele ser más realista en horizontes más allá de 1 o 2 estaciones.

Elección entre aditivo y multiplicativo

Criterio Aditivo Multiplicativo
Amplitud estacional Constante en el tiempo Crece con el nivel
Datos transformados en logaritmo Cualquiera funciona Aditivo sobre log ≡ multiplicativo sobre original
Posibles valores negativos No (requiere \(y_t > 0\))
Notación ETS ETS(A,A,A) ETS(M,A,M) o ETS(A,A,M)

Una regla práctica: representa la serie y comprueba si las oscilaciones estacionales se ensanchan al crecer la serie. Si es así, usa el multiplicativo (o transforma con logaritmo y usa el aditivo).

⚠️ El modelo multiplicativo requiere datos estrictamente positivos

Holt-Winters multiplicativo divide entre \(s_{t-m}\) y \(\ell_{t-1} + b_{t-1}\), lo que exige que todos los valores sean estrictamente positivos. Si la serie contiene ceros o valores negativos (conteos con ceros, temperatura en Celsius), usa el modelo aditivo o transforma los datos.

Además, el modelo multiplicativo puede volverse inestable si el nivel se acerca a cero durante la recursión, produciendo índices estacionales explosivos.

Ajustar Holt-Winters en R

# R base
fit_add  <- HoltWinters(y, seasonal = "additive")
fit_mult <- HoltWinters(y, seasonal = "multiplicative")

# Paquete forecast (recomendado: optimización automática de parámetros)
library(forecast)
fit <- hw(y, h = 24, seasonal = "multiplicative", damped = TRUE)
forecast(fit, h = 24)

# Marco ETS (selección automática del modelo)
fit_ets <- ets(y)          # selecciona el mejor modelo ETS por AIC
summary(fit_ets)           # muestra el modelo seleccionado, p. ej. ETS(M,Ad,M)
forecast(fit_ets, h = 24)

💡 Dejar que el AIC elija entre aditivo y multiplicativo

En lugar de elegir manualmente, ajusta ambos modelos y compara el AIC:

fit_a <- ets(y, model = "AAA")   # aditivo
fit_m <- ets(y, model = "MAM")   # multiplicativo (error mult. + estac.)
AIC(fit_a); AIC(fit_m)

O usa ets(y) que busca automáticamente. El modelo seleccionado se muestra como ETS(error, tendencia, estacionalidad), p. ej. ETS(M,Ad,M) significa error multiplicativo, tendencia aditiva amortiguada, estacionalidad multiplicativa.