Tema 02.02: Ejercicios de análisis clásicos de series temporales con R.
Realiza un breve análisis descriptivo numérico y gráfico. Convierte los datos en formato de serie temporal y dibuja la serie.
#Ejercicio 1#
datos<-read.csv("unemployment.csv", header = TRUE, sep = "",dec = ".")
attach(datos)
unemployment <- ts(datos, start = c(2012, 1), frequency = 12)
plot(unemployment)
Una vez dibujada la serie observamos que, además de estacionalidad, esta presenta una clara tendencia descendente.
Obtener una predicción basada en un suavizado exponencial simple para los próximos 12 meses,y dibuja esa predicción.
#Ejercicio 2#
library(forecast)
forecast_ses<-ses(unemployment, h=12)
plot(forecast_ses)
summary(forecast_ses)
Forecast method: Simple exponential smoothing
Model Information:
Simple exponential smoothing
Call:
ses(y = unemployment, h = 12)
Smoothing parameters:
alpha = 0.9999
Initial states:
l = 8.7981
sigma: 0.3635
AIC AICc BIC
137.4776 137.8844 143.9070
Error measures:
ME RMSE MAE MPE MAPE MASE
Training set -0.0666443 0.3576879 0.2825753 -1.192933 4.549423 0.36577
ACF1
Training set 0.1087391
Forecasts:
Point Forecast Lo 80 Hi 80 Lo 95 Hi 95
Apr 2017 4.600035 4.134185 5.065884 3.887579 5.312490
May 2017 4.600035 3.941262 5.258807 3.592529 5.607541
Jun 2017 4.600035 3.793222 5.406848 3.366121 5.833949
Jul 2017 4.600035 3.668416 5.531653 3.175248 6.024822
Aug 2017 4.600035 3.558460 5.641610 3.007083 6.192986
Sep 2017 4.600035 3.459051 5.741018 2.855051 6.345019
Oct 2017 4.600035 3.367635 5.832435 2.715242 6.484828
Nov 2017 4.600035 3.282547 5.917523 2.585111 6.614959
Dec 2017 4.600035 3.202630 5.997440 2.462888 6.737181
Jan 2018 4.600035 3.127042 6.073027 2.347287 6.852782
Feb 2018 4.600035 3.055149 6.144920 2.237336 6.962733
Mar 2018 4.600035 2.986456 6.213614 2.132279 7.067791
Comprobamos que mediante el método del Suavizado Exponencial Simple (SES) la predicción no se ajusta a la evolución de la serie. Esto se debe a que este método es válido para series que no presentan una clara tendencia o estacionalidad. Este método tiene un porcentaje absoluto del error(MAPE) de 4.55.
Para observar de una manera más clara la estacionalidad procedemos a descomponer la serie:
decompose_unemployment = decompose(unemployment, "additive")
plot(decompose_unemployment)
decompose_unemployment = decompose(unemployment, "multiplicative")
plot(decompose_unemployment)
Una vez descompuesta la serie observamos que existe estacionalidad.
Por otro lado, podemos afirmar que el método aditivo es más apropiado que el multiplicativo ya que capta mejor la evolución de la serie temporal (el error es más pequeño en este método).
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.
#Ejercicio 3#
fit_ets_default <- ets(unemployment)
fcast_ets_default <- forecast(fit_ets_default, h = 12)
plot(fcast_ets_default)
Con el método ETS se lleva a cabo un “Exponential smoothing state space model”, por lo tanto, ahora se tendr? en cuenta la tendencia en la predicción y será más correcto que con el método anterior.
Realiza un resumen del modelo estimado anterior.
#Ejercicio 4#
summary(fit_ets_default)
ETS(M,A,M)
Call:
ets(y = unemployment)
Smoothing parameters:
alpha = 0.5685
beta = 1e-04
gamma = 1e-04
Initial states:
l = 8.3853
b = -0.0575
s=0.9603 0.9474 0.9619 0.9709 1.0222 1.0572
1.0349 0.9611 0.9371 1.0195 1.0529 1.0746
sigma: 0.0243
AIC AICc BIC
37.00320 50.60320 73.43649
Training set error measures:
ME RMSE MAE MPE MAPE
Training set -0.005994591 0.1263496 0.1052338 -0.06762613 1.737244
MASE ACF1
Training set 0.1362163 0.09249464
En esta salida podemos observamos los valores de los smoothing parameters. Estos valores nos indican el tipo de modelo que se ha estimado.
Como en nuestro caso beta y gamma son muy cercanas a cero, estas no serán influyentes. El valor de alpha nos indica la relación con el valor anterior de la serie. En este caso, como se trata de un valor muy cercano a 0.5, nos indica que tiene la misma importancia el valor actual de la serie que el anterior.
Por otro lado, este modelo tiene un MAPE de 1.68. Por ello, comparando este modelo con el anterior vemos que el modelo actual 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.
Estima con la función ETS dos modelos: uno con tendencia, y otro sin tendencia.
Con tendencia
## Con tendencia ##
fit_ets_damped_trend <- ets(unemployment, damped = TRUE)
fcast_ets_damped_trend <- forecast(fit_ets_damped_trend, h = 12)
plot(fcast_ets_damped_trend)
Este modelo presenta un porcentaje absoluto de error de 1.66, sin embargo, este método sigue sin detectar la tendencia ya que el valor de beta es muy pequeño, 0.0671.
Sin tendencia
## Sin tendencia ##
fit_ets_no_trend <- ets(unemployment, model = "ZNZ")
fcast_ets_no_trend <- forecast(fit_ets_no_trend, h = 12)
plot(fcast_ets_no_trend)
Este modelo presenta un porcentaje absoluto del error de 1.92.
Ahora podemos ver la diferencia entre estimar con tendencia o sin ella. Debemos decidir con cuál nos quedamos.
En este caso, 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.