TEMA 2:

Ejercicios de análisis clásicos de series temporales con R

Ejercicio 1

Realiza un breve análisis descriptivo numérico y gráfico. Convierte los datos en formato de serie temporal y dibuja la serie.

df <- read.csv("unemployment.csv")
unempl <- ts(df, start = c(2012, 1), frequency = 12)
plot(unempl)

Podemos observar cómo la serie tiene una tendencia clara descendente. Además, existe estacionalidad al observar los dientes de sierra en el gráfico.

Para verlo de una manera más concisa, detectamos las componentes del gráfico a través del método aditivo y multiplicativo:

decompose_unempl = decompose(unempl, "additive")
plot(decompose_unempl)

decompose_unempl = decompose(unempl, "multiplicative")
plot(decompose_unempl)

En cada método si nos fijamos en el “random” o aleatoriedad podemos observar cómo en el método aditivo va de -0.2 a -0.4 mientras que el método multiplicativo va de 0.96 a 1.96 aproximadamente. Con todo ello, elegimos el método aditivo como el que mejor capta la evolución o forma de la serie temporal.

Ejercicio 2

Usa la función ses del paquete forecast para obtener la predicción basada en un suavizado exponencial simple para los próximos 12 meses, y dibuja esa predicción.

library("forecast", lib.loc="~/R/win-library/3.3")
## Warning: package 'forecast' was built under R version 3.3.3
fcast_ses <- ses(unempl, h = 12)
plot(fcast_ses)

La función ses nos permite realizar un suavizado exponencial simple que, como podemos observar, no capta bien la evolución de la serie temporal ya que este método es muy básico por lo que solo sirve para series temporales sin tendencia ni estacionalidad.

summary(fcast_ses)
## 
## Forecast method: Simple exponential smoothing
## 
## Model Information:
## Simple exponential smoothing 
## 
## Call:
##  ses(y = unempl, h = 12) 
## 
##   Smoothing parameters:
##     alpha = 0.9999 
## 
##   Initial states:
##     l = 8.8217 
## 
##   sigma:  0.3577
## 
##      AIC     AICc      BIC 
## 137.4810 137.8878 143.9104 
## 
## Error measures:
##                       ME      RMSE       MAE       MPE     MAPE      MASE
## Training set -0.06701777 0.3576975 0.2828898 -1.197171 4.552993 0.3661772
##                   ACF1
## Training set 0.1088765
## 
## Forecasts:
##          Point Forecast    Lo 80    Hi 80    Lo 95    Hi 95
## Apr 2017        4.60003 4.141622 5.058438 3.898956 5.301104
## May 2017        4.60003 3.951776 5.248284 3.608611 5.591449
## Jun 2017        4.60003 3.806097 5.393963 3.385815 5.814245
## Jul 2017        4.60003 3.683283 5.516777 3.197987 6.002073
## Aug 2017        4.60003 3.575081 5.624979 3.032506 6.167554
## Sep 2017        4.60003 3.477258 5.722802 2.882899 6.317161
## Oct 2017        4.60003 3.387301 5.812759 2.745321 6.454739
## Nov 2017        4.60003 3.303570 5.896490 2.617266 6.582794
## Dec 2017        4.60003 3.224929 5.975131 2.496994 6.703066
## Jan 2018        4.60003 3.150548 6.049512 2.383238 6.816822
## Feb 2018        4.60003 3.079801 6.120259 2.275041 6.925019
## Mar 2018        4.60003 3.012204 6.187856 2.171660 7.028400

El MAPE (porcentaje absoluto del error) da 4.55% por lo que, coincidiendo con lo dicho anteriormente, la predicción de este modelo no se ajusta a la evolución de la serie temporal.

Ejercicio 3

Estima un modelo de suavizado exponencial usando la función ets con los parámetros por defecto. Luego pasa el modelo como input para una predicción de los próximos 12 meses, y dibuja la predicción.

fit_ets_default <- ets(unempl)
fcast_ets_default <- forecast(fit_ets_default, h = 12)
plot(fcast_ets_default)

El comando ets (“Exponential Trend Smoothing”) realiza un suavizado exponencial en el que sí que se tiene en cuenta la tendencia. De esta manera, nos proporciona un suavizado descendente en el que sí que se puede observar cómo sigue la tendencia negativa de la serie, además de la estacionalidad.

Ejercicio 4

Realiza un “summary” del modelo estimado en el ejercicio anterior y encuentra la estructura de la estimación. ¿Incluye esta los componentes de tendencia y estacionalidad? Si estas componentes están presentes, ¿el modelo es aditivo o multiplicativo?

