Taller: Otras técnicas de series de tiempo.

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:

Carga de las bilbliotecas de trabajo

## 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

Carga de los datos y transformación en Series Temporales

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

Modelo de Redes neuronlaes

# 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:

Modelo BootStrap

# 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.

Conclusión

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