Skip to contents

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

Usage

M3Forecast

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.

Author

Christoph Bergmeir and Rob Hyndman

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
}