自回归(AR )模型
理论模型
自回归(AutoRegressive,AR )模型也称为时间序列模型,公式为
这里,e(t )表示平均值为0、存在分散值的白噪声信号。
材料工具箱
研究表明,采用Yule-Walker方法可以得到最优的AR模型[1],因此采用aryule程序估计模型参数。
[m,refl]=ar(y,n,approach,window ) )。
确定模型阶数
用几种方法确定。 例如Shin提出了基于SVD的方法,而AIC和FPE方法是目前应用最广泛的方法。 如果计算的AIC小(例如小于-20 ),那么该误差可对应于损耗函数的10-10级,在这种情况下阶数可视为系统的适当阶数。
am=AIC (模型1,模型2,)
FP=fpe (模型1、模型2、模型3、) ) ) ) ) ) ) ) )。
AR预测
yp=predict(m,y,k ) )。
表示预测模型; 实际输出; 预测区间; yp是预测输出。
变k
在计算AR模型预测时,k应取1,原因参考AR模型的理论公式。
compare(y,m,k ) )。
[yh,fit,x0]=compare(y,m,k ) )。
Compare的预测原理与predict相同,但对预测进行了比较。
AR误差
e=PE(m,数据) )。
pe误差计算。 用yh=predict(m,data,1 )进行预测,计算误差e=data-yh;
[e,r]=resid(m,data,mode,lags );
resid(r ) )。
resid计算并验证误差。 在没有输出使用pe计算误差的情况下,误差曲线必须足够小,黄色区域为99%置信区间,误差曲线表明在该区域内通过了检验。
Matlab练习
确定模型的阶数
使用ASCE benchmark模型120DOF选择8个y方向的响应。 首先,对响应数据进行标准化处理,然后对标准化处理后的数据进行AR建模,最后,确定适当的模型阶数,通过选择一系列阶数,分别计算相应的AIC值。 从该图中可以看出,对于80级之后的AIC值,AIC值变化很小,因此选择80级。
AR模型预测
AR误差计算
附录MATLAB代码
(1) ) ) )。
% ar model or
clc; 清除
addpath(genpath ) pwd ),1 );
data=load (case2damage0_1_ 0.01 _ 0.001 _ 40 _ 10 _ 150 _ 123 _1. mat );
dofy=[ 2,4,6,8,10,12,14,16 ];
x=zscore(data.ACC ) :dofy );
order=[10:10:130];
forI=1:length(order ) )
forj=1:size(x,2 ) )。
m=ar(x ) :j )、order(i ) I )、' yw ' );
am(I,j )=aic(m ) m;
结束
结束
plot(order,am,' LineWidth ',2,' Marker ',' * ' )
xlabel(arorder )、ylabel (ylabel )和AIC ) )。
legend(sensor2)、(sensor 4)、(sensor 6)、(sensor 8)为,
' sensor 10 '、' sensor 12 '、' sensor 14 '、' sensor 16 ' )
(2) ) ) )。
clc; 清除
addpath(genpath ) pwd ),1 );
data=load (case2damage0_1_ 0.01 _ 0.001 _ 40 _ 10 _ 150 _ 123 _1. mat );
dofy=[2; 4; 6; 8; 10; 12; 14; 16 );
订单=80;
ts=zscore(data.ACC ) :dofy );
k=1;
name={'sensor 2',' sensor 4',' sensor 6',' sensor 8',
' sensor 10 '、' sensor 12 '、' sensor 14 '、' sensor16 ';
ounit=repmat(m/s^2)、length )、1 );
ts=iddata(zscore(data.ACC ) :dofy ) )、[]、data.dt、
' OutputName ',name,' OutputUnit ',Ounit,
' Name ',' ASCE-benchmark 120DOF ';
m=ar(ts ) :k ),order,' yw ' );
compa