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

如何在含多个tsibble的tibble中批量构建ARIMA模型并预测?

批量构建ARIMA模型并预测的解决方案

原代码的问题

你的map调用存在两个核心问题:

  • 传入ARIMA的参数错误:你直接用了整个data_ts列,而非遍历过程中的单个tsibble元素(应该用.x指代当前迭代的元素)
  • ARIMA语法不符合fable包要求:需要用公式形式指定时间序列变量,或者结合model()函数完成建模

正确实现步骤

以下是适配你数据结构的完整批量建模+预测流程:

1. 批量训练ARIMA模型

用purrr::map遍历每个data_ts中的tsibble,借助fable的自动模型选择功能训练最优ARIMA模型:

new_test_data <- new_test_data %>%
  mutate(
    # 为每个tsibble训练自动ARIMA模型
    arima_model = map(data_ts, ~ .x %>% model(ARIMA(value)))
  )

如果需要自定义ARIMA参数(比如指定p=1、d=1、q=1),可以修改为:

new_test_data <- new_test_data %>%
  mutate(
    arima_model = map(data_ts, ~ .x %>% model(ARIMA(value ~ pdq(1,1,1))))
  )

2. 批量生成预测

指定预测期数(比如未来4个时间步),结合fabletools::forecast批量生成预测结果:

new_test_data <- new_test_data %>%
  mutate(
    # 生成未来4个时间周期的预测
    arima_forecast = map(arima_model, ~ forecast(.x, h = 4))
  )

3. 展开预测结果(可选)

如果需要把嵌套的预测结果转换成扁平结构,方便后续分析:

forecast_results <- new_test_data %>%
  select(`Formula ID`, `Formula Name`, arima_forecast) %>%
  unnest(arima_forecast)

完整可运行示例

结合你的初始数据,模拟多数据集场景的完整代码:

library(tidyverse)
library(tsibble)
library(lubridate)
library(fable)
library(fabletools)
library(purrr)

# 生成初始数据
data <- tibble(Date=yearweek(mdy("5/6/2022","5/14/2022","5/21/2022")),
               value=c(3,5,7))

# 注意:tsibble必须指定时间索引,原代码遗漏了该参数
ts_data <- tsibble(data, index = Date)

# 模拟70个数据集的场景(这里用2个示例)
new_test_data <- tibble(
  `Formula ID` = c(1, 2),
  `Formula Name` = c("Flubber", "Gloop"),
  data = list(data, data %>% mutate(value = value * 2)),
  data_ts = list(ts_data, tsibble(data %>% mutate(value = value * 2), index = Date))
)

# 批量建模+预测
new_test_data <- new_test_data %>%
  mutate(
    arima_model = map(data_ts, ~ .x %>% model(ARIMA(value))),
    arima_forecast = map(arima_model, ~ forecast(.x, h = 4))
  )

# 展开并查看结果
forecast_results <- new_test_data %>%
  select(`Formula ID`, `Formula Name`, arima_forecast) %>%
  unnest(arima_forecast)

print(forecast_results)

关键注意事项

  • tsibble必须明确指定时间索引:原代码中ts_data <- tsibble(data)会报错,需要补充index = Date参数
  • fable::ARIMA的自动模型选择功能适合批量处理大量数据集,无需手动调参
  • 如果需要加入外部协变量,可以在公式中补充,比如ARIMA(value ~ pdq(1,1,1) + x1 + x2)

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.07 11:25:19