The forecasts from all the original participating methods in the M3 forecasting competition.
Format
M3Forecast is a list of data.frames. Each list element is the result of one forecasting method. The data.frame then has the following structure: Each row is the forecast of one series. Rows are named accordingly. In total there are 18 columns, i.e., 18 forecasts. If fewer forecasts than 18 exist, the row is filled up with NA values.
References
Makridakis and Hibon (2000) The M3-competition: results, conclusions and implications. International Journal of Forecasting, 16, 451-476.
Examples
M3Forecast[["NAIVE2"]][1,]
#> V1 V2 V3 V4 V5 V6 V7 V8 V9 V10 V11 V12 V13
#> N0001 4936.99 4936.99 4936.99 4936.99 4936.99 4936.99 NA NA NA NA NA NA NA
#> V14 V15 V16 V17 V18
#> N0001 NA NA NA NA NA
if (FALSE) {
# calculate errors using the accuracy function
# from the forecast package
errors <- lapply(M3Forecast, function(f) {
res <- NULL
for(x in 1:length(M3)) {
curr_f <- unlist(f[x,])
if(any(!is.na(curr_f))) {
curr_res <- accuracy(curr_f, M3[[x]]$xx)
} else {
# if no results are available create NA results
curr_res <- accuracy(M3[[x]]$xx, M3[[x]]$xx)
curr_res <- rep(NA, length(curr_res))
}
res <- rbind(res, curr_res)
}
rownames(res) <- NULL
res
})
ind_yearly <- which(unlist(lapply(M3, function(x) {x$period == "YEARLY"})))
ind_quarterly <- which(unlist(lapply(M3, function(x) {x$period == "QUARTERLY"})))
ind_monthly <- which(unlist(lapply(M3, function(x) {x$period == "MONTHLY"})))
ind_other <- which(unlist(lapply(M3, function(x) {x$period == "OTHER"})))
yearly_errors <- t(as.data.frame(lapply(errors, function(x) {colMeans(x[ind_yearly,])})))
quarterly_errors <- t(as.data.frame(lapply(errors, function(x) {colMeans(x[ind_quarterly,])})))
monthly_errors <- t(as.data.frame(lapply(errors, function(x) {colMeans(x[ind_monthly,])})))
other_errors <- t(as.data.frame(lapply(errors, function(x) {colMeans(x[ind_other,])})))
yearly_errors
quarterly_errors
monthly_errors
other_errors
}