setwd("~/Documents/MSAE/Predictive Analytics")
tempdata <- read.csv("monthly_global_surface_air_temperature.csv")
#Creating Tsibble
tempdata <- tempdata %>%
mutate(Month = yearmonth(Month)) %>%
tsibble(index = Month)
training <- head(tempdata, 822)
test <- tail(tempdata, 6)
tempdata %>% autoplot()
## Plot variable not specified, automatically selected `.vars = AirTemp`
tempdata %>% gg_season(AirTemp)
ARIMA_model <- training %>%
model(ARIMA(AirTemp))
report(ARIMA_model)
## Series: AirTemp
## Model: ARIMA(1,0,1)(1,1,1)[12] w/ drift
##
## Coefficients:
## ar1 ma1 sar1 sma1 constant
## 0.9117 -0.3835 -0.0902 -0.8472 0.0013
## s.e. 0.0182 0.0403 0.0415 0.0233 0.0004
##
## sigma^2 estimated as 0.01424: log likelihood=602.85
## AIC=-1193.69 AICc=-1193.59 BIC=-1165.51
ARIMA_fcst <- ARIMA_model %>% forecast(test)
ARIMA_plot <- ARIMA_model %>% forecast(test) %>% autoplot(test) + labs(title = "ARIMA model")
ARIMA_plot
ARIMA_accuracy <- accuracy(ARIMA_fcst, test)
ARIMA_model %>% gg_tsresiduals(lag_max = 12) + labs(title = "ARIMA model")
# ETS model
ETS_model <- training %>%
model(ETS(AirTemp))
report(ETS_model)
## Series: AirTemp
## Model: ETS(A,N,A)
## Smoothing parameters:
## alpha = 0.4505226
## gamma = 0.1683865
##
## Initial states:
## l[0] s[0] s[-1] s[-2] s[-3] s[-4] s[-5] s[-6]
## 286.3821 -1.307656 -0.7903739 0.02488645 0.8770862 1.533041 1.72093 1.480633
## s[-7] s[-8] s[-9] s[-10] s[-11]
## 0.7619302 -0.2368477 -1.084362 -1.491543 -1.487725
##
## sigma^2: 0.0143
##
## AIC AICc BIC
## 2043.358 2043.954 2114.034
ETS_fcst <- ETS_model %>% forecast(test)
ETS_plot <- ETS_model %>% forecast(test) %>% autoplot(test) + labs(title = "ETS model")
ETS_plot
ETS_accuracy <- accuracy(ETS_fcst, test)
ETS_model %>% gg_tsresiduals(lag_max = 12) + labs(title="ETS Model")
#Plot
fit <- training %>%
model('ETS' = ETS(AirTemp),
'ARIMA' = ARIMA(AirTemp)
)
fcst <- fit %>% forecast(test)
fcst %>%
autoplot(test, level = NULL) +
autolayer(test)
## Plot variable not specified, automatically selected `.vars = AirTemp`
accuracy_metrics = rbind(ETS_accuracy, ARIMA_accuracy)
accuracy_metrics <- accuracy_metrics %>% arrange(RMSE)
accuracy_metrics
## # A tibble: 2 × 10
## .model .type ME RMSE MAE MPE MAPE MASE RMSSE ACF1
## <chr> <chr> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl>
## 1 ETS(AirTemp) Test -0.0390 0.0658 0.0588 -0.0135 0.0204 NaN NaN -0.211
## 2 ARIMA(AirTemp) Test 0.0719 0.0858 0.0719 0.0250 0.0250 NaN NaN -0.170