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

基于ARIMA模型的时间序列预测新手技术问询

完成时间序列ARIMA预测的分步指导

Hey there! Let's get your ARIMA forecasting code finished up properly. You've already laid a good foundation with data loading, so let's fill in the missing pieces and add some best practices for evaluating your predictions.

第一步:补全基础变量定义

首先,你没写完real向量的定义,先把它补全用来存储测试集的真实值:

# 补全真实值向量定义
real <- vector(mode="numeric", length=testLength)
# 直接赋值测试集真实值(替代后续循环赋值的话也可以这么写)
real <- rt[(nSkip+1):nData]

第二步:实现ARIMA预测(两种常见方式)

方式1:一次性训练模型并预测整个测试集

这是最基础的方法,适合数据平稳且模式稳定的场景:

# 训练ARIMA模型(auto.arima会自动选择最优的p,d,q参数)
arima_model <- auto.arima(rt[1:nTrain])

# 预测测试集长度的结果
arima_output90 <- forecast(arima_model, h=testLength)$mean

方式2:滚动窗口预测(更适合非平稳或模式变化的序列)

如果你的序列可能随时间变化,滚动预测会更准确——每次用最新的训练数据重新拟合模型:

# 滚动预测循环
for(i in 1:testLength){
  # 每次取前nTrain+i-1个数据作为训练集
  train_data <- rt[1:(nTrain+i-1)]
  # 拟合ARIMA模型
  model <- auto.arima(train_data)
  # 预测下一个时间步
  arima_output90[i] <- forecast(model, h=1)$mean
  # 同步存储真实值(如果之前没直接赋值的话)
  real[i] <- rt[nTrain+i]
}

第三步:添加模型评估与可视化

预测完成后,一定要评估模型效果,这是时间序列预测的关键环节:

library(ggplot2)

# 计算评估指标
mae <- mean(abs(arima_output90 - real))
rmse <- sqrt(mean((arima_output90 - real)^2))
cat(paste0("MAE: ", round(mae, 4), "\nRMSE: ", round(rmse, 4), "\n"))

# 绘制真实值与预测值对比图
plot_df <- data.frame(
  Time = seq(nTrain+1, nData),
  Real = real,
  Predicted = arima_output90
)

ggplot(plot_df, aes(x=Time)) +
  geom_line(aes(y=Real, color="Real"), linewidth=1) +
  geom_line(aes(y=Predicted, color="Predicted"), linewidth=1, linetype="dashed") +
  labs(title="ARIMA Forecast vs Actual Values", x="Time Step", y="Value") +
  scale_color_manual(values=c("Real"="blue", "Predicted"="red")) +
  theme_minimal()

额外小贴士

  • 检查时间序列的平稳性:可以用adf.test()(来自tseries包)检验,auto.arima会自动处理差分,但提前了解数据特性很有帮助。
  • 如果你的序列有季节性,auto.arima也能自动识别季节性参数,不用额外设置。
  • 可以尝试其他模型对比效果,比如ETS模型(ets()函数),看看哪个更适合你的数据。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.20 10:29:56