Punto1: Librerías

#Carga de librerías
library(forecast)
library(tseries)
library(ggplot2)
library(knitr)

Punto 2: Carga, renombre y caracterización

# Carga del archivo wine.dat
wine <- read.table("C:/Users/AxRen/Downloads/wine.dat", header = TRUE)
class(wine)
## [1] "data.frame"
colnames(wine)
## [1] "winet"  "fortw"  "dryw"   "sweetw" "red"    "rose"   "spark"
wine_dry <- wine$dryw
wine_ts <- ts(wine_dry,
              start = c(1980, 1),
              frequency = 12)
dryw <- wine_ts
class(dryw)
## [1] "ts"

Verificar si es serie temporal

class(dryw)
## [1] "ts"
# Resultado: "ts" → ya es serie temporal tras la conversión

Verificar calidad de los datos

any(is.na(dryw))
## [1] FALSE
sum(is.na(dryw))
## [1] 0
which(is.na(dryw))
## integer(0)

Interpretación: La serie no presenta valores faltantes. Se observa una tendencia creciente moderada en los primeros años, con un patrón estacional anual claro (picos en ciertos meses del año). No se requiere limpieza adicional.

Características y resumen

tabla_caracteristicas <- data.frame(
  Caracteristica = c("Inicio", "Fin", "Frecuencia", 
                     "Mínimo", "Q1", "Mediana", 
                     "Media", "Q3", "Máximo"),
  Valor = c(
    paste(start(dryw), collapse = "-"),
    paste(end(dryw),   collapse = "-"),
    frequency(dryw),
    min(dryw),
    quantile(dryw, 0.25),
    median(dryw),
    round(mean(dryw), 2),
    quantile(dryw, 0.75),
    max(dryw)
  )
)

kable(tabla_caracteristicas,
      caption = "Características de la serie de vino seco",
      align   = c("l", "r"))
Características de la serie de vino seco
Caracteristica Valor
Inicio 1980-1
Fin 1995-7
Frecuencia 12
Mínimo 1954
Q1 2748
Mediana 3134
Media 3262.61
Q3 3741
Máximo 5725

Interpretación: La serie abarca desde enero de 1980 con frecuencia mensual (12 obs/año). El resumen estadístico muestra la distribución de las ventas de vino seco a lo largo del periodo analizado.

Visualización

plot(dryw,
     main = "Ventas de vino seco – Australia",
     ylab = "Ventas (miles de litros)", xlab = "Año",
     col = "darkred", lwd = 1.5)


Punto 3: Descomposición

# Asegurar serie temporal correctamente definida
dryw <- ts(wine$dryw, start = c(1980, 1), frequency = 12)

# =========================
# Descomposición ADITIVA
# =========================
dryw_aditiva <- decompose(dryw, type = "additive")
plot(dryw_aditiva)

# =========================
# Descomposición MULTIPLICATIVA
# =========================
dryw_mult <- decompose(dryw, type = "multiplicative")
plot(dryw_mult)

Interpretación: La descomposición de dryw revela: - Tendencia: ligeramente creciente en los primeros años, luego más estable. - Estacionalidad: patrón anual marcado. Las ventas muestran picos en ciertos meses (posiblemente verano austral o festividades) y valles en otros. - Residuos: relativamente pequeños, sin estructura sistemática notable. La amplitud estacional parece crecer con el nivel, lo que sugiere que el modelo multiplicativo puede ser más apropiado que el aditivo.


Punto 4: Correlogramas

acf(dryw, lag.max = 48,
    main = "Correlograma ACF – wine$dryw")

pacf(dryw, lag.max = 48,
     main = "Correlograma PACF – wine$dryw")

Interpretación: - El ACF muestra picos significativos en los rezagos múltiplos de 12 (12, 24, 36, 48), confirmando estacionalidad anual. - El decaimiento lento del ACF en los primeros rezagos puede indicar presencia de tendencia, lo que se alinea con la descomposición. - El PACF muestra un corte más rápido, con picos estacionales en lag 12, consistente con un proceso AR estacional. - Conclusión: la serie presenta tendencia moderada y estacionalidad fuerte, condiciones ideales para Holt-Winters con los tres componentes activos (α, β, γ).


