Tema 02.02: 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, col="blue", main="Gráfico de la serie")

Una vez dibujada la serie podemos observar que presenta una clara tendencia descendente, además de estacionalidad.

Ejercicio 2

Obtener una 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)

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

Mediante el método del suavizado exponencial simple (ses) vemos que la predicción no se ajusta a la evolución de la serie ya que este método es válido para series sin tendencia ni estacionalidad. Este método tiene un porcentaje absoluto del error(MAPE) de 4.55.

Para observar de una manera más clara la estacionalidad vamos a descomponer la serie:

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

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

Efectivamente observamos que esta serie peresenta estacionalidad. Además, podemos afirmar que el método aditivo es el que mejor capta la evolución de la serie temporat ya que el error es más pequeño que en el método multiplicativo.

Ejercicio 3

Estimar un modelo de suavizado exponencial con 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)

Mediante el método ets (“Exponential smoothing state space model”), podemos observar que en este caso la predicción ya capta la tendencia, por lo que es más correcto que el anterior.

Ejercicio 4

Realiza un resumen del modelo estimado anterior.

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

Una vez realizado el summary del modelo anterior podemos observar que los valores de los smoothing parameters son: - alpha (componente del suaviazdo) = 0.5717 - beta (componente de la tendencia) = 1e-04 - gamma (componente de la estacionalidad) = 1e-04

Además, este modelo tiene un MAPE de 1.68. Por ello, comparando este modelo con el anterior vemos que el modelo actual capta de una manera mejor la evolución de la serie ya que el MAPE del modelo anterior es mayor.

Podemos ver que todas las componentes están presentes, y podemos deducir que el modelo es aditivo ya que vemos que la forma de crecer de la serie temporal es constante, además, anteriormente hemos visto que el error en el modelo aditivo es menor que en el modelo multiplicativo.

Ejercicio 5

Estima con la función ets dos modelos: uno con tendencia, y otro sin tendencia.

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 presenta un porcentaje absoluto del error de 1.66, sin embargo, este método sigue sin detectarnos la tendencia ya que el valor de beta es 0.0671.

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 presenta un porcentaje absoluto del error de 1.92.

Por todo ello, el mejor modelo propuesto para captar la evolución de esta serie temporal es el modelo estimado por la función ets con tendencia, ya que el porcentaje absoluto del error es el más pequeño de todos los modelos.