跳到主要内容
极客日志极客日志面向AI+效率的开发者社区
首页博客我的书AI学习GitHub 精选镜像AI工具UI配色美学关于
搜索内容 / 工具 / 仓库 / 镜像...⌘K搜索
注册
博客列表
MATLAB / OctaveAI算法

MATLAB 时间序列预测方法实战:AR、ARIMA 与 GARCH 模型

基于 MATLAB R2021B 环境,介绍了九种时间序列预测方法,涵盖 AR、ARIMA、GARCH、VAR 及 SARIMA 等模型。通过生成随机游走数据演示了 AR 模型的滞后阶数设置与参数估计,展示了 ARIMA 对非平稳数据的差分处理,以及 GARCH 系列模型对波动聚集现象的捕捉。此外,还讲解了 VAR 模型的多变量交叉影响分析及 SARIMA 的季节性周期处理。文章最后提供了残差诊断、AIC/BIC 指标对比、滚动窗口验证及并行加速等避坑指南,强调根据数据特征选择合适模型以平衡偏差与方差的重要性。

SqlMaster发布于 2026/4/6更新于 2026/10/24127 浏览
MATLAB 时间序列预测方法实战:AR、ARIMA 与 GARCH 模型

MATLAB 时间序列预测方法实战

算法运行环境为 MATLAB R2021B,执行几种时间序列预测方法,包括:

  1. Autoregression (AR)
  2. Moving Average
  3. Autoregressive Moving Average
  4. Autoregressive Integrated Moving Average (ARIMA)
  5. Seasonal Autoregressive Integrated Moving-Average (SARIMA)
  6. Seasonal Autoregressive Integrated Moving Average with Exogenous Regressors (SARIMAX)
  7. Vector Autoregression (VAR)
  8. GARCH Model
  9. Glostan, Jagannathan and Runkle GARCH Model

文章配图

数据准备

首先准备测试数据。假设手头有个股票收盘价序列,长度 500 天:

data = cumsum(randn(500,1)*0.5 + 0.01) + 50; % 模拟股票价格
plot(data);
title('模拟股票价格');

这串随机数生成器造的数据有微弱正趋势,标准差 0.5,初始值 50。cumsum 让数据有持续性特征,符合金融时间序列特性。

文章配图

AR 模型实战

自回归的核心就是拿历史数据当预测依据。比如用前 3 天的数据预测明天:

Mdl = arima('ARLags',1:3);
EstMdl = estimate(Mdl, data);
[YF, YMSE] = forecast(EstMdl, 5, data); % 预测未来 5 天

这里'ARLags'参数指定滞后阶数,1:3 表示用 t-1,t-2,t-3 时刻的值。estimate 函数会返回模型参数估计值,注意 MATLAB 自动做了标准化处理。预测时 YMSE 是预测方差,可以画置信区间。

文章配图

ARIMA 进阶版

加上差分处理非平稳数据更稳健:

Mdl = arima(2,1,1); % AR 阶 2,差分阶 1,MA 阶 1
EstMdl = estimate(Mdl, data);
[YF, YMSE] = forecast(EstMdl, 5, 'Y0', data);

差分阶数 1 表示做一阶差分消除趋势。模型训练时注意看命令行输出的参数显著性,p 值小于 0.05 的项才有保留价值。如果 MA 项系数不显著,可以降阶试试。

文章配图

GARCH 家族波动率建模

金融预测需处理波动聚集现象:

Mdl = garch('GARCHLags',1,'ARCHLags',1);
EstMdl = estimate(Mdl, diff(data)); % 对收益率建模
condVar = infer(EstMdl, diff(data)); % 提取条件方差
plot([diff(data), condVar]);
legend('收益率','波动率');

这里用差分后的收益率数据,infer 函数能提取波动率估计。GARCH(1,1) 模型里,ARCH 项反映新息冲击,GARCH 项体现波动持续性。如果发现杠杆效应(跌的时候波动更大),可以升级到 GJR-GARCH:

Mdl = gjr('GARCHLags',1,'ARCHLags',1,'LeverageLags',1);
EstMdl = estimate(Mdl, diff(data));

多了个 LeverageLags 参数来捕捉不对称效应。回测时要注意,这类模型对参数初值敏感,可能需要多试几次初值设定。

文章配图

文章配图

多变量分析——VAR 模型

当多个时间序列互相影响时:

data_multi = [data, randn(500,1)*2 + 5]; % 伪造第二个变量
Mdl = varm(2,2); % 两个变量,滞后 2 阶
EstMdl = estimate(Mdl, data_multi);
[YF, YMSE] = forecast(EstMdl, 5, data_multi);

