Import Datasets
setwd("~/Documents/MSAE/Predictive Analytics")
energydata <- read.csv("ENERGY_BILL.csv")
Creating Tsibble
energydata <- energydata %>%
mutate(Month = yearmonth(Month)) %>%
tsibble(index = Month)
Training Set (2000-2012) & Test Set (2013-2016)
training <- energydata %>%
filter(year(Month) < 2013)
test <- energydata %>%
filter(year(Month) > 2012)
Classical Decomposition
# training %>%
# model(classical_decomposition(Invoice, type = "additive")) %>%
# components() %>%
# autoplot()
training %>%
model(classical_decomposition(Invoice, type = "multiplicative")) %>%
components() %>%
autoplot() +
labs(title ="Multiplicative Decomposition")
## Warning: Removed 6 rows containing missing values (`geom_line()`).

Auto ETS
ets_auto = training %>%
model(ETS(Invoice))
report(ets_auto)
## Series: Invoice
## Model: ETS(M,N,M)
## Smoothing parameters:
## alpha = 0.1750898
## gamma = 0.0001101634
##
## Initial states:
## l[0] s[0] s[-1] s[-2] s[-3] s[-4] s[-5] s[-6]
## 94.491 0.6372401 0.8044204 1.218123 1.470163 1.586314 1.533305 1.045628
## s[-7] s[-8] s[-9] s[-10] s[-11]
## 0.6951536 0.708991 0.8773018 0.7380101 0.6853498
##
## sigma^2: 0.0114
##
## AIC AICc BIC
## 1494.091 1497.520 1539.839
ANN
fit_ANN <- training %>%
model(ETS(Invoice ~ error("A") + trend("N") + season("N")))
report(fit_ANN)
## Series: Invoice
## Model: ETS(A,N,N)
## Smoothing parameters:
## alpha = 0.9999
##
## Initial states:
## l[0]
## 55.3252
##
## sigma^2: 651.3436
##
## AIC AICc BIC
## 1802.494 1802.652 1811.644
MAM
fit_MAM <- training %>%
model(ETS(Invoice ~ error("M") + trend("A") + season("M")))
report(fit_MAM)
## Series: Invoice
## Model: ETS(M,A,M)
## Smoothing parameters:
## alpha = 0.1740911
## beta = 0.002379536
## gamma = 0.0001602308
##
## Initial states:
## l[0] b[0] s[0] s[-1] s[-2] s[-3] s[-4] s[-5]
## 93.89049 0.1923745 0.6417322 0.8025718 1.239336 1.421435 1.577418 1.559019
## s[-6] s[-7] s[-8] s[-9] s[-10] s[-11]
## 1.053287 0.7043064 0.7080554 0.8746414 0.7399429 0.6782553
##
## sigma^2: 0.0115
##
## AIC AICc BIC
## 1499.498 1503.933 1551.345
MNM
fit_MNM <- training %>%
model(ETS(Invoice ~ error("M") + trend("N") + season("M")))
report(fit_MNM)
## Series: Invoice
## Model: ETS(M,N,M)
## Smoothing parameters:
## alpha = 0.1750898
## gamma = 0.0001101634
##
## Initial states:
## l[0] s[0] s[-1] s[-2] s[-3] s[-4] s[-5] s[-6]
## 94.491 0.6372401 0.8044204 1.218123 1.470163 1.586314 1.533305 1.045628
## s[-7] s[-8] s[-9] s[-10] s[-11]
## 0.6951536 0.708991 0.8773018 0.7380101 0.6853498
##
## sigma^2: 0.0114
##
## AIC AICc BIC
## 1494.091 1497.520 1539.839
components(fit_MAM) %>%
autoplot()
## Warning: Removed 12 rows containing missing values (`geom_line()`).

augment(fit_MNM) %>% autoplot(.innov)

MAdM
fit_MAdM <- training %>%
model(ETS(Invoice ~ error("M") + trend("Ad") + season("M")))
report(fit_MAdM)
## Series: Invoice
## Model: ETS(M,Ad,M)
## Smoothing parameters:
## alpha = 0.196201
## beta = 0.001629913
## gamma = 0.0001209931
## phi = 0.979966
##
## Initial states:
## l[0] b[0] s[0] s[-1] s[-2] s[-3] s[-4] s[-5]
## 92.02809 0.2948465 0.6347478 0.7997201 1.235634 1.442742 1.571952 1.548123
## s[-6] s[-7] s[-8] s[-9] s[-10] s[-11]
## 1.058653 0.7022054 0.7188107 0.8770077 0.7387544 0.6716492
##
## sigma^2: 0.0115
##
## AIC AICc BIC
## 1499.633 1504.626 1554.530
AAA
fit_AAA <- training %>%
model(ETS(Invoice ~ error("A") + trend("A") + season("A")))
report(fit_AAA)
## Series: Invoice
## Model: ETS(A,A,A)
## Smoothing parameters:
## alpha = 0.1049032
## beta = 0.0001000803
## gamma = 0.0001001949
##
## Initial states:
## l[0] b[0] s[0] s[-1] s[-2] s[-3] s[-4] s[-5]
## 96.19013 -0.1276873 -32.47107 -18.97218 21.20725 39.16519 53.29404 50.74027
## s[-6] s[-7] s[-8] s[-9] s[-10] s[-11]
## 4.27698 -27.08083 -25.59006 -10.60247 -24.16347 -29.80366
##
## sigma^2: 131.196
##
## AIC AICc BIC
## 1565.660 1570.095 1617.508
Forecasting & Plot
MNM_fcst <- fit_MNM %>% forecast(test)
MAM_fcst <- fit_MNM %>% forecast(test)
MNM_plot <- fit_MNM %>% forecast(energydata) %>% autoplot(energydata)
MAM_plot <- fit_MAM %>% forecast(energydata) %>% autoplot(energydata)
Accuracy Metrics
accuracy(MAM_fcst, training)
## Warning: The future dataset is incomplete, incomplete out-of-sample data will be treated as missing.
## 39 observations are missing between 2013 Jan and 2016 Mar
## # A tibble: 1 × 10
## .model .type ME RMSE MAE MPE MAPE MASE RMSSE ACF1
## <chr> <chr> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl>
## 1 "ETS(Invoice ~ error(\"… Test NaN NaN NaN NaN NaN NaN NaN NA
accuracy(MAM_fcst, test)
## # A tibble: 1 × 10
## .model .type ME RMSE MAE MPE MAPE MASE RMSSE ACF1
## <chr> <chr> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl>
## 1 "ETS(Invoice ~ error(\"… Test 1.71 7.69 5.98 1.38 7.86 NaN NaN 0.490
accuracy(MAM_fcst, energydata)
## # A tibble: 1 × 10
## .model .type ME RMSE MAE MPE MAPE MASE RMSSE ACF1
## <chr> <chr> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl>
## 1 "ETS(Invoice ~ error(\"… Test 1.71 7.69 5.98 1.38 7.86 0.594 0.500 0.490