Punto 5: Modelo Holt-Winters Multiplicativo

# Modelo
dryw.hw.mult <- HoltWinters(dryw, seasonal = "mult")

# 1. Parámetros de suavización
tabla_parametros <- data.frame(
  Parametro = c("Alpha (nivel)", "Beta (tendencia)", "Gamma (estacional)"),
  Valor = c(
    dryw.hw.mult$alpha,
    dryw.hw.mult$beta,
    dryw.hw.mult$gamma
  )
)

# 2. Coeficientes (nivel, tendencia y estacionales)
coeficientes <- as.data.frame(dryw.hw.mult$coef)
tabla_coef <- data.frame(
  Coeficiente = rownames(coeficientes),
  Valor = coeficientes[,1]
)

# 3. Métrica del modelo
tabla_metricas <- data.frame(
  Metrica = "SSE (Error cuadrático)",
  Valor = dryw.hw.mult$SSE
)

# Mostrar tablas
kable(tabla_parametros, caption = "Parámetros de suavización")
Parámetros de suavización
Parametro Valor
alpha Alpha (nivel) 0.1241558
beta Beta (tendencia) 0.0536098
gamma Gamma (estacional) 0.3564653
kable(tabla_coef, caption = "Coeficientes del modelo")
Coeficientes del modelo
Coeficiente Valor
a 4398.8726404
b 28.2042587
s1 1.0123630
s2 0.9694326
s3 1.0370257
s4 1.2187255
s5 1.4228719
s6 0.6159277
s7 0.9207737
s8 0.9666764
s9 0.9290839
s10 0.8759792
s11 0.8969546
s12 0.9980559
kable(tabla_metricas, caption = "Métrica del modelo")
Métrica del modelo
Metrica Valor
SSE (Error cuadrático) 21947638

Interpretación: - Alpha indica qué tan rápido reacciona el nivel a nuevas observaciones. - Beta captura el ajuste de la tendencia; si es bajo, la tendencia cambia lentamente. - Gamma refleja la velocidad de actualización del patrón estacional. - Los coeficientes s1–s12 indican los factores multiplicativos por mes: meses con valores > 1 tienen ventas por encima del nivel promedio.


Punto 6: Gráfica del ajuste

plot(dryw.hw.mult,
     main = "Ajuste Holt-Winters Multiplicativo – wine$dryw",
     ylab = "Ventas (miles de litros)",
     col = c("black", "red"))
legend("topleft", legend = c("Observado", "Ajustado HW Mult"),
       col = c("black", "red"), lty = 1)


Punto 7: Pronósticos (5 años = 60 meses)

# Pronóstico
dryw.pred.mult <- predict(
  dryw.hw.mult,
  n.ahead = 5 * 12,
  prediction.interval = TRUE
)