varm 模型会自动估计变量间的交叉影响。注意数据要先做平稳性检验,可以用 MATLAB 的 adftest 做单位根检验。预测时输出的 YF 是矩阵,每列对应一个变量的预测值。

季节性模型——SARIMA

处理像销售额这种有季节波动的:

Mdl = arima('ARLags',1:2,'D',1,'Seasonality',12,...
'MALags',1,'SMALags',12);
EstMdl = estimate(Mdl, data);

这里设置季节周期为 12(比如月度数据),Seasonality 参数自动创建季节性差分。实际操作中要先用季节图判断周期长度,别瞎猜参数。可以用 x13as 工具做季节调整,再喂给模型。

注意事项

完成代码后需注意几个避坑指南:

  1. 预测前务必做残差诊断:用 lbqtest 检验自相关性
  2. 模型对比用 AIC/BIC 指标,别光看拟合误差
  3. 样本外预测要用滚动窗口验证,防止过拟合
  4. 用 parfor 加速参数寻优,特别是 SARIMAX 这种参数多的模型

总结

时间序列预测就是平衡偏差与方差的艺术。没有通吃所有场景的银弹,多备几把刷子,根据数据特征选兵器才是王道。下次遇到震荡市,不妨试试 GARCH 系模型;要是数据有明显周期规律,SARIMA 可能更香。代码只是工具,理解数据内在逻辑才是真功夫。

目录

  1. MATLAB 时间序列预测方法实战
  2. 数据准备
  3. AR 模型实战
  4. ARIMA 进阶版
  5. GARCH 家族波动率建模
  6. 多变量分析——VAR 模型
  7. 季节性模型——SARIMA
  8. 注意事项
  9. 总结

更多推荐文章

查看全部
  • VS Code 禁用 Ctrl+I 快捷键触发 Copilot AI 功能
  • JavaScript Blob 对象详解与常见应用场景
  • 全国大学生智能车竞赛智慧医疗机器人惯导与路径规划思路
  • 无人机如何通过视觉闭环实现精准空投
  • GitHub 登录失败常见解决方法
  • 无项目经验如何转行 AIGC 产品经理:职责、技能与成长路径
  • 网络安全工程师:职业定义、核心技能与认证体系详解
  • 深入理解前端防抖(Debounce)与节流(Throttle):原理、区别与实战示例
  • Spring Cloud 与 Dubbo 架构选型:生态全家桶 vs RPC 特种兵
  • 数据结构:二叉树与堆的实现详解
  • Python Selenium 浏览器自动化入门教程
  • Flutter 三方库 Arcade 在鸿蒙端的适配与实战
  • TeleGrip:基于 VR 的机械臂遥操作系统架构与源码解析
  • Python 编程快速入门
  • 医疗 AI 场景下的模型融合与集成策略
  • Java Stream Collectors.toMap 详解:集合转 Map 用法
  • 如何在 Android Studio 中使用 Gemini 进行 AI 编程
  • 《Agent Runtime 工程化》Agent Memory 应该放在 Runtime 还是 Application?
  • 神经网络基础:激活函数与训练技巧详解
  • RTD1296PB 与 RK3568:NAS 与智能家居芯片性能实测对比

相关免费在线工具

  • 加密/解密文本

    使用加密算法(如AES、TripleDES、Rabbit或RC4)加密和解密文本明文。 在线工具,加密/解密文本在线工具,online

  • RSA密钥对生成器

    生成新的随机RSA私钥和公钥pem证书。 在线工具,RSA密钥对生成器在线工具,online

  • Mermaid 预览与可视化编辑

    基于 Mermaid.js 实时预览流程图、时序图等图表,支持源码编辑与即时渲染。 在线工具,Mermaid 预览与可视化编辑在线工具,online

  • 随机西班牙地址生成器

    随机生成西班牙地址(支持马德里、加泰罗尼亚、安达卢西亚、瓦伦西亚筛选),支持数量快捷选择、显示全部与下载。 在线工具,随机西班牙地址生成器在线工具,online

  • Gemini 图片去水印

    基于开源反向 Alpha 混合算法去除 Gemini/Nano Banana 图片水印,支持批量处理与下载。 在线工具,Gemini 图片去水印在线工具,online

  • Base64 字符串编码/解码

    将字符串编码和解码为其 Base64 格式表示形式即可。 在线工具,Base64 字符串编码/解码在线工具,online