【问题标题】:How to use tsCV() with MAPA?如何将 tsCV() 与 MAPA 一起使用?
【发布时间】:2021-04-07 05:29:03
【问题描述】:

我想将 tsCV() 与多重聚合预测算法 (MAPA) 和 ETS 一起使用,当我尝试运行以下代码时,所有 e2 返回都是 NA 值。我不知道是我写错了语句还是它不能与 mapa() 一起工作?

 fets <- function(y,h) {
    forecast(ets(y), h = 8)
  }
 fmapa <- function(y,fh) {
    mapa(y, fh = 8, conf.lvl=c(0.8,0.95))
  }

 e1 <- tsCV(yt, fets, h=8)
 e2 <- tsCV(yt, fmapa, h=8)

【问题讨论】:

    标签: r model time-series cross-validation


    【解决方案1】:

    这里有两个问题。

    1. 预测函数必须返回forecast 类的对象。请参阅tsCV() 的帮助文件。 MAPA 包不返回 forecast 对象,因此您需要从输出中创建它。事实上,这里唯一真正重要的是该对象是一个列表,其中包含一个名为 mean 的元素,其中包含预测。

    2. 预测函数必须有一个参数h 描述预测范围的数量。将其重命名为fh 会导致问题。

    一个不太严重的问题是,函数中的 hfh 参数在函数体中覆盖它们时会被完全忽略。

    这是一个有效的例子。

    library(MAPA)
    
    fets <- function(y, h = 8) {
      forecast(ets(y), h = h)
    }
    fmapa <- function(y, h = 8) {
      result <- mapa(y, fh = h, conf.lvl = c(0.8, 0.95))
      list(mean = result$outfor)
    }
    
    yt <- ts(rnorm(20), frequency = 4)
    
    e1 <- tsCV(yt, fets, h = 8)
    e2 <- tsCV(yt, fmapa, h = 8)
    

    reprex package (v0.3.0) 于 2021-01-04 创建

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2019-05-09
      • 2021-01-02
      • 1970-01-01
      • 2023-03-13
      • 2014-09-25
      • 2016-01-30
      • 2015-12-13
      • 2020-09-15
      相关资源
      最近更新 更多