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

modeltime的ts_split_indices对象无法作为rsplit对象使用求助

问题原因

split_nested_timeseries()生成的是ts_split_indices类型的嵌套时间序列拆分对象,而training()是rsample包中针对常规rsplit对象设计的函数,二者不兼容,这就是触发错误的核心原因。

解决方案

使用modeltime包为嵌套时间序列拆分专门设计的工具函数,或者通过索引手动筛选训练数据:

方法1:专用提取函数

用extract_nested_train_split()直接提取嵌套拆分中的训练集,这是最简便的方式:

# 假设你的嵌套拆分对象名为nested_splits
train_data <- extract_nested_train_split(nested_splits)

方法2:手动按索引筛选

如果需要更灵活的操作,可先取出单个拆分的索引,再从原始数据中筛选:

# 取出第一个嵌套拆分的索引集合
split_idx <- nested_splits$splits[[1]]
# 从原始数据(假设为data)中筛选训练数据
train_data <- data[split_idx$train, ]
完整修正示例

结合典型的嵌套时间序列拆分流程,修正后的代码如下:

library(tidymodels)
library(modeltime)
library(tidyverse)

# 示例数据
data <- m4_monthly %>% filter(id == "M750")

# 生成嵌套时间序列拆分
nested_splits <- data %>%
    time_series_split(initial = 36, assess = 12, cumulative = TRUE) %>%
    split_nested_timeseries(lag = 12, window = 36)

# 错误用法(会触发报错)
# train_data <- training(nested_splits)

# 正确用法1:专用函数提取
train_data1 <- extract_nested_train_split(nested_splits)

# 正确用法2:手动索引筛选
train_data2 <- data[nested_splits$splits[[1]]$train, ]
补充说明

modeltime的嵌套时间序列拆分体系有专属的配套函数:比如extract_nested_test_split()用于提取测试集,modeltime_nested_fit()用于批量训练嵌套模型,建议优先使用这些专用函数,避免与rsample的常规拆分函数混淆。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.10 05:50:27