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

如何为ARIMA模型训练集添加行及实现训练集与测试集连续绘图

解决你的ARIMA训练集与绘图问题

一、让训练集与测试集绘图首尾衔接

你遇到的绘图重合问题,核心原因是lines()默认会把传入的test_set的x轴坐标从1开始计数,而你的训练集training_set的x轴是1到500,自然会和测试集的开头重叠。解决方法很简单,手动指定lines()的x参数为测试集在原序列中的索引即可:

training_set = series[1:500,]
test_set = series[501:790,]

# 绘制训练集,x轴默认对应原序列的1-500索引
plot.default(training_set, type = "l")
# 指定x为测试集在原序列的索引范围,和训练集末尾完美衔接
lines(x = 501:790, y = test_set, col="blue", type = "l")

如果你的series是时间序列对象(比如ts或xts类型),更稳妥的方式是保留原序列的时间索引,绘图时会自动对齐:

# 提取训练集和测试集对应的时间索引
train_time <- time(series)[1:500]
test_time <- time(series)[501:790]

plot(train_time, training_set, type = "l")
lines(test_time, test_set, col="blue", type = "l")

这样就能清晰呈现训练集到测试集的连续趋势了。

二、为ARIMA训练集添加行

根据需求不同,有两种常见的处理方式:

  1. 直接扩展训练集范围
    如果只是想把训练集从原来的1-500扩展到更大的区间(比如1-600),直接重新索引原序列即可:
# 扩展训练集到前600行
training_set_expanded <- series[1:600,]

如果是时间序列对象,推荐用window()函数精准选择时间范围:

# 假设series是ts对象,选择到第600个时间点的部分作为新训练集
training_set_expanded <- window(series, end = time(series)[600])
  1. 添加外部新数据行
    如果要添加不在原series里的新观测数据,需要确保新数据和训练集结构一致(单变量、格式匹配),然后用rbind()合并:
# 假设new_data是和training_set同结构的单列数据
training_set_updated <- rbind(training_set, new_data)

如果是时间序列对象,记得先把新数据转换成相同频率的时间序列,再合并:

# 将新数据转为和series同频率的ts对象
new_data_ts <- ts(new_data, start = time(series)[501], frequency = frequency(series))
# 合并训练集与新数据
training_set_updated <- c(training_set, new_data_ts)

注意:添加新数据后,若要重新训练ARIMA模型,需要重新拟合模型,因为训练集的变化会影响模型参数。

内容的提问来源于stack exchange,提问作者Hugo Pasqual del Pobil

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.04.30 13:42:33