summary(fit_ets_default)
## ETS(M,A,M) 
## 
## Call:
##  ets(y = unempl) 
## 
##   Smoothing parameters:
##     alpha = 0.5717 
##     beta  = 1e-04 
##     gamma = 1e-04 
## 
##   Initial states:
##     l = 8.4353 
##     b = -0.0564 
##     s=0.9567 0.9453 0.957 0.9669 1.0245 1.0591
##            1.0365 0.9642 0.9403 1.0224 1.0542 1.0729
## 
##   sigma:  0.021
## 
##      AIC     AICc      BIC 
## 37.38299 50.98299 73.81628 
## 
## Training set error measures:
##                        ME      RMSE      MAE        MPE     MAPE      MASE
## Training set -0.009791689 0.1271141 0.102154 -0.1209349 1.687472 0.1322298
##                    ACF1
## Training set 0.08649403

Al realizar el resumen del modelo podemos observar los parámetros del suavizado (alfa, beta y gamma).

El componente del suavizado es el alfa que al referirse al nivel nos dice cómo de achatada es nuestra predicción. El summary del modelo nos dice que alfa es 0.5685. El componente de la tendencia es el beta que, en nuestro caso, el método no la capta bien (1e-04). Por último, el gamma o estacionalidad indica el movimiento cíclico en cierto periodo de tiempo el cual se repite sistemáticamente por lo que nos dice para donde va la tendencia; nuestro modelo no lo capta ya que posee un valor muy pequeño (1e-04).

Además, el MAPE en este caso da 1.68% por lo que si lo comparamos con el MAPE del modelo SES podemos ver que este es mejor ya que nos da un error más pequeño.

Con todo ello, en este modelo sí que están presentes tanto la estacionalidad como la tendencia. El modelo es aditivo ya que cómo hemos visto anteriormente el error del modelo aditivo es menor que el del modelo multiplicativo.

Ejercicio 5

Usa la función ets para estimar dos modelos, uno con tendencia y otro sin capturar la tendencia de esta serie. Realiza la predicción para los próximos 12 meses y dibuja las predicciones de las estimaciones.

Con tendencia

fit_ets_damped_trend <- ets(unempl, damped = TRUE)
fcast_ets_damped_trend <- forecast(fit_ets_damped_trend, h = 12)
plot(fcast_ets_damped_trend)

summary(fit_ets_damped_trend)
## ETS(M,Ad,M) 
## 
## Call:
##  ets(y = unempl, damped = TRUE) 
## 
##   Smoothing parameters:
##     alpha = 0.3926 
##     beta  = 0.0671 
##     gamma = 1e-04 
##     phi   = 0.9658 
## 
##   Initial states:
##     l = 8.4934 
##     b = -0.0519 
##     s=0.9564 0.9491 0.9587 0.9737 1.024 1.0593
##            1.0387 0.9616 0.9392 1.017 1.0524 1.0699
## 
##   sigma:  0.0207
## 
##      AIC     AICc      BIC 
## 37.87171 53.41717 76.44814 
## 
## Training set error measures:
##                       ME      RMSE       MAE        MPE     MAPE      MASE
## Training set -0.02314036 0.1287874 0.1013243 -0.3506129 1.667008 0.1311558
##                   ACF1
## Training set 0.1065758

Este modelo sigue sin captar la tendecia aunque nos salga un poco más grande que antes (beta = 0.0435). Además, podemos observar cómo el suavizado del gráfico se asemeja más al dibujo de los últimos años. El error nos da 1.73% por lo que observando los demás modelos vemos cómo este es el que mejor capta la evolución de la serie temporal al tener el MAPE más pequeño y acercarse más la predicción a la forma de la serie.

Sin tendencia

fit_ets_no_trend <- ets(unempl, model = "ZNZ")
fcast_ets_no_trend <- forecast(fit_ets_no_trend, h = 12)
plot(fcast_ets_no_trend)

summary(fit_ets_no_trend)
## ETS(M,N,M) 
## 
## Call:
##  ets(y = unempl, model = "ZNZ") 
## 
##   Smoothing parameters:
##     alpha = 0.8606 
##     gamma = 1e-04 
## 
##   Initial states:
##     l = 7.7404 
##     s=0.96 0.9442 0.9605 0.9688 1.0211 1.0551
##            1.0339 0.9605 0.9355 1.02 1.0576 1.0827
## 
##   sigma:  0.0247
## 
##      AIC     AICc      BIC 
## 54.88326 65.09602 87.03028 
## 
## Training set error measures:
##                       ME      RMSE      MAE       MPE    MAPE      MASE
## Training set -0.05882104 0.1559882 0.117757 -1.024958 1.92539 0.1524265
##                    ACF1
## Training set 0.01888684

Este modelo ahora no añade la tendencia. Hay pocas diferencias pero se ve que sin tendencia sube más y luego con tendencia se queda más estable. ¿Cual elijo? Pues es difícil. El error da 1.92%, un error grande comparado con los demás.

Como conclusión cabe destacar el modelo ETS como el que mejor capta la evolución de la serie temporal al tener el menor error.