For the same data set used in previous weeks, build GARCH models using either the fGarch or other packages. Compare this model to others you have produced.

Exports = read.csv("/Users/austin/Desktop/Graduate\ School\ /Boston\ College/Spring\ Semster\ 2021/Predictive\ Analytics/Discussions/Week\ 5/EXPCH.csv")
  Exports$DATE = as.Date(Exports$DATE)
  #mutate(DATE = ymd(DATE)) %>%
  #filter(DATE < ymd("2021-02-01")) %>%
  #filter(DATE > ymd("2010-12-01"))
  #as.numeric(Exports$EXPCH)
head(Exports)
##         DATE    EXPCH
## 1 2011-01-01 8017.792
## 2 2011-02-01 8383.310
## 3 2011-03-01 9563.728
## 4 2011-04-01 8000.503
## 5 2011-05-01 7849.159
## 6 2011-06-01 7867.005
Exports.ts = ts(Exports$EXPCH, start = 2011, frequency = 12)
Exports.train = ts(Exports.ts[1:96], start = 2011, frequency = 12)
Exports.test = ts(Exports.ts[97:108], start = 2019, frequency = 12) # 12 month test set
#ARIMA 
ARIMA.model = auto.arima(Exports.train)
ARIMA.forecast = forecast(ARIMA.model, h = 6)
summary(ARIMA.model)
## Series: Exports.train 
## ARIMA(1,0,1)(2,1,0)[12] 
## 
## Coefficients:
##          ar1      ma1     sar1     sar2
##       0.9043  -0.2712  -0.4521  -0.5868
## s.e.  0.0742   0.1225   0.1305   0.1086
## 
## sigma^2 estimated as 446147:  log likelihood=-669.5
## AIC=1349.01   AICc=1349.78   BIC=1361.16
## 
## Training set error measures:
##                    ME     RMSE      MAE        MPE     MAPE      MASE
## Training set 14.37101 609.7452 411.1334 -0.0658889 4.065455 0.4346528
##                      ACF1
## Training set 0.0009948225
ARIMA.accuracy = accuracy(ARIMA.forecast, Exports.test)
print(ARIMA.accuracy)
##                     ME      RMSE      MAE        MPE      MAPE      MASE
## Training set  14.37101  609.7452 411.1334 -0.0658889  4.065455 0.4346528
## Test set     926.94125 1072.3885 926.9413 10.3792188 10.379219 0.9799681
##                       ACF1 Theil's U
## Training set  0.0009948225        NA
## Test set     -0.4521112429 0.7387849
#Graph the results
autoplot(Exports.ts) +
  autolayer(ARIMA.forecast, series = "ARIMA Forecast") +
  autolayer(Exports.test, series = "Actual Exports")

#ETS 
ETS.model = ets(Exports.train)
ETS.forecast = forecast(ETS.model, h = 6)
summary(ETS.model)
## ETS(M,N,M) 
## 
## Call:
##  ets(y = Exports.train) 
## 
##   Smoothing parameters:
##     alpha = 0.8134 
##     gamma = 1e-04 
## 
##   Initial states:
##     l = 9556.3797 
##     s = 1.1397 1.144 1.1833 0.9624 0.9553 0.9431
##            0.9443 0.9266 0.9278 1.0265 0.9156 0.9314
## 
##   sigma:  0.0599
## 
##      AIC     AICc      BIC 
## 1676.000 1682.000 1714.465 
## 
## Training set error measures:
##                     ME     RMSE      MAE        MPE     MAPE      MASE
## Training set -17.79156 579.8764 409.1125 -0.4203422 4.153539 0.4325163
##                     ACF1
## Training set -0.03325864
ETS.accuracy = accuracy(ETS.forecast, Exports.test)
print(ETS.accuracy)
##                      ME      RMSE       MAE        MPE      MAPE      MASE
## Training set  -17.79156  579.8764  409.1125 -0.4203422  4.153539 0.4325163
## Test set     1078.28944 1399.8261 1195.5418 11.3572343 13.007484 1.2639343
##                     ACF1 Theil's U
## Training set -0.03325864        NA
## Test set     -0.16782232 0.9273272
#Graph the results
autoplot(Exports.ts) +
  autolayer(ETS.forecast, series = "ETS Forecast") +
  autolayer(Exports.test, series = "Actual Exports")

#Garch 
spec = ugarchspec()
Garch.model = ugarchfit(Exports.train, spec = spec)
## Warning in .sgarchfit(spec = spec, data = data, out.sample = out.sample, : 
## ugarchfit-->waring: using less than 100 data
##  points for estimation
summary(Garch.model)
##    Length     Class      Mode 
##         1 uGARCHfit        S4
Garch.forecast = ugarchforecast(Garch.model, n.ahead = 6)


#Graph the results
Plot.Garch = ts(fitted(Garch.forecast), start = c(2019), frequency = 12)

autoplot(Exports.ts) +
  autolayer(Plot.Garch, series = "Garch Forecast") +
  autolayer(Exports.test, series = "Actual Exports")

accuracy(Plot.Garch,Exports.test)
##                 ME     RMSE      MAE       MPE     MAPE       ACF1 Theil's U
## Test set -954.0523 1428.398 1274.983 -12.75924 15.79406 -0.2910862 0.6820167