当前位置: 首页 > news >正文

【MATLAB第115期】基于MATLAB的多元时间序列的ARIMAX的预测模型

【MATLAB第115期】基于MATLAB的多元时间序列的ARIMAX的预测模型

‌一、简介

ARIMAX‌(Autoregressive Integrated Moving Average with eXogenous inputs)模型是一种结合自回归(AR)、差分(I)、移动平均(MA)和外生变量的时间序列预测方法。其核心公式为:
在这里插入图片描述
‌AR§‌:利用历史值的线性组合
‌I(d)‌:差分处理非平稳序列
‌MA(q)‌:建模误差项的移动平均
‌X‌:外生变量(如X1~X7等外部因素)

二、数据准备与预处理

1. 数据导入
数据格式:最后一列为目标变量,其他列为外生变量

data = xlsread('数据集.xlsx'); % 读取Excel数据

2. 数据预处理
‌目标变量处理‌:

y = data(:, end); 
y(1) = []; % 删除首项以对齐差分后的外生变量

‌外生变量处理‌:

IX = data(:, 1:end-1); 
X = diff(IX, 1); % 一阶差分使序列平稳

数据常具趋势性,差分可消除非平稳性,使模型更准确。

三、滚动时间窗口创建

1. 参数设置

P = 2;  % AR阶数
D = 1;  % 差分次数
WindowSize = 31; % 训练窗口大小
ForecastPeriod = numel(y) - WindowSize - P - D; % 预测期数

2. 初始化存储矩阵
‌目标变量‌:

yyT = zeros(ForecastPeriod, WindowSize + P + D + 1);

‌外生变量‌:

for i = 1:size(X, 2)eval(['XX', num2str(i), ' = zeros(ForecastPeriod, WindowSize+1);']);
end

3. 窗口数据填充

for nYear = 1:ForecastPeriod% 目标变量窗口yyT(nYear, :) = transpose(y(m:m + WindowSize + P + D));% 外生变量窗口for i = 1:size(X, 2)eval(['XX', num2str(i), '(nYear,:) = ...']);endm = m + 1; % 窗口滑动
end

四、ARIMAX模型训练与预测

1. 模型参数设置

Mdl = arima(P, D, 2); % 创建ARIMAX(2,1,2)模型

2. 递归预测流程

% 模型估计
Mdl = estimate(Mdl, sY(1:end-1), 'Y0', yy0(t+1,:)', 'X', sX(1:end-1, :));

‌关键参数解析‌:

Y0:模型初始条件(差分后的初始值)
X0:外生变量初始条件
XF:预测期的外生变量值

五、预测结果可视化

figure;
axH = axes;
plot(axH, 1:ForecastPeriod, y(end-ForecastPeriod+1:end), 'Color', [0.9290 0.6940 0.1250], 'LineWidth', 1.2);
hold on;
plot(axH, 1:ForecastPeriod, eGNPR, 'Color', [0 0.4470 0.7410], 'LineWidth', 1.2);
legend(["Actual", "Forecasted"]);
title('ARIMAX(2,1,2)模型预测效果对比');

在这里插入图片描述

六、代码获取

1.阅读首页置顶文章
2.关注CSDN
3.根据自动回复消息,私信回复“115期”以及相应指令,即可获取对应下载方式。

http://www.xdnf.cn/news/82693.html

相关文章:

  • 线缆屏蔽与浪涌测试
  • Linux中查询进程服务,通过端口方式关闭
  • C++模板学习(进阶)
  • PH热榜 | 2025-04-22
  • 客户端本地搭建
  • Baidu Comate初体验:强大的全局ai工具
  • 嘻游后台系统与机器人模块结构详解:功能逻辑 + 定制改造实战
  • 性能比拼: Go vs Java
  • mybatis实现增删改查1
  • 三网通电玩城平台系统结构与源码工程详解(二):Node.js 服务端核心逻辑实现
  • 香橙派使用USB摄像头
  • 【锂电池剩余寿命预测】LSTM长短期记忆神经网络锂电池剩余寿命预测(Matlab源码)
  • Trae国内版怎么用?Trae IDE 内置 MCP 市场配置使用指南
  • STM32提高篇: WIFI通讯
  • Unity 脚本使用(二)——UnityEngine.AI——NavMesh
  • vscode使用笔记
  • spdlog日志库使用教程(含踩坑问题解决)
  • 2.6 递归
  • 2025.4.22学习日记 JavaScript的常用事件
  • 多模态大语言模型arxiv论文略读(三十四)
  • QEMU源码全解析 —— 块设备虚拟化(21)
  • go中map和slice非线程安全
  • 不可变数据:基于持久化数据结构的状态管理
  • Seata 分布式事务 快速开始
  • 动态规划算法:完全背包类问题
  • 应用案例|兵器重工:某体系需求视图模型开发
  • [论文阅读]ConfusedPilot: Confused Deputy Risks in RAG-based LLMs
  • docker容器,mysql的日志文件怎么清理
  • 【安装neo4j-5.26.5社区版 完整过程】
  • matlab设置不同颜色的柱状图