Taller SED, SET, ETS

Los datos del archivo adjunto corresponden a datos reales de ventas de dos de productos. A partir del análisis de la serie de tiempo identifique la técnica apropiada de forecast y calcule el forecast de los siguientes 12 periodos para cada uno de los productos y haga un breve análisis de los resultados.

Si prefieren también pueden usar datos de productos o servicios de su empresa

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

En el archivo hay datos de los siguientes productos:

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

Tamales <- read_excel("TAMALES.xlsx", col_names = FALSE)
## New names:
## * `` -> ...1
## * `` -> ...2
## * `` -> ...3
Tamales_ts <- ts(Tamales[3], frequency = 12, start = c(2015,1))

Análisis de la serie Cafe_ts

Lo primero que haremos es un análisis descriptivo de la Serie de Tiempo de Café, para ello trazaremos las gráficas correspondientes a la serie, sus descomposición estacional la función de auntocorrelación y y las sub series

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)

De los gráficos de la serie de Demanda de Café Diaria, se observa los siguiente:

Análisis de la serie Tamales_ts

Al igual que hicimos con la Demanda Diaria de Café , trazaremos las gráficas correspondientes a la serie de la Demada de Tamales. las gráficas que trazaremos, serán: la descomposición estacional la función de auntocorrelación y y las sub series

autoplot(Tamales_ts)+
  ylab("Demanda Mensual de Tamales")+
  ggtitle("Serie de tiempo de la Demanda Mensual de Tamales")

autoplot(mstl(Tamales_ts))

ggAcf(Tamales_ts)

ggsubseriesplot(Tamales_ts)

En cuanto a la serie de Demanda Mensual de Tamales, al hacer el análisis descriptivo podemos concluir:

Estimación de los modelos SED, SET, ETS para las series

Demanda De Café Diaria

Haremos los modelos en el siguieten orde: * Suavizamiento Exponencial Doble (SED) * Suavizamiento Exponencial Triple (SET) * Modelos de espacio de estado (ETS)

# Modelo SED

Cafe_SED <- holt(Cafe_ts, h=12, level = .95)
summary(Cafe_SED)
## 
## Forecast method: Holt's method
## 
## Model Information:
## Holt's method 
## 
## Call:
##  holt(y = Cafe_ts, h = 12, level = 0.95) 
## 
##   Smoothing parameters:
##     alpha = 4e-04 
##     beta  = 4e-04 
## 
##   Initial states:
##     l = 15.7038 
##     b = 0.0218 
## 
##   sigma:  7.7631
## 
##      AIC     AICc      BIC 
## 3578.564 3578.735 3597.967 
## 
## Error measures:
##                      ME     RMSE      MAE  MPE MAPE      MASE      ACF1
## Training set -0.2545881 7.719593 6.020645 -Inf  Inf 0.8660847 0.1704491
## 
## Forecasts:
##          Point Forecast      Lo 95    Hi 95
## 52.14286       14.56121 -0.6541553 29.77657
## 52.28571       14.54254 -0.6728283 29.75791
## 52.42857       14.52388 -0.6915088 29.73926
## 52.57143       14.50521 -0.7101999 29.72062
## 52.71429       14.48654 -0.7289043 29.70199
## 52.85714       14.46787 -0.7476253 29.68337
## 53.00000       14.44921 -0.7663657 29.66478
## 53.14286       14.43054 -0.7851286 29.64621
## 53.28571       14.41187 -0.8039169 29.62766
## 53.42857       14.39321 -0.8227336 29.60915
## 53.57143       14.37454 -0.8415818 29.59066
## 53.71429       14.35587 -0.8604645 29.57221
errores_Cafe_SED <- residuals(Cafe_SED)
checkresiduals(errores_Cafe_SED)
## Warning in modeldf.default(object): Could not find appropriate degrees of
## freedom for this model.

autoplot(Cafe_SED) + autolayer(fitted(Cafe_SED))

Cafe_SED_accuracy <- accuracy(Cafe_SED)

Se observa que las predicciones están alrededor de 17 unidades con un intervalo de confianza al 95% muy amplio (entre 2 y 32 unidades).

