You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

R中时间序列滚动交叉验证实现:tsCV与modeltime.resample对比

关于时间序列滚动交叉验证的疑问

生成时间序列数据

我用以下R代码生成了时间序列数据:

library(forecast)
library(lubridate)

set.seed(123)

weeks <- rep(seq(as.Date("2010-01-01"), as.Date("2023-01-01"), by = "week"), each = 1)
counts <- rpois(length(weeks), lambda = 50)
df <- data.frame(Week = as.character(weeks), Count = counts)

# 将Week列转换为日期格式
df$Week <- as.Date(df$Week)

# 创建时间序列对象
ts_data <- ts(df$Count, frequency = 52, start = c(year(min(df$Week)), 1))

滚动交叉验证的尝试

我正在学习为ARIMA等时间序列模型实现滚动交叉验证,理解的流程是:按时间顺序排序数据,先用前60个数据点拟合模型并预测后续5个点、记录误差;再用前65个数据点拟合模型并预测后续5个点、记录误差,以此循环。

之前自行编写代码实现该流程难度较大,后来发现forecast包的tsCV函数,于是编写了如下代码:

# 注:我明确希望使用auto.arima()函数
far2 <- function(x, h){forecast(auto.arima(x), h=h)}
e <- tsCV(ts_data, far2, h=5)

疑问点

  • 这段tsCV代码是否按照我预期的滚动窗口逻辑执行?
  • 运行完成后,是否需要手动计算MAE、RMSE等误差指标?
  • 是否更适合使用modeltime.resample工具来实现该功能?

内容的提问来源于stack exchange,提问作者stats_noob

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.28 13:43:31