# Convertir a data frame
tabla_pred <- data.frame(
  Tiempo = time(dryw.pred.mult),
  Pronostico = dryw.pred.mult[,1],
  Limite_Inferior = dryw.pred.mult[,2],
  Limite_Superior = dryw.pred.mult[,3]
)
# Mostrar tabla
kable(tabla_pred, caption = "Pronóstico wine$dryw(Modelo multiplicativo)")
Pronóstico wine$dryw(Modelo multiplicativo)
Tiempo Pronostico Limite_Inferior Limite_Superior
1995.583 4481.809 4785.542 4178.076
1995.667 4319.095 4635.095 4003.094
1995.750 4649.490 4983.178 4315.801
1995.833 5498.511 5862.872 5134.151
1995.917 6459.688 6864.939 6054.436
1996.000 2813.618 3143.144 2484.092
1996.083 4232.155 4620.316 3843.993
1996.167 4470.402 4884.894 4055.909
1996.250 4322.759 4747.135 3898.383
1996.333 4100.384 4530.080 3670.689
1996.417 4223.867 4677.948 3769.786
1996.500 4728.114 5132.323 4323.906
1996.583 4824.444 5443.383 4205.506
1996.667 4647.200 5270.769 4023.631
1996.750 5000.472 5665.348 4335.596
1996.833 5910.990 6666.340 5155.640
1996.917 6941.260 7809.178 6073.342
1997.000 3022.079 3582.148 2462.011
1997.083 4543.791 5242.895 3844.688
1997.167 4797.574 5538.879 4056.269
1997.250 4637.208 5380.712 3893.705
1997.333 4396.860 5133.218 3660.502
1997.417 4527.442 5296.287 3758.596
1997.500 5065.907 5790.279 4341.535
1997.583 5167.080 6120.195 4213.964
1997.667 4975.306 5924.534 4026.077
1997.750 5351.455 6367.212 4335.698
1997.833 6323.469 7492.476 5154.463
1997.917 7422.833 8777.502 6068.164
1998.000 3230.541 4026.298 2434.784
1998.083 4855.428 5884.190 3826.666
1998.167 5124.747 6213.833 4035.661
1998.250 4951.658 6034.297 3869.018
1998.333 4693.336 5754.819 3631.854
1998.417 4831.017 5934.691 3727.343
1998.500 5403.700 6481.832 4325.569
1998.583 5509.715 6832.185 4187.245
1998.667 5303.411 6611.230 3995.593
1998.750 5702.437 7104.247 4300.627
1998.833 6735.948 8360.046 5111.851
1998.917 7904.405 9793.601 6015.209
1999.000 3439.002 4486.425 2391.580
1999.083 5167.065 6554.939 3779.191
1999.167 5451.920 6919.931 3983.909
1999.250 5266.107 6717.294 3814.920
1999.333 4989.812 6403.524 3576.101
1999.417 5134.592 6601.021 3668.164
1999.500 5741.493 7209.390 4273.597
1999.583 5852.350 7580.129 4124.572
1999.667 5631.517 7331.766 3931.267
1999.750 6053.420 7877.317 4229.522
1999.833 7148.427 9269.928 5026.927
1999.917 8385.978 10858.705 5913.250
2000.000 3647.464 4964.704 2330.224
2000.083 5478.702 7256.054 3701.350
2000.167 5779.092 7657.895 3900.290
2000.250 5580.557 7430.482 3730.631
2000.333 5286.289 7080.196 3492.381
2000.417 5438.168 7295.954 3580.382
2000.500 6079.287 7971.414 4187.159

Punto 8: Gráfica del pronóstico

ts.plot(dryw, dryw.pred.mult,
        lty = c(1, 1, 2, 2),
        col = c("black", "red", "pink", "pink"),
        main = "Pronóstico Holt-Winters Multiplicativo – wine$dryw (5 años)",
        ylab = "Ventas", xlab = "Año")
legend("topleft",
       legend = c("Observado", "Pronóstico", "IC 95%"),
       col = c("black", "red", "pink"),
       lty = c(1, 1, 2))

Interpretación: El pronóstico extiende el patrón estacional observado. Si la tendencia es ligeramente creciente, los pronósticos reflejarán esa dirección. Los intervalos de confianza se amplían con el horizonte, lo que es normal y esperado.


Punto 9: Modelo Holt-Winters Aditivo – Comparación

# Modelo
dryw.hw.add <- HoltWinters(dryw, seasonal = "mult")

# 1. Parámetros de suavización
tabla_parametros <- data.frame(
  Parametro = c("Alpha (nivel)", "Beta (tendencia)", "Gamma (estacional)"),
  Valor = c(
    dryw.hw.add$alpha,
    dryw.hw.add$beta,
    dryw.hw.add$gamma
  )
)

# 2. Coeficientes (nivel, tendencia y estacionales)
coeficientes <- as.data.frame(dryw.hw.add$coef)
tabla_coef <- data.frame(
  Coeficiente = rownames(coeficientes),
  Valor = coeficientes[,1]
)

