if (!require(forecast)) install.packages("forecast")
## Loading required package: forecast
if (!require(readxl)) install.packages("readxl")
## Loading required package: readxl
if (!require(dplyr)) install.packages("dplyr")
## Loading required package: dplyr
## 
## Attaching package: 'dplyr'
## The following objects are masked from 'package:stats':
## 
##     filter, lag
## The following objects are masked from 'package:base':
## 
##     intersect, setdiff, setequal, union
if (!require(lubridate)) install.packages("lubridate")
## Loading required package: lubridate
## 
## Attaching package: 'lubridate'
## The following objects are masked from 'package:base':
## 
##     date, intersect, setdiff, union
if (!require(stringr)) install.packages("stringr")
## Loading required package: stringr
library(forecast)
library(readxl)
library(dplyr)
library(lubridate)
library(stringr)


``` r
# 1 Tendencia Secular
ventas <- c(25520.51, 23740.11, 26253.58, 25868.43, 27072.87, 27150.50,
            27067.10, 28145.25, 27546.29, 28400.37, 27441.98, 27852.47,
            28463.69, 26996.11, 29768.20, 29292.51, 29950.68, 30099.17,
            30851.26, 32271.76, 31940.74, 32995.93, 32197.12, 31984.82,
            32496.44, 31287.28, 33376.02, 32949.77, 34004.11, 33757.89,
            32927.30, 34324.12, 35151.28, 36133.07, 34799.91, 34846.17)

serie_de_tiempo <- ts(
  ventas,
  start = c(2017,1),
  frequency = 12
)

modelo <- auto.arima(serie_de_tiempo)
summary(modelo)
## Series: serie_de_tiempo 
## ARIMA(1,0,0)(1,1,0)[12] with drift 
## 
## Coefficients:
##          ar1     sar1     drift
##       0.6383  -0.5517  288.8980
## s.e.  0.1551   0.2047   14.5025
## 
## sigma^2 = 202700:  log likelihood = -181.5
## AIC=371   AICc=373.11   BIC=375.72
## 
## Training set error measures:
##                    ME    RMSE      MAE        MPE      MAPE       MASE
## Training set 25.22163 343.863 227.1699 0.08059942 0.7069541 0.06491041
##                   ACF1
## Training set 0.2081043
pronostico <- forecast(modelo, level = 95, h = 5)
plot(pronostico, xaxt="n")

axis(1,
     at = seq(2017, 2021, by = 1),
     labels = seq(2017, 2021, by = 1))

1.- Utilizando modelos ARIMA (Box-Jenkins, ARMA, SARIMA) y los datos históricos de las ventas de leche saborizada ¿Cuál es el modelo que mejor se adapta a la serie? El modelo que mejor se adapta a la serie de tiempo es el ARIMA.

2.- ¿Qué modelo de regresión ofrece mejor exactitud predictiva?

# Regresión lineal simple
tiempo <- 1:length(serie_de_tiempo)
modelo_lineal <- lm(ventas ~ tiempo)
accuracy_lineal <- accuracy(ts(modelo_lineal$fitted.values, 
                    start=c(2017,1), frequency=12), serie_de_tiempo)

# Suavizamiento exponencial (ETS)
modelo_ets <- ets(serie_de_tiempo)

# Comparación de métricas
cat("ARIMA:\n"); print(accuracy(modelo))
## ARIMA:
##                    ME    RMSE      MAE        MPE      MAPE       MASE
## Training set 25.22163 343.863 227.1699 0.08059942 0.7069541 0.06491041
##                   ACF1
## Training set 0.2081043
cat("ETS:\n"); print(accuracy(modelo_ets))
## ETS:
##                    ME     RMSE      MAE         MPE    MAPE    MASE       ACF1
## Training set 19.58892 786.4878 605.9809 0.003068188 2.03201 0.17315 0.06158587
cat("Regresión Lineal:\n"); print(accuracy_lineal)
## Regresión Lineal:
##          ME     RMSE      MAE         MPE     MAPE       ACF1 Theil's U
## Test set  0 785.1913 599.6134 -0.07414447 2.011298 0.06259472  0.681677

Con base en los resultados, el ARIMA es claramente el mejor modelo.

3.-Según su mejor modelo ¿Cuál es la proyección de ventas en valor monetario para el siguiente a total de Hershey´s?

pronostico <- forecast(modelo, h = 12)
sum(pronostico$mean)
## [1] 448538.1
print(pronostico$mean)
##           Jan      Feb      Mar      Apr      May      Jun      Jul      Aug
## 2020 35498.90 34202.17 36703.01 36271.90 37121.98 37102.65 37151.04 38564.65
##           Sep      Oct      Nov      Dec
## 2020 38755.23 39779.03 38741.63 38645.86

Las ventas proyectadas para el 2020 ascienden a $44,8538.10.

4.- Considerando algunos imponderables establezca con los modelos construidos tres escenarios futuros ( proyecciones) A (escenario esperado) , B (escenario optimista) y C (escenario pesimista).

# Escenario A - Esperado (95% intervalo de confianza del modelo)
pronostico_A <- forecast(modelo, h = 12, level = 95)

# Escenario B - Optimista (límite superior del intervalo)
escenario_B <- pronostico_A$upper[,1]

# Escenario C - Pesimista (límite inferior del intervalo)
escenario_C <- pronostico_A$lower[,1]

# Tabla de los tres escenarios
tabla_escenarios <- data.frame(
  Mes = 1:12,
  Esperado = round(pronostico_A$mean, 2),
  Optimista = round(escenario_B, 2),
  Pesimista = round(escenario_C, 2)
)
print(tabla_escenarios)
##    Mes Esperado Optimista Pesimista
## 1    1 35498.90  36381.32  34616.48
## 2    2 34202.17  35249.05  33155.29
## 3    3 36703.01  37809.92  35596.10
## 4    4 36271.90  37402.36  35141.44
## 5    5 37121.98  38261.90  35982.07
## 6    6 37102.65  38246.40  35958.91
## 7    7 37151.04  38296.35  36005.74
## 8    8 38564.65  39710.59  37418.71
## 9    9 38755.23  39901.42  37609.03
## 10  10 39779.03  40925.33  38632.73
## 11  11 38741.63  39887.97  37595.29
## 12  12 38645.86  39792.22  37499.50
# Totales anuales
cat("Total Escenario A (Esperado): ", round(sum(pronostico_A$mean), 2), "\n")
## Total Escenario A (Esperado):  448538.1
cat("Total Escenario B (Optimista):", round(sum(escenario_B), 2), "\n")
## Total Escenario B (Optimista): 461864.8
cat("Total Escenario C (Pesimista):", round(sum(escenario_C), 2), "\n")
## Total Escenario C (Pesimista): 435211.3
# Grafica con los tres escenarios
plot(pronostico_A, main = "Tres Escenarios de Proyección - Hershey's",
     xlab = "Tiempo", ylab = "Ventas")
lines(ts(escenario_B, start = c(2020, 2), frequency = 12), col = "green", lwd = 2)
lines(ts(escenario_C, start = c(2020, 2), frequency = 12), col = "red", lwd = 2)
legend("topleft", legend = c("Esperado", "Optimista", "Pesimista"),
       col = c("blue", "green", "red"), lwd = 2)

5.- Con este análisis descriptivo, predictivo ¿Qué recomendaciones y medidas prescriptivas le puede dar a la compañía Hershey´s?

Producción: Prepararse con inventario antes de Q4, Halloween y Navidad son sus meses clave según la gráfica. Riesgo: El escenario pesimista muestra caídas importantes, conviene asegurar precios de materias primas con anticipación. Crecimiento: El escenario optimista llega a ~$40,000 mensuales, hay margen para invertir más en marketing y distribución. Seguimiento: Actualizar el modelo cada 3 meses porque entre más nos alejamos, más incertidumbre hay en el pronóstico.