setwd("F:/Analisis estadistico de series economicas/Blog")
Realiza un breve análisis descriptivo numérico y gráfico. Convierte los datos en formato de serie temporal y dibuja la serie.
#Principalmente leemos los datos, llamamos unempl al vector de datos que crea la serie temporal y la representamos.
datos<-scan("https://www.r-exercises.com/wp-content/uploads/2017/04/unemployment.csv", skip=1)
unempl <- ts(datos, start = c(2012, 1), frequency = 12)
plot(unempl)
#Analizamos por separado, según el método aditivo o multiplicativo, si los datos tienen tendencia y estacionalidad.
decompose_unempl = decompose(unempl, "additive")
plot(decompose_unempl)
decompose_unempl = decompose(unempl, "multiplicative")
plot(decompose_unempl)
La serie temporal es una serie con estacionalidad y con tendencia decreciente.
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.
#Instalamos el paquete forecast
library(forecast)
## Warning: package 'forecast' was built under R version 3.4.3
f_ses <- ses(unempl, h = 12)
plot(f_ses)
La función SES, Suavizado Exponencial Simple, es un tipo de promedio ponderado que estima el valor futuro en función del pronóstico anterior más un porcentaje del error pronosticado. Este método sirve para series planas sin estacionalidad, no dependen de factores externos. Oberservando el gráfico resultante, se proyecta una línea recta y esto significa que en el intervalo de confianza, al principio, sí acertará en las predicciones pero posteriormente no sabrá como continuará la serie.
#Hacemos un resumen del modelo de suavizado exponencial simple.
summary(f_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
Obtenemos un alpha = 0.9999, como es cercana a 1, significa que para predecir con la mayor exactitud posible, vamos a tener en cuenta lo ocurrido con anterioridad.
#Resumimos la precisión del pronóstico.
accuracy(f_ses)
## 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
–> MAPE (Mean Absolute Percentage Error): Es el porcenaje del error absoluto medio. MAPE = 4.552993.Es el porcenaje de error de la predicción respecto de los datos reales que estamos tratando.
–> MPE (MEAN PORCENTAGE ERROR) = -1.197171
–> ME (Mean Error) = -0.06701777
–> RMSE (Root Mean Squared Error) =0.3576975
–> MAE (Error Mean Absolute Error) = 0.2828898
–> MASE (Mean Absolute Scaled Error) = 0.3661772
–> ACF1 (Autocorrelation of errors at lag 1) = 0.1088765
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 lso próximos 12 meses, y dibuja la predicción.
La función ets puede adoptar un enfoque completamente general, elije automáticamente el método más efectivo para un determinado conjunto de datos.
#Estimamos un modelo de suavizado exponencial usando la función ets con los parámetros por defecto.
fit_ets_default <- ets(unempl)
#Luego pasamos el modelo como input para una predicción (usando la función textsl{forecast}) para los próximos 12 meses.
fcast_ets_default <- forecast(fit_ets_default, h = 12)
#Finalmente dibujamos la predicción con la función plot.
plot(fcast_ets_default)
En este gráfico podemos observa que, tras realizar el suavizado,conservamos la misma forma que ya tenía.
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(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
Y obtenemos como resultado…
#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
Concluyendo, podemos decir que el modelo tiene errores, tendencia y estacionalidad. Los componentes estacionales son multiplicativos y el componente de tendencia es 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.
#### CON TENDENCIA ####
#Creamos el primer modelo con la funcion ets con tendencia y la llamamos fit_ets_damped_trend.
fit_ets_damped_trend <- ets(unempl, damped = TRUE)
#Sacamos la predicción de éste para los próximos 12 meses.
fcast_ets_damped_trend <- forecast(fit_ets_damped_trend, h = 12)
#Por último, dibujamos la serie con su predicción.
plot(fcast_ets_damped_trend)
Esta gráfica muestra la predicción para el 2018 de la serie temporal con tendencia. Podemos decir que seguirá la misma tendencia que seguía hasta el momento, siendo ésta decreciente.
#### SIN TENDENCIA ####
#Creamos el primer modelo con la funcion ets sin tendencia y la llamamos fit_ets_no_trend.
fit_ets_no_trend <- ets(unempl, model = "ZNZ")
#Sacamos la predicción de éste para los próximos 12 meses.
fcast_ets_no_trend <- forecast(fit_ets_no_trend, h = 12)
#Por último, dibujamos la serie con su predicción.
plot(fcast_ets_no_trend)
Esta gráfica muestra la predicción para el 2018 de las serie temporal sin tendencia, podemos observar como se rompe dicha tenedencia ya que ahora la serie parece que comienza a crecer y no es decreciente como hasta el momento.