# 3. Métrica del modelo
tabla_metricas <- data.frame(
  Metrica = "SSE (Error cuadrático)",
  Valor = dryw.hw.add$SSE
)

# Mostrar tablas
kable(tabla_parametros, caption = "Parámetros de suavización")
Parámetros de suavización
Parametro Valor
alpha Alpha (nivel) 0.1241558
beta Beta (tendencia) 0.0536098
gamma Gamma (estacional) 0.3564653
kable(tabla_coef, caption = "Coeficientes del modelo")
Coeficientes del modelo
Coeficiente Valor
a 4398.8726404
b 28.2042587
s1 1.0123630
s2 0.9694326
s3 1.0370257
s4 1.2187255
s5 1.4228719
s6 0.6159277
s7 0.9207737
s8 0.9666764
s9 0.9290839
s10 0.8759792
s11 0.8969546
s12 0.9980559
kable(tabla_metricas, caption = "Métrica del modelo")
Métrica del modelo
Metrica Valor
SSE (Error cuadrático) 21947638

Gráfica del ajuste

plot(dryw.hw.add,
     main = "Ajuste Holt-Winters Aditivo – wine$dryw",
     ylab = "Ventas", col = c("black", "darkgreen"))
legend("topleft", legend = c("Observado", "Ajustado HW Aditivo"),
       col = c("black", "darkgreen"), lty = 1)

Pronósticos (5 años = 60 meses)

dryw.pred.add <- predict(dryw.hw.add, n.ahead = 5 * 12,
                          prediction.interval = TRUE)

# Pronóstico
dryw.pred.add <- predict(
  dryw.hw.add,
  n.ahead = 5 * 12,
  prediction.interval = TRUE
)

# Convertir a data frame
tabla_predi <- data.frame(
  Tiempo = time(dryw.pred.add),
  Pronostico = dryw.pred.add[,1],
  Limite_Inferior = dryw.pred.add[,2],
  Limite_Superior = dryw.pred.add[,3]
)
# Mostrar tabla
kable(tabla_predi, caption = "Pronóstico wine$dryw(Modelo aditivo)")
Pronóstico wine$dryw(Modelo aditivo)
Tiempo Pronostico Limite_Inferior Limite_Superior
1995.583 4481.809 4785.542 4178.076
1995.667 4319.095 4635.095 4003.094
1995.750 4649.490 4983.178 4315.801
1995.833 5498.511 5862.872 5134.151
1995.917 6459.688 6864.939 6054.436
1996.000 2813.618 3143.144 2484.092
1996.083 4232.155 4620.316 3843.993
1996.167 4470.402 4884.894 4055.909
1996.250 4322.759 4747.135 3898.383
1996.333 4100.384 4530.080 3670.689
1996.417 4223.867 4677.948 3769.786
1996.500 4728.114 5132.323 4323.906
1996.583 4824.444 5443.383 4205.506
1996.667 4647.200 5270.769 4023.631
1996.750 5000.472 5665.348 4335.596
1996.833 5910.990 6666.340 5155.640
1996.917 6941.260 7809.178 6073.342
1997.000 3022.079 3582.148 2462.011
1997.083 4543.791 5242.895 3844.688
1997.167 4797.574 5538.879 4056.269
1997.250 4637.208 5380.712 3893.705
1997.333 4396.860 5133.218 3660.502
1997.417 4527.442 5296.287 3758.596
1997.500 5065.907 5790.279 4341.535
1997.583 5167.080 6120.195 4213.964
1997.667 4975.306 5924.534 4026.077
1997.750 5351.455 6367.212 4335.698
1997.833 6323.469 7492.476 5154.463
1997.917 7422.833 8777.502 6068.164
1998.000 3230.541 4026.298 2434.784
1998.083 4855.428 5884.190 3826.666
1998.167 5124.747 6213.833 4035.661
1998.250 4951.658 6034.297 3869.018
1998.333 4693.336 5754.819 3631.854
1998.417 4831.017 5934.691 3727.343
1998.500 5403.700 6481.832 4325.569
1998.583 5509.715 6832.185 4187.245
1998.667 5303.411 6611.230 3995.593
1998.750 5702.437 7104.247 4300.627
1998.833 6735.948 8360.046 5111.851
1998.917 7904.405 9793.601 6015.209
1999.000 3439.002 4486.425 2391.580
1999.083 5167.065 6554.939 3779.191
1999.167 5451.920 6919.931 3983.909
1999.250 5266.107 6717.294 3814.920
1999.333 4989.812 6403.524 3576.101
1999.417 5134.592 6601.021 3668.164
1999.500 5741.493 7209.390 4273.597
1999.583 5852.350 7580.129 4124.572
1999.667 5631.517 7331.766 3931.267
1999.750 6053.420 7877.317 4229.522
1999.833 7148.427 9269.928 5026.927
1999.917 8385.978 10858.705 5913.250
2000.000 3647.464 4964.704 2330.224
2000.083 5478.702 7256.054 3701.350
2000.167 5779.092 7657.895 3900.290
2000.250 5580.557 7430.482 3730.631
2000.333 5286.289 7080.196 3492.381
2000.417 5438.168 7295.954 3580.382
2000.500 6079.287 7971.414 4187.159

