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

使用fable包ARIMA模型bootstrap预测返回全NA的问题求助

问题解决:fable中ARIMA带外部回归项bootstrap预测返回NA

问题核心原因

出现全NA结果主要有两个关键问题:

  1. 原代码中time变量的起始值start未定义,导致时间序列的索引结构异常,影响模型拟合与预测的残差重采样逻辑;
  2. 测试数据集test_scenarios中不需要提前提供y值(它是待预测的目标变量),多余的y列会干扰bootstrap过程中残差的重采样映射。

此外,当bootstrap=TRUE时,fable需要从模型拟合产生的残差中重采样生成预测分布,若残差无法被正确提取(比如模型拟合异常),也会返回NA。

修正后的可复现代码

library(fable)
library(tsibble)
library(lubridate)
library(dplyr)

# 正确定义时间起始点
key <- c('A', 'B', 'C')
start <- ymd("2023-01-01")
time <- seq(start, by = 1, length.out = 15)

set.seed(123)

# 构造训练数据集并转换为tsibble格式
targets <- expand.grid(time = time, key = key) %>%
  mutate(x = sort(runif(45, 0, 30)),
         y = sort(runif(45, 0, 30))) %>%
  as_tsibble(key = 'key', index = 'time')

# 拟合带外部回归项的ARIMA模型
ARIMA_model <- targets %>%
  model(ARIMA(y ~ x))

# 构造测试数据集:仅保留时间、分组和预测变量x,无需y
test_scenarios <- expand.grid(time = seq(start + days(16), by = 1, length.out = 15), 
                              key = key) %>%
  mutate(x = sort(runif(45, 0, 30))) %>%
  as_tsibble(key = 'key', index = 'time')

# 执行bootstrap预测
bootstrap_forecast <- ARIMA_model %>%
  forecast(new_data = test_scenarios, bootstrap = TRUE)

# 查看预测结果
head(bootstrap_forecast)

关键修正细节

  • 为start赋值具体日期,确保时间序列索引有效,符合tsibble的格式要求;
  • 移除测试数据中的y列,避免干扰预测逻辑;
  • 确保训练数据的tsibble结构正确,分组(key)和时间索引(time)无异常。

额外排查方向

如果仍出现NA,可检查以下内容:

  • 模型拟合状态:用report(ARIMA_model)查看每个分组的模型参数,确认无拟合失败的情况;
  • 残差完整性:用augment(ARIMA_model)查看.resid列,确保没有大量NA;
  • 调整bootstrap样本量:通过times参数指定重采样次数(如bootstrap = TRUE, times = 100)。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.19 03:25:13