Los errores parecen no ser un ruido blanco, al ver tanto el su gráfico, como el de autocorrelación estos tienden as salide de los límites de confianza sistemáticanmente> Otro elemento es que al ver la distribución de los errores se está tiende a estar sesgada hacia la izquierda no estando centrada en cero y alejandose de la distribución normal.

Al ver el gráfico de las predicciones, se obesrva que el modelo SED no recoge la estacionalidad de la serie, la tendencia si la modela bien

# Modelo SET

Cafe_SET <- hw(Cafe_ts, h=12, level = .95)
summary(Cafe_SET)
## 
## Forecast method: Holt-Winters' additive method
## 
## Model Information:
## Holt-Winters' additive method 
## 
## Call:
##  hw(y = Cafe_ts, h = 12, level = 0.95) 
## 
##   Smoothing parameters:
##     alpha = 0.0479 
##     beta  = 1e-04 
##     gamma = 2e-04 
## 
##   Initial states:
##     l = 13.3807 
##     b = 0.0041 
##     s = 10.7587 -5.5179 -3.9637 -2.4771 -2.041 -1.5875
##            4.8285
## 
##   sigma:  5.818
## 
##      AIC     AICc      BIC 
## 3378.907 3379.811 3425.473 
## 
## Error measures:
##                      ME     RMSE      MAE  MPE MAPE     MASE      ACF1
## Training set 0.01145474 5.727948 4.595494 -Inf  Inf 0.661073 0.1819252
## 
## Forecasts:
##          Point Forecast      Lo 95    Hi 95
## 52.14286       14.99501  3.5918826 26.39813
## 52.28571       14.55034  3.1341116 25.96657
## 52.42857       14.11674  2.6873667 25.54611
## 52.57143       12.63429  1.1917346 24.07685
## 52.71429       11.08475 -0.3710353 22.54053
## 52.85714       27.36232 15.8932781 38.83137
## 53.00000       21.44357  9.9612234 32.92592
## 53.14286       15.02689  3.5311095 26.52266
## 53.28571       14.58222  3.0730599 26.09138
## 53.42857       14.14862  2.6260363 25.67120
## 53.57143       12.66617  1.1301259 24.20222
## 53.71429       11.11662 -0.4329222 22.66617
errores_Cafe_SET <- residuals(Cafe_SET)
checkresiduals(errores_Cafe_SET)
## Warning in modeldf.default(object): Could not find appropriate degrees of
## freedom for this model.

autoplot(Cafe_SET) + autolayer(fitted(Cafe_SET))

Cafe_SET_accuracy <- accuracy(Cafe_SET)

Se observa que las predicciones presentan no tienen un valor constante, sino que varían recogiendo la el efecto estacional de la serie de tiempo y lo hacen en un rango menor para los intervalos de confianza al 95%

Aunque la gráfica de autocorrelación de los errores presenta valores que ciclicamente se salen de los límites de confianza, la distribución de estos si parece estar centrada alrededor del cero (0), aunque aun son un poco sesgados hacia la izquierda.

Al ver el gráfico de las predicciones, se obesrva que el modelo SET recoge en parte la estacionalidad la estacionalidad de la serie, así como la tendencia de la misma.

# Modelo ETS

