季节性ARIMA即SARIMA模型。 数据要求要有周期性样本量不能少于10个 可以出残差分布图ACF和PACF图用于检验残差的相关和偏自相关以及QQ图。 程序内注释详细直接替换数据就可以用。 最后的预测结果可以直接保存为excel文件输出储存到电脑里。 程序是matlab语言。遇到周期性数据预测的问题SARIMA季节性差分自回归移动平均模型绝对是你的好帮手。今天咱们抛开教科书式的讲解直接上手写代码顺便聊聊怎么避开那些新手常踩的坑。先来段示例数据热身——假设你手头有某奶茶店36个月的销售额数据必须带周期性的不然SARIMA就哭给你看。把数据整理成时间序列格式后咱们先画个图观察趋势% 生成示例数据替换这里用你自己的数据 data [120 145 133 160 152 180 175 190 210 205 230 215 ... 225 240 235 250 245 260 255 270 265 280 275 290 ... 285 300 295 310 305 320 315 330 325 340 335 350]; dates datetime(2021,1,1):calmonths(1):datetime(2023,12,1); plot(dates, data) title(奶茶店月销售额) xlabel(时间) ylabel(销量杯) grid on看到明显的年度周期没这时候就该SARIMA登场了。模型结构写成(p,d,q)×(P,D,Q)s这里的s是周期长度月度数据s12。接下来最烧脑的环节——定阶。咱们可以用暴力穷举法配合AIC准则% 模型参数设置根据你的数据调整 s 12; % 年度周期 model arima(Constant,0,... ARLags,1,... D,1,... MALags,1,... Seasonality,s,... SARLags,1,... SMALags,1); % 拟合模型耗时警告 fit estimate(model, data, Display,off); % 显示模型系数 disp(fit)这里有个骚操作先跑几个候选模型看哪个的AIC值最小。别死磕自动定阶自己动手调参反而更容易理解数据特性。季节性ARIMA即SARIMA模型。 数据要求要有周期性样本量不能少于10个 可以出残差分布图ACF和PACF图用于检验残差的相关和偏自相关以及QQ图。 程序内注释详细直接替换数据就可以用。 最后的预测结果可以直接保存为excel文件输出储存到电脑里。 程序是matlab语言。模型跑完了总要验货吧残差诊断三件套必须安排% 残差分析全家桶 res infer(fit, data); figure subplot(2,2,1) plot(res) title(残差序列) subplot(2,2,2) autocorr(res) title(ACF) subplot(2,2,3) parcorr(res) title(PACF) subplot(2,2,4) qqplot(res)重点看ACF/PACF有没有超出置信区间的杠精QQ图上的点是不是排着队走直线。要是残差还带着明显规律说明模型没吃透数据得回去重新调参。最后到实战环节——预测未来12个月的销量记得把结果存Excel% 预测未来12个月 [forecast, YMSE] forecast(fit, 12, data); % 生成预测时间轴 futureDates dates(end) calmonths(1:12); % 打包成表格 resultTable table(futureDates, forecast, VariableNames, {日期,预测值}); % 保存到桌面路径自己改 writetable(resultTable, C:\Users\你的用户名\Desktop\预测结果.xlsx) % 可视化展示 hold on plot(futureDates, forecast, r--) legend(历史数据,预测值)这段代码最妙的是YMSE这个输出参数能算出预测误差范围。要是老板问预测靠不靠谱直接甩出置信区间镇场子。几个避坑指南数据别少于3个完整周期所以示例用了36个月差分阶数d和D别超过2否则数据都差分没了保存路径记得改成自己电脑的遇到报错先检查是不是日期格式对不上下次遇到气象数据、经济指标这些带周期波动的预测任务直接把数据灌进这个模板调调参数就能出活。SARIMA就像乐高积木把趋势、季节、随机成分拆开再组合数据里的秘密自然就浮现出来了。