INSTALAR Y CARGAR LIBRERIAS
# install.packages("forecast") # solo la primera vez
library(forecast)
## Registered S3 method overwritten by 'quantmod':
## method from
## as.zoo.data.frame zoo
1. CARGAR DATOS (Ventas Hershey)
ventas_hershey <- 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
)
2. CREAR SERIE DE TIEMPO (MENSUAL)
serie <- ts(ventas_hershey, start=c(2017,1), frequency=12)
# Visualizar serie
plot(serie, main="Ventas Leche Saborizada Hershey", col="blue")

3. ANALISIS EXPLORATORIO
# Descomposición para ver tendencia y estacionalidad
decomp <- decompose(serie)
plot(decomp)

4. MODELO ARIMA (BOX-JENKINS)
modelo_arima <- auto.arima(serie)
modelo_arima
## Series: serie
## 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.5026
##
## sigma^2 = 202700: log likelihood = -181.5
## AIC=371 AICc=373.11 BIC=375.72
summary(modelo_arima)
## Series: serie
## 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.5026
##
## 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
5. VALIDACION DEL MODELO (RESIDUALES)
checkresiduals(modelo_arima)

##
## Ljung-Box test
##
## data: Residuals from ARIMA(1,0,0)(1,1,0)[12] with drift
## Q* = 12.545, df = 5, p-value = 0.02804
##
## Model df: 2. Total lags used: 7
6. PRONOSTICO (SIGUIENTE AÑO = 12 MESES)
pronostico <- forecast(modelo_arima, h=12, level=95)
pronostico
## Point Forecast Lo 95 Hi 95
## Jan 2020 35498.90 34616.48 36381.32
## Feb 2020 34202.17 33155.29 35249.05
## Mar 2020 36703.01 35596.10 37809.92
## Apr 2020 36271.90 35141.44 37402.36
## May 2020 37121.98 35982.07 38261.90
## Jun 2020 37102.65 35958.91 38246.40
## Jul 2020 37151.04 36005.74 38296.35
## Aug 2020 38564.65 37418.71 39710.59
## Sep 2020 38755.23 37609.03 39901.42
## Oct 2020 39779.03 38632.73 40925.33
## Nov 2020 38741.63 37595.29 39887.97
## Dec 2020 38645.86 37499.50 39792.22
plot(pronostico, main="Pronóstico Ventas Hershey")