Cafe_ETS <- ets(Cafe_ts)
summary(Cafe_ETS)
## ETS(A,N,A) 
## 
## Call:
##  ets(y = Cafe_ts) 
## 
##   Smoothing parameters:
##     alpha = 1e-04 
##     gamma = 1e-04 
## 
##   Initial states:
##     l = 17.1761 
##     s = 10.6427 -5.4262 -4.2528 -2.621 -1.6816 -1.8542
##            5.1931
## 
##   sigma:  5.7334
## 
##      AIC     AICc      BIC 
## 3366.473 3367.107 3405.278 
## 
## Training set error measures:
##                       ME     RMSE      MAE  MPE MAPE      MASE      ACF1
## Training set -0.05701634 5.660874 4.562954 -Inf  Inf 0.6563922 0.2061525
Cafe_ETS_FOR <- forecast(Cafe_ETS, h=12)
Cafe_ETS_FOR
##          Point Forecast     Lo 80    Hi 80      Lo 95    Hi 95
## 52.14286       15.31951  7.971864 22.66716  4.0822540 26.55677
## 52.28571       15.49155  8.143904 22.83920  4.2542945 26.72881
## 52.42857       14.55389  7.206245 21.90154  3.3166349 25.79115
## 52.57143       12.92277  5.575121 20.27042  1.6855108 24.16003
## 52.71429       11.74703  4.399382 19.09468  0.5097720 22.98429
## 52.85714       27.81442 20.466772 35.16207 16.5771618 39.05168
## 53.00000       22.36679 15.019140 29.71444 11.1295298 33.60405
## 53.14286       15.31951  7.971863 22.66716  4.0822533 26.55677
## 53.28571       15.49155  8.143904 22.83920  4.2542939 26.72881
## 53.42857       14.55389  7.206244 21.90154  3.3166342 25.79115
## 53.57143       12.92277  5.575120 20.27042  1.6855101 24.16003
## 53.71429       11.74703  4.399382 19.09468  0.5097714 22.98429
errores_Cafe_ETS <- residuals(Cafe_ETS)
checkresiduals(errores_Cafe_ETS)
## Warning in modeldf.default(object): Could not find appropriate degrees of
## freedom for this model.

autoplot(Cafe_ETS_FOR) + autolayer(fitted(Cafe_ETS_FOR))

Cafe_ETS_accuracy <- accuracy(Cafe_ETS)

El modelo que sugiere es el siguiente: ETS(A,N,A), es decir un modelo con Error aditivo, sin Tendencia y con estacionalidad aditiva. Las predicciones realizadas por el modelo se encuentran en in intervalo de confiana con un rango menor que en los casos anteriores.

La distribución de los errores se ajusta bastante a una normal centrada en cero, aun se aprecia como se salen algunas autocorrelaciones de los errores de los límites de confianza del intervalo.

En cuando a la gráfica de las predicciones, estás paracen recoger los efectos estacionales de la demanda de café diaria

Comparación entre los tres modelos para la demanda diaria de café

print(paste0("El AIC Para el Modelo SED es: ",as.character(round(Cafe_SED_accuracy[3],3))))
## [1] "El AIC Para el Modelo SED es: 6.021"
print(paste0("El AIC Para el Modelo SET es: ",as.character(round(Cafe_SET_accuracy[3],3))))
## [1] "El AIC Para el Modelo SET es: 4.595"
print(paste0("El AIC Para el Modelo ETS es: ",as.character(round(Cafe_ETS_accuracy[3],3))))
## [1] "El AIC Para el Modelo ETS es: 4.563"

Conclusión Serie Demanda de Café Diaria

Al evaluar los AIC de los tres modelos, se puede ver que elmejor modelo es el ETS(A,N,A), ya que preenta el menor valor del AIC con 4.563

Estimación de los modelos SED, SET, ETS para las series

Demanda Mensual de Tamales

Haremos los modelos en el siguieten orde: * Suavizamiento Exponencial Doble (SED) * Suavizamiento Exponencial Triple (SET) * Modelos de espacio de estado (ETS)

# Modelo SED

Tamales_SED <- holt(Tamales_ts, h=12, level = .95)
summary(Cafe_SED)
## 
## Forecast method: Holt's method
## 
## Model Information:
## Holt's method 
## 
## Call:
##  holt(y = Cafe_ts, h = 12, level = 0.95) 
## 
##   Smoothing parameters:
##     alpha = 4e-04 
##     beta  = 4e-04 
## 
##   Initial states:
##     l = 15.7038 
##     b = 0.0218 
## 
##   sigma:  7.7631
## 
##      AIC     AICc      BIC 
## 3578.564 3578.735 3597.967 
## 
## Error measures:
##                      ME     RMSE      MAE  MPE MAPE      MASE      ACF1
## Training set -0.2545881 7.719593 6.020645 -Inf  Inf 0.8660847 0.1704491
## 
## Forecasts:
##          Point Forecast      Lo 95    Hi 95
## 52.14286       14.56121 -0.6541553 29.77657
## 52.28571       14.54254 -0.6728283 29.75791
## 52.42857       14.52388 -0.6915088 29.73926
## 52.57143       14.50521 -0.7101999 29.72062
## 52.71429       14.48654 -0.7289043 29.70199
## 52.85714       14.46787 -0.7476253 29.68337
## 53.00000       14.44921 -0.7663657 29.66478
## 53.14286       14.43054 -0.7851286 29.64621
## 53.28571       14.41187 -0.8039169 29.62766
## 53.42857       14.39321 -0.8227336 29.60915
## 53.57143       14.37454 -0.8415818 29.59066
## 53.71429       14.35587 -0.8604645 29.57221
errores_Tamales_SED <- residuals(Tamales_SED)
checkresiduals(errores_Tamales_SED)
## Warning in modeldf.default(object): Could not find appropriate degrees of
## freedom for this model.

