SAS基于ARIMA预测结果绘制与原始数据对比图的实现问询
实现步骤
第一步:还原对数转换的预测值,合并绘图数据集
由于你建模时对Volume做了对数转换,ARIMA输出的forecast数据集里的forecast字段是对数尺度的预测值,需要先做指数还原,同时和原始数据合并便于对比:
* 还原预测值并处理置信区间; data forecast_reversed; set forecast; * 指数转换还原真实交易量; pred_volume = exp(forecast); l95_volume = exp(l95); u95_volume = exp(u95); run; * 合并原始数据和预测结果,按日期对齐; data plot_full; merge intel_stock(keep=Date Volume) forecast_reversed(keep=Date pred_volume l95_volume u95_volume); by Date; run;
第二步:绘制对比可视化图
直接用proc sgplot把原始值、预测值、置信区间画在同一张图中,直观展示对比效果:
proc sgplot data=plot_full; title "交易量原始值与ARIMA 12个月预测值对比"; * 原始交易量曲线; series x=Date y=Volume / lineattrs=(color=navy thickness=2) markers legendlabel="原始交易量"; * 预测交易量曲线; series x=Date y=pred_volume / lineattrs=(color=red thickness=2 pattern=dash) markers legendlabel="预测交易量"; * 95%置信区间阴影带,不需要可删除本行; band x=Date lower=l95_volume upper=u95_volume / fillattrs=(color=lightred transparency=0.7) legendlabel="95%置信区间"; xaxis label="日期" grid; yaxis label="交易量" grid; keylegend / position=topleft location=inside; run;
可选调整项
- 数据点过多时可删除
series语句后的markers参数,去掉散点只显示折线 - 需要聚焦某段时间的效果时,可在
xaxis语句中加values=('01JAN2020'd to '01JAN2025'd by month)这类参数限定展示区间 - 不需要置信区间时直接删除
band对应的语句即可
内容的提问来源于stack exchange,提问作者Diesel Blue
相关产品推荐
相关产品推荐

