library(readxl)
library(fpp2)
## Loading required package: ggplot2
## Loading required package: forecast
## Registered S3 method overwritten by 'xts':
##   method     from
##   as.zoo.xts zoo
## Registered S3 method overwritten by 'quantmod':
##   method            from
##   as.zoo.data.frame zoo
## Registered S3 methods overwritten by 'forecast':
##   method             from    
##   fitted.fracdiff    fracdiff
##   residuals.fracdiff fracdiff
## Loading required package: fma
## Loading required package: expsmooth
library(forecast)
#Loading Data
mydata <- read_excel("C:/Users/Joseph/Downloads/UNRATENSA.xls")
# Convert to TS using tsclean and ts

myTS <- tsclean(ts(data=mydata$UNRATENSA,end=c(2019,6,1), start=c(1948,1,1), frequency = 12))
autoplot(myTS)+
 ylab('Income Gini') + xlab('date')

autoplot(decompose(myTS)) 

#Relying on ets to automatically select type of model
fit1 <- ets(myTS, model = "ZZZ", damped = T, lambda = F)
fit1
## ETS(A,Ad,A) 
## 
## Call:
##  ets(y = myTS, model = "ZZZ", damped = T, lambda = F) 
## 
##   Box-Cox transformation: lambda= 0 
## 
##   Smoothing parameters:
##     alpha = 0.686 
##     beta  = 0.0536 
##     gamma = 0.314 
##     phi   = 0.8001 
## 
##   Initial states:
##     l = 1.0525 
##     b = 0.1477 
##     s = -0.0919 -0.106 -0.2168 -0.1123 -0.0703 -0.0305
##            -0.0105 -0.0808 0.0361 0.1917 0.2813 0.2099
## 
##   sigma:  0.052
## 
##      AIC     AICc      BIC 
## 739.4239 740.2392 825.0068
autoplot(forecast(fit1, h= 12))+
 xlab('Year') + ylab('Unemployment Rate')

#Box-Cox transformation leads to lower predictive ability
fit2 <- ets(myTS, model = 'ZZZ', damped = T, lambda = T)
fit2
## ETS(A,Ad,A) 
## 
## Call:
##  ets(y = myTS, model = "ZZZ", damped = T, lambda = T) 
## 
##   Box-Cox transformation: lambda= 1 
## 
##   Smoothing parameters:
##     alpha = 0.9025 
##     beta  = 0.1116 
##     gamma = 0.0952 
##     phi   = 0.8006 
## 
##   Initial states:
##     l = 1.097 
##     b = 0.9922 
##     s = -0.5086 -0.5898 -0.7276 -0.3935 -0.158 0.3062
##            0.2218 -0.1191 0.1474 0.3793 0.7998 0.6421
## 
##   sigma:  0.2489
## 
##      AIC     AICc      BIC 
## 3427.614 3428.429 3513.197
autoplot(forecast(fit2, h=12))+
 xlab('Year') + ylab('Unemployment Rate')

#ETS(ANN)
fit3 <- ets(myTS, model = 'ZNN')
fit3
## ETS(A,N,N) 
## 
## Call:
##  ets(y = myTS, model = "ZNN") 
## 
##   Smoothing parameters:
##     alpha = 0.9999 
## 
##   Initial states:
##     l = 3.9984 
## 
##   sigma:  0.4643
## 
##      AIC     AICc      BIC 
## 4483.036 4483.065 4497.300
autoplot(forecast(fit3, h=12))+
 xlab('Year') + ylab('Unemployment Rate')

#ETS(AAA) allowing for mulitiplicative trends
fit4 <- ets(myTS, model = 'ZZZ', allow.multiplicative.trend = T)
fit4
## ETS(A,Ad,A) 
## 
## Call:
##  ets(y = myTS, model = "ZZZ", allow.multiplicative.trend = T) 
## 
##   Smoothing parameters:
##     alpha = 0.911 
##     beta  = 0.1355 
##     gamma = 0.0889 
##     phi   = 0.8302 
## 
##   Initial states:
##     l = 2.6225 
##     b = 0.1075 
##     s = -0.4524 -0.5422 -0.7543 -0.4454 -0.1644 0.3241
##            0.4376 -0.09 0.0855 0.41 0.6677 0.5238
## 
##   sigma:  0.2453
## 
##      AIC     AICc      BIC 
## 3403.016 3403.832 3488.599
autoplot(forecast(fit4, h=12))+
 xlab('Year') + ylab('Unemployment Rate')

#It is clear that the automatically selected model based on the model
# selection criteria will have the highest performance based on these
# metrics.The model that is automatically selected is the Additive model,
# This is likely due to the fact that there is no change in the seasonal
# trend over time.