autoplot(Tamales_SED) + autolayer(fitted(Tamales_SED))

Tamales_SED_accuracy <- accuracy(Tamales_SED)

Al observar los resultados del modelo SED se observa que el mismo produce predicciones negatias en el límite inferrior del intevalo de confianzas, lo cual no tiene sentido desde el punto de vista del producto que se evalúa, mientras que las estimaciones puntuales practiamente no varian de 14 unidades por mes, cuando en la realidad este producto no tiene ese comportamiento.

Los residuos no siguen una distribución normal, ni siquiera están centrados en cero.

al ver el gráfico de las predicciones, bien estas recogen la tendencia creciente, no hacen lo mismo con las variaciones estacionales que tienen los datos.

# Modelo SET

Tamales_SET <- hw(Tamales_ts, h=12, level = .95)
summary(Tamales_SET)
## 
## Forecast method: Holt-Winters' additive method
## 
## Model Information:
## Holt-Winters' additive method 
## 
## Call:
##  hw(y = Tamales_ts, h = 12, level = 0.95) 
## 
##   Smoothing parameters:
##     alpha = 0.0657 
##     beta  = 1e-04 
##     gamma = 0.9343 
## 
##   Initial states:
##     l = 45010.5255 
##     b = 682.5689 
##     s = 42262.26 -3787.482 -2568.108 6142.475 -2499.036 9988.144
##            3256.771 2043.198 -6565.473 6626.172 -9402.424 -45496.5
## 
##   sigma:  13703.21
## 
##      AIC     AICc      BIC 
## 565.1999 652.6285 585.9208 
## 
## Error measures:
##                     ME     RMSE      MAE        MPE     MAPE      MASE
## Training set -1024.351 8221.928 5341.026 -0.7492906 11.86823 0.8479476
##                    ACF1
## Training set -0.2011276
## 
## Forecasts:
##          Point Forecast    Lo 95     Hi 95
## Feb 2017       43926.56 17068.75  70784.37
## Mar 2017       53820.28 26904.34  80736.21
## Apr 2017       53761.43 26787.31  80735.54
## May 2017       56616.47 29584.12  83648.82
## Jun 2017       73526.21 46435.58 100616.84
## Jul 2017       59367.23 32218.27  86516.19
## Aug 2017       58182.23 30974.89  85389.57
## Sep 2017       69202.23 41936.45  96468.00
## Oct 2017       59685.45 32361.19  87009.71
## Nov 2017       67683.28 40300.48  95066.07
## Dec 2017      100514.62 73073.24 127955.99
## Jan 2018       57511.09 30011.08  85011.11
errores_Tamales_SET <- residuals(Tamales_SET)
checkresiduals(errores_Tamales_SET)
## Warning in modeldf.default(object): Could not find appropriate degrees of
## freedom for this model.

autoplot(Tamales_SET) + autolayer(fitted(Tamales_SET))

Tamales_SET_accuracy <- accuracy(Tamales_SET)

El modelo SET parece ajustarse mejor a los datos y producir predicciones que tienen más sentido desde el punto de vista del producto que se estudia.

Los errores muestra una distribución con mucha dispersión, y no centrada en cero, no se ajustan a una distribución normal.

