Usando cualquiera de los conjuntos de datos que se han usadon en el curso, o datos de su propia empresa, aplique las técnicas de forecast tratadas hasta el momento en esta sesión y haga un breve análisis de los resultados.
Publique sus resultados en RPubs con el procedimiento que desarrolló, sus resultados y análisis. Comparta el vínculo de la publicación en el campo disponible.
El archivo de datos que se utilizará será el siguiente:
## Warning: package 'tidyverse' was built under R version 3.6.2
## Warning: package 'tibble' was built under R version 3.6.3
## Warning: package 'forecast' was built under R version 3.6.2
## Warning: package 'readxl' was built under R version 3.6.2
## Warning: package 'imputeTS' was built under R version 3.6.3
Cafe <- read_excel("CAFE_DIARIO.xlsx", col_names = FALSE )
## New names:
## * `` -> ...1
Cafe_ts <- ts(Cafe, frequency = 7,start = c(1,1), end = c(52,1))
Análisis descriptivo de la serie.
autoplot(Cafe_ts)+
ylab("Demanda de Café diario")+
ggtitle("Serie de tiempo de la Demanda de Café Diaria")
autoplot(mstl(Cafe_ts))
ggAcf(Cafe_ts)
ggsubseriesplot(Cafe_ts)
Al inspeccioner los gráficos asociados a la serie de tiempo, no se observa una tendencia en la misma, pero si la existencia de estacionalidad con frecuencia cada siete días
A continuación se procede a estimar los modelos según las técnicas estudiadas en la sesión, en el siguiente orden.
# Modelos ARIMA
Cafe_Arima <- auto.arima(Cafe_ts)
summary(Cafe_Arima)
## Series: Cafe_ts
## ARIMA(1,0,0)(2,0,0)[7] with non-zero mean
##
## Coefficients:
## ar1 sar1 sar2 mean
## 0.1228 0.2147 0.4615 17.0354
## s.e. 0.0561 0.0485 0.0502 1.0828
##
## sigma^2 estimated as 38.95: log likelihood=-1163.8
## AIC=2337.6 AICc=2337.77 BIC=2357.01
##
## Training set error measures:
## ME RMSE MAE MPE MAPE MASE ACF1
## Training set 0.03611399 6.205942 4.837438 -Inf Inf 0.6958773 -0.01397318
Al aplicar la función auto.arima() a la serie de tiempo, sugiere un Modelo ARIMA(1,0,0)(2,0,0)[7]. Pasemos a ver como se comportan los residuos y a obtener predicciones para los próximos 14 días.
# Modelo ARIMA - PREDICCIONES
Cafe_Arima_FOR <- forecast(Cafe_Arima, h=14)
Cafe_Arima_FOR
## Point Forecast Lo 80 Hi 80 Lo 95 Hi 95
## 52.14286 13.55438 5.556333 21.55242 1.32242582 25.78632
## 52.28571 12.50549 4.447358 20.56362 0.18164052 24.82934
## 52.42857 12.89135 4.832318 20.95039 0.56612208 25.21658
## 52.57143 11.96687 3.907821 20.02592 -0.35838228 24.29212
## 52.71429 13.96340 5.904353 22.02245 1.63814980 26.28865
## 52.85714 24.28996 16.230910 32.34901 11.96470737 36.61521
## 53.00000 21.74531 13.686261 29.80436 9.42005809 34.07056
## 53.14286 12.57933 4.339318 20.81934 -0.02267914 25.18133
## 53.28571 13.27717 5.034465 21.51988 0.67103888 25.88331
## 53.42857 15.20617 6.963419 23.44892 2.59997134 27.81236
## 53.57143 15.00766 6.764906 23.25040 2.40145858 27.61385
## 53.71429 17.74404 9.501291 25.98679 5.13784289 30.35024
## 53.85714 28.26906 20.026312 36.51181 15.66286410 40.87526
## 54.00000 21.26117 13.018418 29.50392 8.65497021 33.86736
errores_Cafe_Arima <- residuals(Cafe_Arima)
checkresiduals(errores_Cafe_Arima)
## Warning in modeldf.default(object): Could not find appropriate degrees of
## freedom for this model.
autoplot(Cafe_Arima_FOR) + autolayer(fitted(Cafe_Arima_FOR))
Cafe_Arima_accuracy <- accuracy(Cafe_Arima)
Cafe_Arima_accuracy
## ME RMSE MAE MPE MAPE MASE ACF1
## Training set 0.03611399 6.205942 4.837438 -Inf Inf 0.6958773 -0.01397318
Al obervar el análisis de los residuos, se observa un sesgo hacia la izquierda lo que sugiere que el modelo subestima los valores predichos. También se observa que hay residuos que superan los límites del intervalo de la función de autocorrelación. En la gráfica que compara los valores prdichos, versus los observados, se tiene que si bien el modelo recoge la estacionalidad de la serie, en general se las estiaciones están por debajo de los valores observados
# Modelos ARIMA
Cafe_rn <- nnetar(Cafe_ts)
Cafe_rn
## Series: Cafe_ts
## Model: NNAR(24,1,12)[7]
## Call: nnetar(y = Cafe_ts)
##
## Average of 20 networks, each of which is
## a 24-12-1 network with 313 weights
## options were - linear output units
##
## sigma^2 estimated as 0.07979
El modelo indica, que la red neuronal tomó como valores de entrada los primeros 24 días de la serie y 12 capas ocultas, también considera una estacionalidad de siete (7) días. Como en el caso del Modelo Arima, pasemos a ver como se comportan los residuos y a obtener predicciones para los próximos 14 días.
# Modelo Red Neuronal - PREDICCIONES
Cafe_rn_FOR <- forecast(Cafe_rn, h=14, PI=TRUE)
Cafe_rn_FOR
## Point Forecast Lo 80 Hi 80 Lo 95 Hi 95
## 52.14286 13.780554 13.430794 14.131836 13.250312 14.324397
## 52.28571 8.666982 8.326387 9.059822 8.126321 9.240996
## 52.42857 13.514696 13.091405 13.933833 12.875737 14.159259
## 52.57143 13.065102 12.621524 13.525278 12.403931 13.730140
## 52.71429 4.630223 4.263304 5.019345 4.065016 5.260107
## 52.85714 27.502864 27.029933 27.934404 26.800866 28.191956
## 53.00000 15.069606 14.657350 15.486263 14.422120 15.684223
## 53.14286 19.386931 18.978125 19.778233 18.744157 20.001731
## 53.28571 23.030766 22.570783 23.392698 22.345796 23.584913
## 53.42857 20.308403 19.843662 20.699322 19.604486 20.901616
## 53.57143 11.082429 10.641132 11.521148 10.420440 11.767076
## 53.71429 16.632313 16.182882 17.156033 15.971732 17.372757
## 53.85714 38.224457 37.655886 38.732230 37.423677 39.005618
## 54.00000 18.317398 17.761035 18.922172 17.417588 19.267359
errores_Cafe_rn <- residuals(Cafe_rn)
checkresiduals(errores_Cafe_rn)
## Warning in modeldf.default(object): Could not find appropriate degrees of
## freedom for this model.
autoplot(Cafe_rn_FOR) + autolayer(fitted(Cafe_rn_FOR))
## Warning: Removed 24 rows containing missing values (geom_path).
Cafe_rn_accuracy <- accuracy(Cafe_rn)
Cafe_rn_accuracy
## ME RMSE MAE MPE MAPE MASE ACF1
## Training set -0.001641055 0.2824647 0.1978276 -Inf Inf 0.02845799 -0.00136481
Del análisis de los residuos del modelo de red neuronal, se concluye lo siguiente:
Las medida de bondad de ajuste son mucho más pequeñas que las arrojadas por el modelo ARIMA (MAE-Arima = 4,8374 Vs MAE-rn = 0,02050).
La distribución de los residuos sigue una distribución simétrica centrada en cero (0), muestran un comportamiento aleatorio, y solo un residuo se sale de los límites de confianza de la función de autocorrelación
Los valores predichos se ajustan bastante bien a los observados, incluso en los picos estacionales.
# Modelos BootStrap
Cafe_bag <- baggedModel(Cafe_ts)
Cafe_bag
## Series: Cafe_ts
## Model: baggedModel
## Call: baggedModel(y = Cafe_ts)
Análisis de los residuos del modelo BootStrap
# Modelo BootStrap - PREDICCIONES
Cafe_bag_FOR <- forecast(Cafe_bag, h=14)
Cafe_bag_FOR
## Point Forecast Lo 100 Hi 100
## 52.14286 14.85015 12.629194 16.69393
## 52.28571 14.86434 13.087410 16.21810
## 52.42857 14.32014 12.458031 16.16222
## 52.57143 12.55426 10.888306 14.98949
## 52.71429 11.18162 9.437036 13.01085
## 52.85714 26.88933 25.342535 28.63954
## 53.00000 21.66261 19.767165 23.17707
## 53.14286 14.85015 12.629194 16.69393
## 53.28571 14.86434 13.087410 16.21810
## 53.42857 14.32014 12.458031 16.16222
## 53.57143 12.55426 10.888306 14.98949
## 53.71429 11.18162 9.437036 13.01085
## 53.85714 26.88933 25.342535 28.63954
## 54.00000 21.66261 19.767165 23.17707
errores_Cafe_bag <- residuals(Cafe_bag)
checkresiduals(errores_Cafe_bag)
## Warning in modeldf.default(object): Could not find appropriate degrees of
## freedom for this model.
autoplot(Cafe_bag_FOR) + autolayer(fitted(Cafe_bag_FOR))
Cafe_bag_accuracy <- accuracy(Cafe_bag)
Cafe_bag_accuracy
## ME RMSE MAE MPE MAPE MASE ACF1
## Training set -0.1063306 5.632567 4.540251 -Inf Inf 0.6095787 0.1980544
Al revisar los residuos del modelo, se tiene que este presenta una leve mejora respecto a las medidas de bondad de ajuste, en concreto el Error Absoluto Medio, al comparlo con el modelo ARIMA, sin embargo dista mucho del valor obtenido por el modelo de Red Neuronal.
La distribución de los residuos presenta sesgo hacia la derecha, con lo que el promedio de la misma es menor que cero, la serie de los residuos no se comporta como ruido blanco, las autocorrelaciones se salen de los límites de confianza de la función de autocorrelación, presentando un comportamiento períodico, esto sugiere un comportamiento no aleatorio de los mismos.
Los valores predichos están consistentemente por debajo de los valores observados, el modelo no recoge bien la estacionalidad de la serie de tiempo.
round(Cafe_Arima_accuracy,3)
## ME RMSE MAE MPE MAPE MASE ACF1
## Training set 0.036 6.206 4.837 -Inf Inf 0.696 -0.014
round(Cafe_rn_accuracy,3)
## ME RMSE MAE MPE MAPE MASE ACF1
## Training set -0.002 0.282 0.198 -Inf Inf 0.028 -0.001
round(Cafe_bag_accuracy,3)
## ME RMSE MAE MPE MAPE MASE ACF1
## Training set -0.106 5.633 4.54 -Inf Inf 0.61 0.198
El mejor modelo entre los evaluados corresponde al de Red Neuronal, ya que es el que presenta ademas de la mejor distribución de los residuos, los mejores indicadores de bondad de ajuste