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.