El observar el gráfico de las predicciones se tiene que el mismo muestra las mejoras del modelo en el sentido que se toman en cuenta, tanto la tendencia como los movimientos estacionales de la serie original.

# Modelo ETS

Tamales_ETS <- ets(Tamales_ts)
summary(Tamales_ETS)
## ETS(M,N,N) 
## 
## Call:
##  ets(y = Tamales_ts) 
## 
##   Smoothing parameters:
##     alpha = 0.1895 
## 
##   Initial states:
##     l = 42554.0262 
## 
##   sigma:  0.3079
## 
##      AIC     AICc      BIC 
## 564.9825 566.1253 568.6391 
## 
## Training set error measures:
##                    ME     RMSE     MAE      MPE     MAPE     MASE       ACF1
## Training set 3522.876 14696.92 9879.66 1.515717 17.43614 1.568506 -0.2123752
Tamales_ETS_FOR <- forecast(Tamales_ETS, h=12)
Tamales_ETS_FOR
##          Point Forecast    Lo 80    Hi 80    Lo 95     Hi 95
## Feb 2017       59247.94 35866.81 82629.07 23489.58  95006.30
## Mar 2017       59247.94 35411.39 83084.49 22793.08  95702.80
## Apr 2017       59247.94 34963.00 83532.88 22107.33  96388.55
## May 2017       59247.94 34521.25 83974.63 21431.74  97064.14
## Jun 2017       59247.94 34085.80 84410.08 20765.76  97730.12
## Jul 2017       59247.94 33656.30 84839.58 20108.91  98386.97
## Aug 2017       59247.94 33232.47 85263.41 19460.72  99035.16
## Sep 2017       59247.94 32814.03 85681.85 18820.76  99675.12
## Oct 2017       59247.94 32400.71 86095.17 18188.65 100307.23
## Nov 2017       59247.94 31992.29 86503.59 17564.02 100931.87
## Dec 2017       59247.94 31588.53 86907.35 16946.52 101549.36
## Jan 2018       59247.94 31189.24 87306.64 16335.86 102160.02
errores_Tamales_ETS <- residuals(Tamales_ETS)
checkresiduals(errores_Tamales_ETS)
## Warning in modeldf.default(object): Could not find appropriate degrees of
## freedom for this model.

autoplot(Tamales_ETS_FOR) + autolayer(fitted(Tamales_ETS_FOR))

Tamales_ETS_accuracy <- accuracy(Tamales_ETS)

El Modelo que sugiere es el siguiente ETS(M,N,N), es decir con componente de error Multiplicativo, sin tendendencia y sin estacionalidad, este modelo a la luz del comportamiento de los datos no parece ser muy adecuado, recordemos que al hacer la descomposición de la serie, esta mostró tanto tendencia como estacionalidad.

Es probable que por ser la estacionalidad de los datos de 12 meses y dado que el tamaño de la misma es de 25 observaciones (solo dos años) esta poca cantidad de observaciones esté afectando las estimaciones del modelo, y no pueda modelar correctamente la naturaleza de la serie

Los Errores en nada siguen un distribución normal, parece más bien una distribución bimodal y no simétrica.

Al observar el gráfico de las predicciones se nota que las mismas empeoran en comparación con el modelo anterior

Comparación entre los tres modelos para la demanda mensual de tamales

print(paste0("El AIC Para el Modelo SED es: ",as.character(round(Tamales_SED_accuracy[3],3))))
## [1] "El AIC Para el Modelo SED es: 9505.529"
print(paste0("El AIC Para el Modelo SET es: ",as.character(round(Tamales_SET_accuracy[3],3))))
## [1] "El AIC Para el Modelo SET es: 5341.026"
print(paste0("El AIC Para el Modelo ETS es: ",as.character(round(Tamales_ETS_accuracy[3],3))))
## [1] "El AIC Para el Modelo ETS es: 9879.66"

Conclusión Serie Demanda Mensual de Tamales

Al evaluar los AIC de los tres modelos, se puede ver que el mejor modelo es el de Suavizamiento Exponencial Triple (SET), ya que preenta el menor valor del AIC con 5441.026