【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期”以及相应指令,即可获取对应下载方式。