Gráfica del pronóstico

ts.plot(dryw, dryw.pred.add,
        lty = c(1, 1, 2, 2),
        col = c("black", "darkgreen", "lightgreen", "lightgreen"),
        main = "Pronóstico Holt-Winters Aditivo – wine$dryw (5 años)",
        ylab = "Ventas", xlab = "Año")
legend("topleft",
       legend = c("Observado", "Pronóstico", "IC 95%"),
       col = c("black", "darkgreen", "lightgreen"),
       lty = c(1, 1, 2))

Comparación Multiplicativo vs Aditivo

cat("SSE Multiplicativo:", dryw.hw.mult$SSE, "\n")
## SSE Multiplicativo: 21947638
cat("SSE Aditivo:       ", dryw.hw.add$SSE,  "\n")
## SSE Aditivo:        21947638
cat("Diferencia (Mult - Add):", dryw.hw.mult$SSE - dryw.hw.add$SSE, "\n")
## Diferencia (Mult - Add): 0

Interpretación comparativa: Los resultados obtenidos muestran que el error cuadrático (SSE) es exactamente igual para ambos modelos: SSE modelo multiplicativo: 21,947,638 SSE modelo aditivo: 21,947,638 Diferencia: 0. Esto indica que ambos modelos presentan el mismo nivel de ajuste sobre la serie temporal, sin que uno supere al otro en términos de precisión.Desde el punto de vista analítico, esta igualdad sugiere que la estructura de la serie no presenta cambios significativos en la amplitud de la estacionalidad. Es decir, la variación estacional se mantiene relativamente constante a lo largo del tiempo, lo que hace que tanto el enfoque aditivo como el multiplicativo capturen el patrón de manera equivalente.En consecuencia, aunque teóricamente el modelo multiplicativo es más adecuado cuando la estacionalidad depende del nivel de la serie, en este caso particular no existe evidencia empírica que justifique preferir uno sobre el otro.


Punto 10: ¿Es wine$dryw adecuada para el Modelo de Bass?

Comentario: La columna wine$dryw (ventas mensuales de vino seco) presenta un perfil de serie cíclica y estacional más que un proceso de difusión de innovación. El Modelo de Bass está diseñado para capturar la adopción acumulada de un producto nuevo en una población, con una curva en forma de campana que eventualmente se satura. Las ventas de vino seco son un producto maduro y establecido, cuya dinámica responde a estacionalidad, tendencia económica y hábitos de consumo, no a un proceso de innovación-imitación. Por lo tanto, no sería adecuado aplicar el Modelo de Bass a esta serie, pues no cumple los supuestos fundamentales del modelo (mercado potencial fijo, proceso de difusión en una sola ola de adopción). Un análisis de Bass requeriría datos de adopción acumulada desde el lanzamiento del producto, idealmente en una etapa de crecimiento inicial.