## Libraries
library(fastDummies)
library(lubridate)
## 
## Attaching package: 'lubridate'
## The following objects are masked from 'package:base':
## 
##     date, intersect, setdiff, union
library(caret)
## Loading required package: ggplot2
## Loading required package: lattice
library(generics)
## 
## Attaching package: 'generics'
## The following object is masked from 'package:caret':
## 
##     train
## The following object is masked from 'package:lubridate':
## 
##     as.difftime
## The following objects are masked from 'package:base':
## 
##     as.difftime, as.factor, as.ordered, intersect, is.element, setdiff,
##     setequal, union
library(tsibble)
## 
## Attaching package: 'tsibble'
## The following object is masked from 'package:lubridate':
## 
##     interval
## The following objects are masked from 'package:base':
## 
##     intersect, setdiff, union
library(dplyr)
## 
## Attaching package: 'dplyr'
## The following object is masked from 'package:generics':
## 
##     explain
## The following objects are masked from 'package:stats':
## 
##     filter, lag
## The following objects are masked from 'package:base':
## 
##     intersect, setdiff, setequal, union
library(fpp3)
## ── Attaching packages ──────────────────────────────────────────── fpp3 0.4.0 ──
## ✓ tibble      3.1.6     ✓ feasts      0.2.2
## ✓ tidyr       1.2.0     ✓ fable       0.3.1
## ✓ tsibbledata 0.4.0
## ── Conflicts ───────────────────────────────────────────────── fpp3_conflicts ──
## x lubridate::date()    masks base::date()
## x dplyr::filter()      masks stats::filter()
## x tsibble::intersect() masks generics::intersect(), base::intersect()
## x tsibble::interval()  masks lubridate::interval()
## x dplyr::lag()         masks stats::lag()
## x fabletools::MAE()    masks caret::MAE()
## x fabletools::RMSE()   masks caret::RMSE()
## x tsibble::setdiff()   masks generics::setdiff(), base::setdiff()
## x tsibble::union()     masks generics::union(), base::union()
library(modeest)
library(forecast)
## Registered S3 method overwritten by 'quantmod':
##   method            from
##   as.zoo.data.frame zoo
## Registered S3 method overwritten by 'forecast':
##   method          from  
##   predict.default statip
## 
## Attaching package: 'forecast'
## The following object is masked from 'package:modeest':
## 
##     naive
## The following objects are masked from 'package:generics':
## 
##     accuracy, forecast
library(latex2exp)
library(seasonal)
## 
## Attaching package: 'seasonal'
## The following object is masked from 'package:tibble':
## 
##     view
## Data Set
data <- read.csv("//Users//kevinclifford//Downloads//Alcohol_Sales.csv", header=TRUE)

data$Sales <- data$S4248SM144NCEN
data$S4248SM144NCEN <- NULL
ts <- ts(data$Sales, frequency = 12, start=c(1992))

plot(ts)

## ETS Models
fit1 <- ets(ts)
fit1
## ETS(M,Ad,M) 
## 
## Call:
##  ets(y = ts) 
## 
##   Smoothing parameters:
##     alpha = 0.0805 
##     beta  = 0.0232 
##     gamma = 1e-04 
##     phi   = 0.9592 
## 
##   Initial states:
##     l = 4199.083 
##     b = 3.4466 
##     s = 1.1642 1.0362 1.0338 0.9829 1.0534 1.0081
##            1.106 1.0665 0.9754 0.9758 0.8275 0.7702
## 
##   sigma:  0.0455
## 
##      AIC     AICc      BIC 
## 5672.314 5674.549 5740.422
plot(fit1)

accuracy(fit1)
##                    ME     RMSE      MAE       MPE     MAPE      MASE       ACF1
## Training set 53.45892 364.3906 285.5164 0.5004852 3.657119 0.6753521 -0.2918586
fit2 <- ets(ts, model = "MMN")
fit2
## ETS(M,M,N) 
## 
## Call:
##  ets(y = ts, model = "MMN") 
## 
##   Smoothing parameters:
##     alpha = 0.0483 
##     beta  = 1e-04 
## 
##   Initial states:
##     l = 3867.483 
##     b = 1.0038 
## 
##   sigma:  0.1167
## 
##      AIC     AICc      BIC 
## 6279.935 6280.123 6298.854
plot(fit2)

accuracy(fit2)
##                     ME     RMSE      MAE       MPE     MAPE    MASE       ACF1
## Training set -18.07675 984.4089 718.7374 -1.472371 9.635964 1.70008 0.04005326
fit3 <- ets(ts, model= "AAN")
fit3
## ETS(A,A,N) 
## 
## Call:
##  ets(y = ts, model = "AAN") 
## 
##   Smoothing parameters:
##     alpha = 0.0021 
##     beta  = 0.0021 
## 
##   Initial states:
##     l = 3947.0438 
##     b = 5.8871 
## 
##   sigma:  984.0213
## 
##      AIC     AICc      BIC 
## 6365.289 6365.477 6384.208
plot(fit3)

accuracy(fit3)
##                    ME     RMSE      MAE        MPE     MAPE     MASE       ACF1
## Training set 74.85369 977.9471 737.7172 -0.3414784 9.806208 1.744974 0.06439954
fe <- forecast(fit1, 12)
acc <- accuracy(fe, data$Sales[1:12])
acc
##                       ME      RMSE       MAE          MPE       MAPE      MASE
## Training set    53.45892  364.3906  285.5164    0.5004852   3.657119  0.312568
## Test set     -9484.70207 9600.8980 9484.7021 -228.2510458 228.251046 10.383342
##                    ACF1
## Training set -0.2918586
## Test set             NA
plot(fe, main="MMN")