【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,:) = ...']);
    end
    m = 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期”以及相应指令,即可获取对应下载方式。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

随风飘摇的土木狗

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值