7. PROYECCIÓN ANUAL VENTAS (Modelo SARIMA)
total_anual <- sum(as.numeric(pronostico$mean))
total_anual
## [1] 448538.1
8. MODELO DE REGRESION (Comparación)
# Crear variable tiempo
t <- 1:length(serie)
modelo_regresion <- lm(serie ~ t)
summary(modelo_regresion)
##
## Call:
## lm(formula = serie ~ t)
##
## Residuals:
## Min 1Q Median 3Q Max
## -2075.79 -326.41 33.74 458.41 1537.04
##
## Coefficients:
## Estimate Std. Error t value Pr(>|t|)
## (Intercept) 24894.67 275.03 90.52 <2e-16 ***
## t 298.37 12.96 23.02 <2e-16 ***
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
##
## Residual standard error: 808 on 34 degrees of freedom
## Multiple R-squared: 0.9397, Adjusted R-squared: 0.9379
## F-statistic: 529.8 on 1 and 34 DF, p-value: < 2.2e-16
9. COMPARAR EXACTITUD (ARIMA vs REGRESION)
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
accuracy(modelo_regresion)
## ME RMSE MAE MPE MAPE MASE
## Training set 0 785.1913 599.6134 -0.07414447 2.011298 0.2123252
10. ESCENARIOS FUTUROS
# Escenario esperado
escenario_A <- pronostico$mean
# Escenario optimista (intervalo superior)
escenario_B <- pronostico$upper
# Escenario pesimista (intervalo inferior)
escenario_C <- pronostico$lower
escenario_A
## 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
escenario_B
## Jan Feb Mar Apr May Jun Jul Aug
## 2020 36381.32 35249.05 37809.92 37402.36 38261.90 38246.40 38296.35 39710.59
## Sep Oct Nov Dec
## 2020 39901.42 40925.33 39887.97 39792.22
escenario_C
## Jan Feb Mar Apr May Jun Jul Aug
## 2020 34616.48 33155.29 35596.10 35141.44 35982.07 35958.91 36005.74 37418.71
## Sep Oct Nov Dec
## 2020 37609.03 38632.73 37595.29 37499.50
LS0tDQp0aXRsZTogIkFjdGl2aWRhZCAyLiBHZW5lcmFjacOzbiBkZSBlc2NlbmFyaW9zIGZ1dHVyb3MgY29uIG1vZGVsb3MgZGUgcHJvbsOzc3RpY29zIGVuIHNlcmllcyBkZSB0aWVtcG8iDQpkYXRlOiAiYHIgU3lzLkRhdGUoKWAiDQpvdXRwdXQ6IA0KICBodG1sX2RvY3VtZW50Og0KICAgIHRvYzogVFJVRQ0KICAgIHRvY19mbG9hdDogVFJVRQ0KICAgIGNvZGVfZG93bmxvYWQ6IFRSVUUNCiAgICB0aGVtZTogeWV0aQ0KLS0tDQojIElOU1RBTEFSIFkgQ0FSR0FSIExJQlJFUklBUw0KDQpgYGB7cn0NCiMgaW5zdGFsbC5wYWNrYWdlcygiZm9yZWNhc3QiKSAgICMgc29sbyBsYSBwcmltZXJhIHZleg0KbGlicmFyeShmb3JlY2FzdCkNCmBgYA0KDQojIDEuIENBUkdBUiBEQVRPUyAoVmVudGFzIEhlcnNoZXkpDQpgYGB7cn0NCnZlbnRhc19oZXJzaGV5IDwtIGMoDQogIDI1NTIwLjUxLDIzNzQwLjExLDI2MjUzLjU4LDI1ODY4LjQzLDI3MDcyLjg3LDI3MTUwLjUwLA0KICAyNzA2Ny4xMCwyODE0NS4yNSwyNzU0Ni4yOSwyODQwMC4zNywyNzQ0MS45OCwyNzg1Mi40NywNCiAgMjg0NjMuNjksMjY5OTYuMTEsMjk3NjguMjAsMjkyOTIuNTEsMjk5NTAuNjgsMzAwOTkuMTcsDQogIDMwODUxLjI2LDMyMjcxLjc2LDMxOTQwLjc0LDMyOTk1LjkzLDMyMTk3LjEyLDMxOTg0LjgyLA0KICAzMjQ5Ni40NCwzMTI4Ny4yOCwzMzM3Ni4wMiwzMjk0OS43NywzNDAwNC4xMSwzMzc1Ny44OSwNCiAgMzI5MjcuMzAsMzQzMjQuMTIsMzUxNTEuMjgsMzYxMzMuMDcsMzQ3OTkuOTEsMzQ4NDYuMTcNCikNCmBgYA0KDQojIDIuIENSRUFSIFNFUklFIERFIFRJRU1QTyAoTUVOU1VBTCkNCmBgYHtyfQ0KDQpzZXJpZSA8LSB0cyh2ZW50YXNfaGVyc2hleSwgc3RhcnQ9YygyMDE3LDEpLCBmcmVxdWVuY3k9MTIpDQoNCiMgVmlzdWFsaXphciBzZXJpZQ0KcGxvdChzZXJpZSwgbWFpbj0iVmVudGFzIExlY2hlIFNhYm9yaXphZGEgSGVyc2hleSIsIGNvbD0iYmx1ZSIpDQoNCmBgYA0KDQojIDMuIEFOQUxJU0lTIEVYUExPUkFUT1JJTw0KYGBge3J9DQojIERlc2NvbXBvc2ljacOzbiBwYXJhIHZlciB0ZW5kZW5jaWEgeSBlc3RhY2lvbmFsaWRhZA0KZGVjb21wIDwtIGRlY29tcG9zZShzZXJpZSkNCnBsb3QoZGVjb21wKQ0KYGBgDQoNCiMgNC4gTU9ERUxPIEFSSU1BIChCT1gtSkVOS0lOUykNCmBgYHtyfQ0KbW9kZWxvX2FyaW1hIDwtIGF1dG8uYXJpbWEoc2VyaWUpDQoNCm1vZGVsb19hcmltYQ0Kc3VtbWFyeShtb2RlbG9fYXJpbWEpDQpgYGANCg0KIyA1LiBWQUxJREFDSU9OIERFTCBNT0RFTE8gKFJFU0lEVUFMRVMpDQpgYGB7cn0NCmNoZWNrcmVzaWR1YWxzKG1vZGVsb19hcmltYSkNCg0KYGBgDQoNCiMgNi4gUFJPTk9TVElDTyAoU0lHVUlFTlRFIEHDkU8gPSAxMiBNRVNFUykNCmBgYHtyfQ0KcHJvbm9zdGljbyA8LSBmb3JlY2FzdChtb2RlbG9fYXJpbWEsIGg9MTIsIGxldmVsPTk1KQ0KDQpwcm9ub3N0aWNvDQoNCnBsb3QocHJvbm9zdGljbywgbWFpbj0iUHJvbsOzc3RpY28gVmVudGFzIEhlcnNoZXkiKQ0KYGBgDQoNCiMgNy4gUFJPWUVDQ0nDk04gQU5VQUwgVkVOVEFTIChNb2RlbG8gU0FSSU1BKQ0KYGBge3J9DQp0b3RhbF9hbnVhbCA8LSBzdW0oYXMubnVtZXJpYyhwcm9ub3N0aWNvJG1lYW4pKQ0KDQp0b3RhbF9hbnVhbA0KYGBgDQoNCiMgOC4gTU9ERUxPIERFIFJFR1JFU0lPTiAoQ29tcGFyYWNpw7NuKQ0KYGBge3J9DQojIENyZWFyIHZhcmlhYmxlIHRpZW1wbw0KdCA8LSAxOmxlbmd0aChzZXJpZSkNCg0KbW9kZWxvX3JlZ3Jlc2lvbiA8LSBsbShzZXJpZSB+IHQpDQoNCnN1bW1hcnkobW9kZWxvX3JlZ3Jlc2lvbikNCg0KYGBgDQoNCiMgOS4gQ09NUEFSQVIgRVhBQ1RJVFVEIChBUklNQSB2cyBSRUdSRVNJT04pDQoNCmBgYHtyfQ0KDQphY2N1cmFjeShtb2RlbG9fYXJpbWEpDQphY2N1cmFjeShtb2RlbG9fcmVncmVzaW9uKQ0KDQoNCmBgYA0KDQoNCiMgMTAuIEVTQ0VOQVJJT1MgRlVUVVJPUw0KYGBge3J9DQojIEVzY2VuYXJpbyBlc3BlcmFkbw0KZXNjZW5hcmlvX0EgPC0gcHJvbm9zdGljbyRtZWFuDQoNCiMgRXNjZW5hcmlvIG9wdGltaXN0YSAoaW50ZXJ2YWxvIHN1cGVyaW9yKQ0KZXNjZW5hcmlvX0IgPC0gcHJvbm9zdGljbyR1cHBlcg0KDQojIEVzY2VuYXJpbyBwZXNpbWlzdGEgKGludGVydmFsbyBpbmZlcmlvcikNCmVzY2VuYXJpb19DIDwtIHByb25vc3RpY28kbG93ZXINCg0KZXNjZW5hcmlvX0ENCmVzY2VuYXJpb19CDQplc2NlbmFyaW9fQw0KYGBgDQoNCg==