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
相关产品推荐
相关产品推荐

