The forecasts from all the original participating methods in the M3 forecasting competition.



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.



Makridakis and Hibon (2000) The M3-competition: results, conclusions and implications. International Journal of Forecasting, 16, 451-476.


#> 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
# NOT RUN { # 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(! { 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(, function(x) {colMeans(x[ind_yearly,])}))) quarterly_errors <- t(, function(x) {colMeans(x[ind_quarterly,])}))) monthly_errors <- t(, function(x) {colMeans(x[ind_monthly,])}))) other_errors <- t(, function(x) {colMeans(x[ind_other,])}))) yearly_errors quarterly_errors monthly_errors other_errors # }