thymeleaf做网站 seo,网页qq登录手机版网址,青海网站建设哪个最好,自己怎么做网站赚钱【MATLAB第60期】【更新中】基于MATLAB的ARMAX具有外生回归因子的移动平均自回归模型 版本更新#xff1a;
2023/7/29版本#xff1a; 1.增加自定义参数#xff0c;方便直接套数据运行。
pre_num3;%预采样数据个数
learn_pr0.85; %训练数据比例#xff08;不包括预采样数…【MATLAB第60期】【更新中】基于MATLAB的ARMAX具有外生回归因子的移动平均自回归模型 版本更新
2023/7/29版本 1.增加自定义参数方便直接套数据运行。
pre_num3;%预采样数据个数
learn_pr0.85; %训练数据比例不包括预采样数据
mmpre_num;%输入响应数据个数
nnpre_num;%输出响应数据个数 2.增加ARIMAX模型参数自动选择功能 1可手动选择ADF或者KPSS平稳性检验方式 存在不足目前无法解决D0的问题所以优先选择D0的检验方法本文选用KPSS检验 [p, d, q ] fit_model( Y,learn_num, test_num ); 2检验p、d、q是否满足后续正常运行条件
if pre_numpddisp(--------------------------------------------);fprintf(ARIMAX(%d, %d, %d)满足运行要求, p, d, q);
elsedisp(--------------------------------------------);fprintf(ARIMAX(%d, %d, %d)不满足运行要求,, p, d, q);disp(请增大pre_num预采样数值);
end3.增加参数评估结果命令行窗口展示
最优模型参数为ARIMAX (2, 0, 0)
ARIMAX(2,0,0) Model (Gaussian Distribution)Effective Sample Size: 53Number of Estimated Parameters: 7LogLikelihood: -164.451AIC: 342.901BIC: 356.693Value StandardError TStatistic PValue______ _____________ __________ ______Constant -25.21 10.11 -2.49 0.01 AR{1} 0.30 0.08 3.63 0.00 AR{2} -0.06 0.06 -1.01 0.31 Beta(1) 3.24 0.32 10.27 0.00 Beta(2) 0.00 0.00 3.21 0.00 Beta(3) 1.92 0.58 3.31 0.00 Variance 29.01 7.63 3.81 0.00 4.增加置信区间绘图及评价默认95%可自行调整
picp2 PICP (ci, Y(end-test_num1:end));
pimw2 PIMWP(ci, Y(end-test_num1:end));
disp([测试集的区间覆盖率为:, num2str(picp2), 。区间平均宽度百分比为:, num2str(pimw2)])
测试集的区间覆盖率为:1。区间平均宽度百分比为:3.212版本不足
1.未解决D0的问题即只能处理通过检验方法判定的平稳的时间序列数据。 2.p、q筛选区间最大值目前只能为2且缺少d结果的选择d通过平稳性检验提前确定。 一、简要介绍
ARMAX模型相比ARMA考虑了影响因素 即可以实现基于时间序列数据的回归预测。目前ARMAX预测未来功能存在困难本篇文章不予介绍。大致思路需要通过时间滞后构造数据使前时间段的X预测后时间段的Y即多步预测。此示例展示如何将时间序列中的时间划分为预采样期T0、训练期Ty和预测期Tf并显示了如何提供适当数量的观测值来初始化用于估计和预测的动态模型。通过定义ARMA模型中的参数可实现ARIMAX和SARIMAX模型。本文介绍最基础的ARMAX模型。
二、导入数据
本篇文章案例数据采用3输入1输出62个样本1962-2023年。本文用table格式打开方便对时间进行处理。
clear all
datareadtable(数据集.xlsx);
DataTable table2timetable(data);%将DataTable转换为时间表。
varnames [Y X1 X2 X3 ];
Tbl rmmissing(DataTable(:,varnames));%通过应用列表删除从数据中删除所有前导NaN。
T size(Tbl,1) %总样本量
Y Tbl.Y; %因变量
X Tbl{:,varnames(2:end)};%变量三、建立模型
为了训练和预测模型估计必须有足够的预采样数据来初始化自回归项同样要从训练模型中预测预测必须有足够的预采样样本。 此外预测期中的回归分量需要预测历史数据或未来的预测数据Y那么需要有与之对应的X不然无法预测未来。
本文考虑一个ARMAX1,2模型该模型以X1、X2、X3为外生变量预测Y。将样本的时间线划分为预采样、训练和预测时段。将模型拟合到训练样本并使用预采样数据来初始化自回归项。然后根据训练模型对Y进行预测。指定预采样数据以初始化自回归项。一般预采样数据个数为Mdl.P因为p在之前就设置好了所以手动设置为1。 -指定训练数据选择2-56作为训练数据。输入数据XEst则为X2-X56输出为Y2-Y56指定预测数据57-62共6个数据进行测试。输入数据则为X57-X62输出为Y57-Y62
idxpresample 1;%预采样数据y0es个数1
idxestimate 2:56;%训练数据yest 个数,55
idxforecast 57:T;%预测数据个数 6建立ARMAX1,2模型
Mdl arima(1,0,2); % P D Q
%ARIMAX(1,0,2) Model (Gaussian Distribution)Effective Sample Size: 55
Number of Estimated Parameters: 8
LogLikelihood: -162.152
AIC: 340.303
BIC: 356.362Value StandardError TStatistic PValue______ _____________ __________ ______Constant -28.86 12.92 -2.23 0.03
AR{1} 0.20 0.05 4.02 0.00
MA{1} 0.65 0.16 4.19 0.00
MA{2} 0.05 0.18 0.31 0.76
Beta(1) 3.42 0.28 12.37 0.00
Beta(2) 0.00 0.00 3.19 0.00
Beta(3) 1.96 0.76 2.57 0.01
Variance 21.30 5.16 4.13 0.00 在训练样本结束时指定必要的观测值作为样本前数据进行预测需指定训练期的数据且数据个数至少为1本文取两个即训练输入的最后2个值X55-X56和训练输出的最后2个值Y55-Y56。预测数据假设预测的数量为M则M必须小于等于XF的个数不然无法运行。本文指定M6预测期的输入变量XF为X57-X62。 [yf,ymse] forecast(Mdl,M);置信区间预测
ci yf 1.96*[-sqrt(ymse) sqrt(ymse)];绘图。因年份较多故只展示后面一半的数据。
yrs year(Tbl.Time(round(T/2):end));%绘制后半部分的响应数据和预测。figure;
plot(yrs,Tbl.Y(round(T/2):end),b,LineWidth,2);
hold on
plot(yrs(end-size(idxforecast,2)1:end),yf,r--,LineWidth,2);
h gca;
px yrs([end - size(idxforecast,2)1 end end end - size(idxforecast,2)1]);
py h.YLim([1 1 2 2]);
hp patch(px,py,[0.9 0.9 0.9]);
uistack(hp,bottom);
axis tight
title(ARMAX模型);
legend([预测区段 实际值 预测值])四、效果展示 五、代码获取
后台私信回复“60期”即可获取下载方式。