r - 如何将 tsCV() 与 MAPA 一起使用?
问题描述
我想将 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)
解决方案
这里有两个问题。
预测函数必须返回一个类对象
forecast
。参见帮助文件tsCV()
。该MAPA
包不返回forecast
对象,因此您需要从输出中创建它。事实上,这里唯一真正重要的是该对象是一个列表,其中包含一个称为mean
包含预测的元素。预测函数必须有一个参数来
h
描述预测范围的数量。将其重命名为fh
会导致问题。
一个不太严重的问题是,当您在函数体中覆盖它们时,函数中的h
and参数会被完全忽略。fh
这是一个有效的示例。
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 包(v0.3.0)于 2021-01-04 创建
推荐阅读
- c - 计算和打印矩阵的对角线之和
- javascript - 如何在 Angular 中使用 addEventListener 和 postMessage?
- php - 如何将日期、时间和值从单选按钮放入数据库
- c# - 逐个像素地动态绘制和显示,有一些延迟
- npm - 如何从 Nexus oss 代理获取依赖于 github 项目的 npm 包
- django - Django 测试 - 发送包含整数的数组数组
- android - 在 android 中使用改造登录
- json - 我如何在 nunjuncks 中乘以数据?
- swift - 为什么不能在swift中将可变参数标记为inout?
- vue.js - Vue Js 2 / Vue-CLI 3 / 托管时显示空白页