Realiza un breve análisis descriptivo numérico y gráfico. Convierte los datos en formato de serie temporal y dibuja la serie.
#Cargamos las librerías y leemos los datos
library(forecast)
library(data.table)
library(knitr)
unemp <- read.csv("C:/Users/vikij/Downloads/unemployment1.csv")
#Nombramos y convertimos (comando ts) la serie temporal
unempts <- ts(unemp, start = c(2012, 1), frequency = 12)
plot(unempts) #Graficamos la serie
boxplot(unempts ~ cycle(unempts)) #nivel de la serie
#Además, descomponemos la serie en sus componentes fundamentales
unempts_descompose = decompose(unempts)
plot(unempts_descompose, xlab='Año')
kable(summary(unempts), caption="Descriptivo")
| Unemployment | |
|---|---|
| Min. :4.400 | |
| 1st Qu.:5.100 | |
| Median :6.100 | |
| Mean :6.283 | |
| 3rd Qu.:7.450 | |
| Max. :8.800 |
Una vez trazada la serie, se puede observar que se trata de una serie que presenta una tendencia decreciente (la serie no es estacionaria en media). Mediante un diagrama de cajas se aprecia que el nivel de la serie no es muy inestable pero existen muestras de variaciones escionales, existe un crecimiento en los meses de verano, Junio, Julio y Agosto, así como en el mes de Enero. Por último, he descompuesto la serie para apreciar más claramente dicha componente estacional.
Usa la función ses del paquete forecast para obtener la predicción basada en un suavizado esponencial simple para los próximos 12 meses, y dibuja esa predicción.
# SIMPLE EXPONENTIAL SMOOTHING, ses,
predecir_ses <- ses(unempts,h=12)
plot(predecir_ses)
Como se observa en el gráfico, tras realizar el suavizado, genera una linea recta la cual no continúa con la tendencia que tenía la serie, esto nos viene a indicar que este método de suavizado no es capaz de predecir como continuará la serie, con lo cual no es el más adecuado.
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 (usa la funcion textsl{forecast}) de los próximos 12 meses, y dibuja la predicción.
#Estimamos el modelo de suavizado (usando la función ets con los parámetros por defecto)
estimar_def <- ets(unempts)
#Pasamos el modelo como input para una predicción (usando la función textsl{forecast}), h=12 (meses, periodo de predicción)
predecir_ets <- forecast(estimar_def, h=12)
#Graficamos la predicción
plot(predecir_ets)
En este caso, tras el suavizado, se conserva la forma y la tendencia que tenía la serie anteriormente.
Aunque intuitivamente vemos que este método predice mejor, vamos a comparar ambos para sacar mejores conclusiones.Una forma rápida de hacerlo es mediante el MAPE (Mean Absolute Percentage Error), este indicador nos mostrará el porcentaje de error absoluto medio.
kable(accuracy(predecir_ses))
| ME | RMSE | MAE | MPE | MAPE | MASE | ACF1 | |
|---|---|---|---|---|---|---|---|
| Training set | -0.0666443 | 0.3576879 | 0.2825753 | -1.192933 | 4.549423 | 0.36577 | 0.1087391 |
kable(accuracy(predecir_ets))
| ME | RMSE | MAE | MPE | MAPE | MASE | ACF1 | |
|---|---|---|---|---|---|---|---|
| Training set | -0.0059946 | 0.1263496 | 0.1052338 | -0.0676261 | 1.737244 | 0.1362163 | 0.0924946 |
Como resultados obtenemos un 4,55% de error promedio al realizar la predicción con el método SES frente a un 1,69% al realizarla con el método ETS. Confirmando así lo que suponiamos, que a nivel predictivo el método ETS es mejor.
Realiza un “summary” del modelo estimado en el ejercicio anterior y encuentra la estructura de la estimación. ¿Incluye esta los componentes de tendcia y estacionalidad? Si estas componentes están presentes, ¿el modelo es aditivo o multiplicativo?.
summary(estimar_def)
## ETS(M,A,M)
##
## Call:
## ets(y = unempts)
##
## 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
Como se puede apreciar en los gráficos reaizados en el ejercicio 1, ya que no se aprecia una tendencia fuerte y a que la magnitud de las fluctuaciones estacionales no varían demasiado de un año para otro y podemos describir la serie con un modelo aditivo.
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.
#1. Con tendencia #
#Creamos el primer modelo con la funcion ets
con_tendencia <- ets(unempts, damped = TRUE)
#Sacamos la predicción de éste para los próximos 12 meses.
prediccion_con <- forecast(con_tendencia, h = 12)
#Por último, dibujamos la serie con su predicción.
plot(prediccion_con)
#2. Sin tendencia #
#Creamos el primer modelo con la funcion ets
sin_tendencia <- ets(unempts, model = "ZNZ")
#Sacamos la predicción de éste para los próximos 12 meses.
prediccion_sin <- forecast(sin_tendencia, h = 12)
#Por último, dibujamos la serie con su predicción.
plot(prediccion_sin)
El primer gráfico muestra una previsión para el año siguiente, el modelo se ha estimado con tendencia, y continuará con la misma. Mientras que, al estimar un nuevo modelo sin tendencia, la previsión indica que a hacia la mitad de estos 12 meses, se dará un crecimiento.