Este documento resuelve la batería de ejercicios 19.27 a 19.39 del
capítulo 19 (Newbold, Carlson y Thorne), que cubren suavización
exponencial simple, el método de Holt (nivel + tendencia) y Holt-Winters
estacional multiplicativo. En lugar de programar manualmente las
recursiones \(S_t = \alpha X_t +
(1-\alpha)S_{t-1}\), se usan las funciones ses(),
holt() y hw() del paquete
forecast, fijando explícitamente las constantes de
suavización que pide cada enunciado (alpha,
beta, gamma) y initial = "simple"
para replicar la inicialización clásica del libro (\(S_1 = X_1\), \(T_1 = X_2 - X_1\)). Esto simplifica
notablemente el código sin sacrificar el criterio pedido por cada
ejercicio.
Modelo: suavización exponencial simple, \(\alpha = 0.4\). Al no incorporar tendencia, el pronóstico para cualquier horizonte \(h\) es simplemente el último valor suavizado \(S_n\).
ratio <- c(1.41, 1.45, 1.57, 1.48, 1.46, 1.44, 1.43, 1.45, 1.43, 1.52, 1.37, 1.33)
fit_27 <- ses(ratio, alpha = 0.4, initial = "simple", h = 4)
kable(data.frame(Año = 1:12, Observado = ratio, Suavizado = round(fitted(fit_27), 4)))| Año | Observado | Suavizado |
|---|---|---|
| 1 | 1.41 | 1.4100 |
| 2 | 1.45 | 1.4100 |
| 3 | 1.57 | 1.4260 |
| 4 | 1.48 | 1.4836 |
| 5 | 1.46 | 1.4822 |
| 6 | 1.44 | 1.4733 |
| 7 | 1.43 | 1.4600 |
| 8 | 1.45 | 1.4480 |
| 9 | 1.43 | 1.4488 |
| 10 | 1.52 | 1.4413 |
| 11 | 1.37 | 1.4728 |
| 12 | 1.33 | 1.4317 |
| Año | Pronóstico |
|---|---|
| 13 | 1.391 |
| 14 | 1.391 |
| 15 | 1.391 |
| 16 | 1.391 |
autoplot(fit_27) + labs(title = "Inventory/Sales Ratio - SES (alpha = 0.4)", x = "Año", y = "Cociente existencias/ventas")Conclusión. El nivel suavizado se estabiliza en 1.391, valor que se repite sin cambios para los cuatro años proyectados porque un modelo de suavización simple no tiene componente de tendencia: cualquiera que sea el horizonte, el pronóstico es plano. Los últimos datos observados (1.52, 1.37, 1.33) muestran cierta caída que el modelo apenas alcanza a reflejar por el rezago propio de \(\alpha=0.4\); si esa caída resultara sostenida y no un ruido pasajero, convendría migrar a un modelo con tendencia (Holt) en vez de uno de nivel constante.
Modelo: SES, \(\alpha = 0.3\), horizonte de 5 años.
oro <- c(135, 166, 227, 533, 591, 399, 450, 385, 308, 329, 405, 486, 410, 369)
fit_28 <- ses(oro, alpha = 0.3, initial = "simple", h = 5)
kable(data.frame(Año = 1:14, Observado = oro, Suavizado = round(fitted(fit_28), 2)))| Año | Observado | Suavizado |
|---|---|---|
| 1 | 135 | 135.00 |
| 2 | 166 | 135.00 |
| 3 | 227 | 144.30 |
| 4 | 533 | 169.11 |
| 5 | 591 | 278.28 |
| 6 | 399 | 372.09 |
| 7 | 450 | 380.17 |
| 8 | 385 | 401.12 |
| 9 | 308 | 396.28 |
| 10 | 329 | 369.80 |
| 11 | 405 | 357.56 |
| 12 | 486 | 371.79 |
| 13 | 410 | 406.05 |
| 14 | 369 | 407.24 |
| Año | Pronóstico |
|---|---|
| 15 | 395.77 |
| 16 | 395.77 |
| 17 | 395.77 |
| 18 | 395.77 |
| 19 | 395.77 |
Conclusión. Se trata de la serie más volátil del taller (rango entre 135 y 591), así que con \(\alpha=0.3\) el suavizado corre por detrás de los picos y valles reales. El nivel final es de 395.8 dólares, cifra que se toma como pronóstico constante para los cinco años siguientes. Como no hay evidencia de una tendencia sostenida —el precio parece oscilar alrededor de una media relativamente estable tras el pico inicial—, una proyección plana es razonable, aunque claramente no anticipará un nuevo repunte o desplome abrupto como los ya vistos en el histórico.
Modelo: SES, \(\alpha = 0.5\), horizonte de 3 años.
starts <- c(8.5, 6.9, 7.1, 7.8, 8.5, 8.0, 7.6, 5.9, 6.5, 7.5, 7.2, 7.0,
9.9, 11.3, 9.7, 6.3, 5.4, 7.1, 9.1, 9.1, 7.8, 5.7, 4.7, 4.6)
fit_29 <- ses(starts, alpha = 0.5, initial = "simple", h = 3)
kable(data.frame(Año = 1:24, Observado = starts, Suavizado = round(fitted(fit_29), 3)))| Año | Observado | Suavizado |
|---|---|---|
| 1 | 8.5 | 8.500 |
| 2 | 6.9 | 8.500 |
| 3 | 7.1 | 7.700 |
| 4 | 7.8 | 7.400 |
| 5 | 8.5 | 7.600 |
| 6 | 8.0 | 8.050 |
| 7 | 7.6 | 8.025 |
| 8 | 5.9 | 7.812 |
| 9 | 6.5 | 6.856 |
| 10 | 7.5 | 6.678 |
| 11 | 7.2 | 7.089 |
| 12 | 7.0 | 7.145 |
| 13 | 9.9 | 7.072 |
| 14 | 11.3 | 8.486 |
| 15 | 9.7 | 9.893 |
| 16 | 6.3 | 9.797 |
| 17 | 5.4 | 8.048 |
| 18 | 7.1 | 6.724 |
| 19 | 9.1 | 6.912 |
| 20 | 9.1 | 8.006 |
| 21 | 7.8 | 8.553 |
| 22 | 5.7 | 8.177 |
| 23 | 4.7 | 6.938 |
| 24 | 4.6 | 5.819 |
| Año | Pronóstico |
|---|---|
| 25 | 5.21 |
| 26 | 5.21 |
| 27 | 5.21 |
autoplot(fit_29) + labs(title = "Housing Starts - SES (alpha = 0.5)", x = "Año", y = "Viviendas iniciadas por mil habitantes")Conclusión. Con \(\alpha = 0.5\) el modelo reacciona con fuerza a los datos recientes, y como los últimos años de la serie caen de forma marcada (9.1 → 4.6), el nivel final queda en 5.21, bastante por debajo del promedio histórico (~7.4). Ese es el pronóstico constante para los tres años siguientes. Aunque el modelo no proyecta explícitamente una tendencia bajista, el alto valor de \(\alpha\) hace que el nivel ya absorba buena parte de esa caída reciente, por lo que la predicción resulta razonablemente conservadora frente a una posible estabilización del mercado.
Modelo: Holt (nivel + tendencia), \(\alpha = 0.3\), \(\beta = 0.5\), horizonte de 5 años.
prod <- c(79, 74, 78, 80, 83, 88, 85, 87, 79, 84, 91, 10, 100, 106, 112)
fit_34 <- holt(prod, alpha = 0.3, beta = 0.5, initial = "simple", h = 5)
kable(data.frame(Año = 1:15, Observado = prod, Nivel = round(fitted(fit_34), 2)))| Año | Observado | Nivel |
|---|---|---|
| 1 | 79 | 74.00 |
| 2 | 74 | 71.25 |
| 3 | 78 | 68.24 |
| 4 | 80 | 68.79 |
| 5 | 83 | 71.46 |
| 6 | 88 | 75.96 |
| 7 | 85 | 82.42 |
| 8 | 87 | 86.42 |
| 9 | 79 | 89.91 |
| 10 | 84 | 88.32 |
| 11 | 91 | 88.06 |
| 12 | 10 | 90.41 |
| 13 | 100 | 55.70 |
| 14 | 106 | 65.05 |
| 15 | 112 | 79.53 |
| Año | Pronóstico |
|---|---|
| 16 | 96.34 |
| 17 | 103.41 |
| 18 | 110.48 |
| 19 | 117.55 |
| 20 | 124.62 |
Conclusión. El dato del año 12 (10) rompe de manera abrupta la trayectoria ascendente que traía la serie (…, 84, 91, 10, 100, 106, 112); todo indica que se trata de un error de captura y que el valor real rondaría 100. Ese outlier distorsiona momentáneamente la tendencia estimada, pero como el método de Holt vuelve a corregirse con las observaciones siguientes, el efecto se diluye hacia el final de la serie. El nivel y la tendencia finales arrojan pronósticos crecientes para los años 16 a 20 (96.3 … 124.6), coherentes con el fuerte repunte de los últimos tres años observados. Antes de reportar esta cifra de forma definitiva, se recomienda verificar la fuente original del dato atípico, ya que un solo valor mal digitado puede sesgar de forma importante una proyección lineal a 5 años.
Modelo: Holt, \(\alpha = 0.3\), \(\beta = 0.4\), horizonte de 3 meses.
earnings <- c(10.58, 10.67, 10.48, 10.59, 10.67, 10.74, 10.74, 10.80, 10.84, 10.87, 10.81, 10.93,
10.94, 10.96, 11.05, 10.83, 11.05, 11.02, 11.06, 11.11, 11.15, 11.19, 11.22, 11.17)
fit_35 <- holt(earnings, alpha = 0.3, beta = 0.4, initial = "simple", h = 3)
kable(data.frame(Mes = 1:24, Observado = earnings, Nivel = round(fitted(fit_35), 4)))| Mes | Observado | Nivel |
|---|---|---|
| 1 | 10.58 | 10.6700 |
| 2 | 10.67 | 10.7222 |
| 3 | 10.48 | 10.7795 |
| 4 | 10.59 | 10.7266 |
| 5 | 10.67 | 10.7062 |
| 6 | 10.74 | 10.7116 |
| 7 | 10.74 | 10.7398 |
| 8 | 10.80 | 10.7595 |
| 9 | 10.84 | 10.7962 |
| 10 | 10.87 | 10.8391 |
| 11 | 10.81 | 10.8819 |
| 12 | 10.93 | 10.8852 |
| 13 | 10.94 | 10.9289 |
| 14 | 10.96 | 10.9638 |
| 15 | 11.05 | 10.9938 |
| 16 | 10.83 | 11.0485 |
| 17 | 11.05 | 10.9946 |
| 18 | 11.02 | 11.0295 |
| 19 | 11.06 | 11.0438 |
| 20 | 11.11 | 11.0678 |
| 21 | 11.15 | 11.1046 |
| 22 | 11.19 | 11.1478 |
| 23 | 11.22 | 11.1952 |
| 24 | 11.17 | 11.2403 |
| Mes | Pronóstico |
|---|---|
| 25 | 11.2484 |
| 26 | 11.2776 |
| 27 | 11.3068 |
Conclusión. Los ingresos por hora crecen de forma suave y casi monótona a lo largo de los 24 meses, sin cambios bruscos de dirección, por lo que el método de Holt con \(\alpha = 0.3\) y \(\beta = 0.4\) ajusta bien tanto el nivel como la pendiente. El resultado es una tendencia estimada de apenas unos centavos por mes, que proyecta ingresos de 11.248, 11.278 y 11.307 dólares para los meses 25 a 27. Al tratarse de una serie tan estable, el riesgo principal de este pronóstico no es la volatilidad sino la extrapolación lineal indefinida: si la política salarial cambiara (por ejemplo, un aumento negociado), el modelo tardaría varios periodos en “enterarse” del quiebre.
Modelo: Holt, \(\alpha = 0.5\), \(\beta = 0.5\), horizonte de 3 meses.
precio <- c(116.6, 117.1, 117.8, 118.9, 119.5, 120.3, 120.6,
120.8, 121.2, 122.1, 122.6, 123.6, 124.2, 125.0)
fit_36 <- holt(precio, alpha = 0.5, beta = 0.5, initial = "simple", h = 3)
kable(data.frame(Mes = 1:14, Observado = precio, Nivel = round(fitted(fit_36), 3)))| Mes | Observado | Nivel |
|---|---|---|
| 1 | 116.6 | 117.100 |
| 2 | 117.1 | 117.225 |
| 3 | 117.8 | 117.506 |
| 4 | 118.9 | 118.070 |
| 5 | 119.5 | 119.110 |
| 6 | 120.3 | 120.027 |
| 7 | 120.6 | 120.954 |
| 8 | 120.8 | 121.479 |
| 9 | 121.2 | 121.672 |
| 10 | 122.1 | 121.850 |
| 11 | 122.6 | 122.452 |
| 12 | 123.6 | 123.040 |
| 13 | 124.2 | 123.974 |
| 14 | 125.0 | 124.797 |
| Mes | Pronóstico |
|---|---|
| 15 | 125.660 |
| 16 | 126.421 |
| 17 | 127.182 |
Conclusión. El índice de precios de alimentos sube de forma prácticamente lineal durante todo el periodo observado, sin reversiones ni componente estacional visible, así que los valores relativamente altos de \(\alpha\) y \(\beta\) (0.5 y 0.5) son apropiados: el modelo se adapta rápido, pero aquí no hay ruido que “sobre-reaccionar”. La tendencia final se ubica en torno a 0.76 puntos mensuales, lo que da pronósticos de 125.66, 126.42 y 127.18 para los meses 15 a 17 — es decir, un ritmo inflacionario constante que, de mantenerse las condiciones actuales, parece la lectura más plausible de corto plazo.
Modelo: Holt, \(\alpha = 0.6\), \(\beta = 0.6\), horizonte de 2 años.
margen <- c(8.4, 7.4, 7.4, 7.2, 6.3, 7.9, 7.7, 7.1, 8.5, 7.0, 5.7)
fit_37 <- holt(margen, alpha = 0.6, beta = 0.6, initial = "simple", h = 2)
kable(data.frame(Año = 1:11, Observado = margen, Nivel = round(fitted(fit_37), 3)))| Año | Observado | Nivel |
|---|---|---|
| 1 | 8.4 | 7.400 |
| 2 | 7.4 | 7.360 |
| 3 | 7.4 | 6.758 |
| 4 | 7.2 | 6.749 |
| 5 | 6.3 | 6.787 |
| 6 | 7.9 | 6.087 |
| 7 | 7.7 | 7.420 |
| 8 | 7.1 | 7.934 |
| 9 | 8.5 | 7.479 |
| 10 | 7.0 | 8.505 |
| 11 | 5.7 | 7.473 |
| Año | Pronóstico |
|---|---|
| 12 | 5.642 |
| 13 | 4.875 |
Conclusión. A diferencia de los ejercicios anteriores, aquí la tendencia estimada termina siendo negativa: el margen cae de 8.5% en el año 9 a 5.7% en el año 11, y con \(\alpha=\beta=0.6\) el modelo pondera fuertemente ese deterioro reciente. El resultado son pronósticos decrecientes de 5.64% y 4.88% para los años 12 y 13. Conviene tomar esta proyección con cautela porque Holt extrapola la pendiente de forma lineal e indefinida: si la caída obedece a un choque puntual (un gasto extraordinario, por ejemplo) el modelo subestimaría el margen futuro, mientras que si la presión sobre costos o precios se mantiene, el deterioro proyectado sería incluso optimista.
Modelo: Holt-Winters multiplicativo, \(\alpha = 0.6\), \(\beta = 0.5\), \(\gamma = 0.4\), \(L = 4\), horizonte de 8 trimestres.
ventas_38 <- ts(
c(0.786, 0.668, 0.863, 0.807, 0.802, 0.670, 0.885, 0.805,
0.579, 0.423, 0.904, 0.851, 0.430, 0.409, 1.120, 0.958,
0.680, 0.460, 1.190, 0.830, 0.766, 0.440, 1.020, 0.630,
0.690, 0.600, 1.130, 0.680),
frequency = 4
)
fit_38 <- hw(ventas_38, alpha = 0.6, beta = 0.5, gamma = 0.4,
seasonal = "multiplicative", initial = "simple", h = 8)
kable(data.frame(Trimestre = time(ventas_38), Observado = as.numeric(ventas_38),
Nivel = round(as.numeric(fitted(fit_38)), 3)))| Trimestre | Observado | Nivel |
|---|---|---|
| 1.00 | 0.786 | 0.788 |
| 1.25 | 0.668 | 0.670 |
| 1.50 | 0.863 | 0.865 |
| 1.75 | 0.807 | 0.808 |
| 2.00 | 0.802 | 0.785 |
| 2.25 | 0.670 | 0.680 |
| 2.50 | 0.885 | 0.873 |
| 2.75 | 0.805 | 0.828 |
| 3.00 | 0.579 | 0.797 |
| 3.25 | 0.423 | 0.502 |
| 3.50 | 0.904 | 0.489 |
| 3.75 | 0.851 | 0.697 |
| 4.00 | 0.430 | 0.755 |
| 4.25 | 0.409 | 0.458 |
| 4.50 | 1.120 | 0.706 |
| 4.75 | 0.958 | 0.736 |
| 5.00 | 0.680 | 0.644 |
| 5.25 | 0.460 | 0.751 |
| 5.50 | 1.190 | 1.351 |
| 5.75 | 0.830 | 0.794 |
| 6.00 | 0.766 | 0.471 |
| 6.25 | 0.440 | 0.597 |
| 6.50 | 1.020 | 1.373 |
| 6.75 | 0.630 | 0.772 |
| 7.00 | 0.690 | 0.432 |
| 7.25 | 0.600 | 0.350 |
| 7.50 | 1.130 | 1.551 |
| 7.75 | 0.680 | 1.022 |
| Trimestre | Pronóstico |
|---|---|
| 8.00 | 0.768 |
| 8.25 | 0.448 |
| 8.50 | 0.780 |
| 8.75 | 0.522 |
| 9.00 | 0.646 |
| 9.25 | 0.367 |
| 9.50 | 0.620 |
| 9.75 | 0.399 |
autoplot(fit_38) + labs(title = "Quarterly Earnings - Holt-Winters estacional", x = "Trimestre", y = "Beneficio")Conclusión. Los índices estacionales estimados confirman un patrón muy marcado dentro del año: el tercer trimestre es sistemáticamente el más fuerte y el segundo el más débil, un ciclo que se repite con regularidad en los siete años de historia. El nivel de la serie, en cambio, no muestra una tendencia clara de largo plazo —sube y baja según el año—, por lo que las diferencias entre los dos años proyectados (8 y 9) se explican casi enteramente por la componente estacional y no por crecimiento estructural. Como el modelo pondera fuertemente lo reciente (\(\alpha=0.6\), \(\gamma=0.4\)), conviene interpretar el nivel proyectado como una foto del comportamiento de los últimos ciclos más que como una extrapolación robusta a mediano plazo.
Modelo: Holt-Winters multiplicativo, \(\alpha = 0.5\), \(\beta = 0.4\), \(\gamma = 0.3\), \(L = 4\), horizonte de 8 trimestres.
ventas_39 <- ts(
c(271, 199, 240, 255, 341, 246, 245, 275, 351, 283, 353, 292,
401, 282, 306, 291, 370, 242, 281, 274, 356, 245, 304, 279),
frequency = 4
)
fit_39 <- hw(ventas_39, alpha = 0.5, beta = 0.4, gamma = 0.3,
seasonal = "multiplicative", initial = "simple", h = 8)
kable(data.frame(Trimestre = time(ventas_39), Observado = as.numeric(ventas_39),
Nivel = round(as.numeric(fitted(fit_39)), 2)))| Trimestre | Observado | Nivel |
|---|---|---|
| 1.00 | 271 | 280.97 |
| 1.25 | 199 | 208.52 |
| 1.50 | 240 | 250.51 |
| 1.75 | 255 | 263.41 |
| 2.00 | 341 | 273.75 |
| 2.25 | 246 | 235.75 |
| 2.50 | 245 | 306.26 |
| 2.75 | 275 | 297.14 |
| 3.00 | 351 | 324.89 |
| 3.25 | 283 | 236.21 |
| 3.50 | 353 | 304.45 |
| 3.75 | 292 | 390.21 |
| 4.00 | 401 | 414.70 |
| 4.25 | 282 | 294.75 |
| 4.50 | 306 | 320.41 |
| 4.75 | 291 | 304.33 |
| 5.00 | 370 | 374.71 |
| 5.25 | 242 | 260.34 |
| 5.50 | 281 | 268.69 |
| 5.75 | 274 | 262.01 |
| 6.00 | 356 | 340.20 |
| 6.25 | 245 | 241.81 |
| 6.50 | 304 | 277.81 |
| 6.75 | 279 | 288.38 |
| Trimestre | Pronóstico |
|---|---|
| 7.00 | 368.76 |
| 7.25 | 257.27 |
| 7.50 | 304.24 |
| 7.75 | 288.52 |
| 8.00 | 381.35 |
| 8.25 | 266.00 |
| 8.50 | 314.51 |
| 8.75 | 298.21 |
autoplot(fit_39) + labs(title = "Ventas trimestrales - Holt-Winters estacional", x = "Trimestre", y = "Ventas")Conclusión. El patrón estacional es muy nítido: el primer trimestre de cada año concentra sistemáticamente el mayor volumen de ventas (bastante por encima del promedio), mientras que el segundo trimestre es, con diferencia, el más flojo. A nivel de tendencia, la serie muestra un crecimiento fuerte en los primeros años que luego se estabiliza en los últimos ciclos, de modo que el nivel final queda prácticamente plano. Como resultado, los pronósticos para los ocho trimestres siguientes (años 7 y 8) básicamente replican el mismo patrón estacional sobre un nivel base casi constante, sin un crecimiento adicional relevante — lectura consistente con una empresa que, tras un periodo de expansión, entró en una fase de ventas maduras/estabilizadas.