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

R语言小时级交通流短时间序列简单指数平滑建模及预测问题

解决SES处理小时级交通流时间序列的问题

针对你遇到的报错、时间格式识别以及替代方法需求,我整理了一步步的解决方案:

一、修复forecast步长冲突报错

你碰到的Error in forecast.forecast(fit_Model_SES, h = 653),核心原因是ses()拟合时未提前指定预测步长,后续调用forecast()时参数冲突。其实ses()是ets()的简化版(对应ETS(A,N,N)无趋势无季节模型),用ets()处理会更灵活稳定:

# 用ets()显式指定ANN模型(对应简单指数平滑)
fit_ets <- ets(training_data, model = "ANN")
# 直接指定预测步长为测试集长度
forecast_SES <- forecast(fit_ets, h = 653)

这样就不会再出现步长相关的报错了。

二、解决小时级时间格式丢失/识别错误问题

1. 避免ts对象丢失小时信息

如果一定要用ts对象,不能直接传入时间字符串,需要把时间转换为年+小数的数值格式:

# 将起始时间转成年份+小数的形式(比如2017-07-17 00:00对应≈2017.537)
start_decimal <- as.numeric(as.POSIXct("2017-07-17 00:00:00")) / (3600*24*365) + 1970
# 小时级数据frequency设为8760(一年的小时数),保留时间精度
ses_ts <- ts(SES_Data$Traffic_Flow, frequency = 8760, start = start_decimal)

2. 用xts实现和ARIMA一致的绘图效果

更推荐继续用xts对象,只需给预测结果手动绑定测试集的时间索引,就能让绘图时间轴和ARIMA对齐:

# 拟合模型
fit_ets <- ets(training_data, model = "ANN")
forecast_SES <- forecast(fit_ets, h = 653)

# 给预测结果的各部分绑定测试集的时间索引
forecast_SES$mean <- xts(forecast_SES$mean, order.by = index(test_data))
forecast_SES$lower <- xts(forecast_SES$lower, order.by = index(test_data))
forecast_SES$upper <- xts(forecast_SES$upper, order.by = index(test_data))

# 现在绘图就能和ARIMA的时间格式完全匹配了
plot(forecast_SES, main = "SES交通流预测", xlab = "时间", ylab = "交通流量")
lines(test_data, col = "red") # 叠加测试集真实值方便对比

三、可与ARIMA对比的短时间序列预测方法

既然是无趋势无季节的短序列,以下几种方法适合做对比基准:

  • 朴素预测法(Naive):直接用训练集最后一个观测值作为所有预测值,是最简单的基准模型,用forecast::naive()实现
  • 简单移动平均(SMA):取最近k个观测值的平均值做预测,用forecast::sma()实现
  • Theta模型:专门针对短时间序列设计,对平稳数据表现稳定,用forecast::thetaf()实现
  • Prophet:Facebook的时间序列模型,自带完善的时间格式处理,即使平稳数据也能快速拟合,适合跨模型对比

四、额外小技巧

如果你的ARIMA模型是用forecast::auto.arima()拟合的,可把两个模型的预测图放在同一张画布对比:

# 假设已得到ARIMA预测结果forecast_ARIMA
par(mfrow = c(2,1))
plot(forecast_ARIMA, main = "ARIMA交通流预测", col = "green")
plot(forecast_SES, main = "SES交通流预测", col = "blue")

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.11 09:29:00