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

R语言如何同图绘制nnetar模型的拟合、观测与预测值

nnetar时间序列模型三类值同图绘制实现方法

默认plot.forecast()输出仅包含历史观测值、预测值及置信区间,不会自动渲染训练集拟合值,直接叠加对应时序图层、统一配色和图例即可实现需求,全程用R原生ts绘图逻辑,不会出现时间索引错位问题。

可直接复用的完整代码

library(forecast)

# 原有建模逻辑无需修改
fit <- nnetar(y, xreg = train_reg)
results <- forecast(fit, xreg = test_reg)

# 初始化画布,先绘制预测层保留置信区间
plot(results,
     col = "#1f77b4",
     fcol = "#1f77b4",
     pi.fill = rgb(31/255, 119/255, 180/255, alpha = 0.2),
     main = "时序值对比图",
     ylab = "y值",
     xlab = "时间")

# 叠加全周期实际观测值
lines(y, col = "#ff7f0e", lwd = 2)

# 叠加训练集拟合值,用虚线做区分
lines(results$fitted, col = "#2ca02c", lwd = 2, lty = 2)

# 添加匹配的图例
legend("topleft",
       legend = c("实际观测值", "训练集拟合值", "预测值(含95%置信区间)"),
       col = c("#ff7f0e", "#2ca02c", "#1f77b4"),
       lwd = c(2,2,2),
       lty = c(1,2,1),
       bty = "n")

注意事项

  • 配色用了对比度较高的三类区分色,可自行替换为需要的色值;拟合值用虚线(lty=2)区分,黑白打印场景下也能清晰识别
  • 如果不需要显示预测置信区间,在plot()参数中新增shadecols = "transparent"即可
  • 不要随意用非ts适配的绘图函数强行拼接三类值,容易出现训练段、测试段时间轴错位,原生plot/lines对ts对象的时间索引识别是自动对齐的,不需要手动拼接时间点

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.28 12:36:20