Добавление функций прогнозирования thief и mlp.thief вcast.gts (например, fmethod = c ("ets", "arima", "rw", "thief", "mlp.thief", "elm.thief"))? - PullRequest
0 голосов
/ 07 октября 2019

У меня есть иерархические данные. Данные имеют следующие уровни (сверху вниз):

  1. Производственные мощности
  2. Промышленность
  3. Заказчик
  4. Группа продуктов
  5. SKU

Я прогнозирую с использованием r библиотеки hts. Для повышения точности я хотел бы использовать библиотеку thief (также функции nnfor::mlp.thief и nnfor::elm.thief). Я добавил эти функции в forecast.hts() следующим образом:

loopfn <- function(x, ...) {
    out <- list()
    if (is.null(FUN)) {
      if (fmethod == "ets") {
        models <- forecast::ets(x, lambda = lambda, ...)
        out$pfcasts <- forecast::forecast(models, h = h, PI = FALSE)$mean
      } else if (fmethod == "arima") {


        models <- forecast::auto.arima(x, lambda = lambda, xreg = xreg,
                             parallel = FALSE, ...)
        out$pfcasts <- forecast::forecast(models, h = h, xreg = newxreg)$mean


      } else if (fmethod == "rw") {
        models <- forecast::rwf(x, h = h, lambda = lambda, ...)
        out$pfcasts <- models$mean
      } else if (fmethod == "thief"){

        models <- thief::thief(x, h = h , usemodel = usemodel, ...)
        out$pfcasts <- models$mean
      }else if (fmethod == "mlp.thief"){

        models <- nnfor::mlp.thief(x, h = h , ...)
        out$pfcasts <- models$mean
      } else if (fmethod == "elm.thief"){

        models <- nnfor::elm.thief(x, h = h , ...)
        out$pfcasts <- models$mean
      }


    } else { # user defined function to produce point forecasts
      models <- FUN(x, ...)
      if (is.null(newxreg)) {
        out$pfcasts <- forecast(models, h = h)$mean
      } else {
        out$pfcasts <- forecast(models, h = h, xreg = newxreg)$mean
      }
    }
    if (keep.fitted) {
      out$fitted <- stats::fitted(models)
    }
    if (keep.resid) {
      out$resid <- stats::residuals(models)
    }
    return(out)
  }

Будет ли какая-либо теоретическая проблема для этого? Фактически, это повышает точность прогноза.

Учитывая следующую литературу, я не вижу никаких проблем, хотя Hyndman et.al. 2017 и Hyndman et.al. 2011

1 Ответ

0 голосов
/ 10 октября 2019

Я мог бы использовать любую функцию с аргументом FUN = Функция должна быть объектом прогноза.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...