require("fpp2")
## Loading required package: fpp2
## Warning: package 'fpp2' was built under R version 3.4.4
## Loading required package: ggplot2
## Loading required package: forecast
## Warning: package 'forecast' was built under R version 3.4.4
## Loading required package: fma
## Loading required package: expsmooth
library(fpp2)
setwd("/Users/brendanobrien/Downloads")
BOS.data=read.csv("/Users/brendanobrien/Downloads/monthly-boston-armed-robberies-j.csv", header = T)
BOS.data$Month = NULL
BOS.ts<- ts(data = BOS.data, start = c(1966,1), end = c(1975,10), frequency = 12, ts.eps = getOption("ts.eps"), class ="ts")
as.ts(BOS.ts)
## Jan Feb Mar Apr May Jun Jul Aug Sep Oct Nov Dec
## 1966 41 39 50 40 43 38 44 35 39 35 29 49
## 1967 50 59 63 32 39 47 53 60 57 52 70 90
## 1968 74 62 55 84 94 70 108 139 120 97 126 149
## 1969 158 124 140 109 114 77 120 133 110 92 97 78
## 1970 99 107 112 90 98 125 155 190 236 189 174 178
## 1971 136 161 171 149 184 155 276 224 213 279 268 287
## 1972 238 213 257 293 212 246 353 339 308 247 257 322
## 1973 298 273 312 249 286 279 309 401 309 328 353 354
## 1974 327 324 285 243 241 287 355 460 364 487 452 391
## 1975 500 451 375 372 302 316 398 394 431 431
str(BOS.ts)
## Time-Series [1:118] from 1966 to 1976: 41 39 50 40 43 38 44 35 39 35 ...
#variability increases over time
plot(BOS.ts)

seasonplot(BOS.ts, col = seq(1:109), main = "Season Plot", year.labels = TRUE)

BOS.ets <- ets(BOS.ts)
summary(BOS.ets)
## ETS(M,A,M)
##
## Call:
## ets(y = BOS.ts)
##
## Smoothing parameters:
## alpha = 0.5602
## beta = 1e-04
## gamma = 1e-04
##
## Initial states:
## l = 35.2503
## b = 2.6283
## s = 1.1161 1.0213 1.0058 1.0534 1.1793 1.0679
## 0.8226 0.8787 0.8578 0.988 0.9697 1.0394
##
## sigma: 0.178
##
## AIC AICc BIC
## 1358.263 1364.383 1405.365
##
## Training set error measures:
## ME RMSE MAE MPE MAPE MASE
## Training set 0.8429871 32.76421 23.26007 -2.485931 13.58244 0.4403586
## ACF1
## Training set -0.1596109
plot(forecast((BOS.ets), h = 14), xlab = "Year", ylab = "A-R")

BOS.ets2 <- ets(BOS.ts, model = "MAN")
summary(BOS.ets2)
## ETS(M,A,N)
##
## Call:
## ets(y = BOS.ts, model = "MAN")
##
## Smoothing parameters:
## alpha = 0.6354
## beta = 1e-04
##
## Initial states:
## l = 43.7709
## b = 2.7402
##
## sigma: 0.199
##
## AIC AICc BIC
## 1374.755 1375.291 1388.608
##
## Training set error measures:
## ME RMSE MAE MPE MAPE MASE
## Training set 0.7948842 38.82547 28.32731 -3.450859 16.47059 0.5362912
## ACF1
## Training set 0.03327989
plot(forecast((BOS.ets2), h = 14), xlab = "Year", ylab = "A-R")

BOS.ets3 <- ets(BOS.ts, model = "MMM")
summary(BOS.ets3)
## ETS(M,M,M)
##
## Call:
## ets(y = BOS.ts, model = "MMM")
##
## Smoothing parameters:
## alpha = 0.5646
## beta = 2e-04
## gamma = 1e-04
##
## Initial states:
## l = 38.4311
## b = 1.0229
## s = 1.1305 1.0111 0.9992 1.0582 1.1723 1.0953
## 0.8278 0.8736 0.8626 0.9785 0.9622 1.0287
##
## sigma: 0.18
##
## AIC AICc BIC
## 1360.918 1367.038 1408.020
##
## Training set error measures:
## ME RMSE MAE MPE MAPE MASE
## Training set -2.352028 33.82083 23.67282 -2.476002 13.37398 0.4481726
## ACF1
## Training set -0.1453586
plot(forecast((BOS.ets3), h = 14), xlab = "Year", ylab = "A-R")

#according to AIC and RMSE metrics, the first ETS model using "MAM" was the best moedel
BOS.forecast <- forecast((BOS.ets), h = 14)
forecasted.BOS <- as.numeric(BOS.forecast$mean)
forecasted.BOS
## [1] 422.6540 464.8401 435.6426 408.9856 419.3271 366.3357 377.5530
## [8] 355.6355 464.5082 516.0244 463.7390 445.4265 455.0097 500.1998