📄 ar.m
字号:
for i=1:5
r=W(i)*Y(t-i)+r;
end
at= Y(t)-r;
end
figure;
for t=6:88
y(t)=0;
for i=1:5
y(t)=W(i)*Y(t-i)+y(t);
end
y(t)=y(t)+at;
y(t)=Yt(t+1)-y(t);
y(t)=P(t+1)-y(t);
end
plot(y,'r-*'); % 样本数据模型逼近曲线
hold on;
plot(91:96,z1,'r-*');
hold on;
plot(P,'--'); % 原样本曲线
title('AR(5)模型样本逼近预测曲线');
pause
%-----------------------------绘制数据模型逼近曲线-----------------------------------%
%-------------------------预测误差分析------------------------%
%-----------计算单步预测绝对误差-------------%
D=[13.70 13.66 13.27 13.56 13.14 14.19 ];
for i=1:6
e1(i)=D(i)-z1(i);
PE1(i)= (e1(i)/D(i))*100;
end
e1 % 单步预测的绝对误差 e1 = -0.2423 0.2499 -0.0888 0.5744 -0.1194 1.2348
PE1
%------单步预测平均绝对误差-------------------%
mae1=sum(abs(e1)) /6 % mae1 = 0.2681
%------单步预测平均绝对百分比误差-------------------%
MAPE1=sum(abs(PE1))/6
%------绘制预测结果和实际值的比较图-----------%
figure;
plot(1:6,D,'-+') ;
hold on;
plot(z1,'r-*');
title('向前一步预测值和实际值对比图');
hold off;
pause
%--------------------------------单步预测 预测当前时刻后的六个数据---------------------------------%
%----------------------------------多步预测 目的是向前六步预测--------------------------------------%
Xt=[ Y(84) Y(85) Y(86) Y(87) Y(88)]; %取当前时刻之前的6个数据
Z(1)=W(1)*Xt(5)+W(2)*Xt(4)+W(3)*Xt(3)-W(4)*Xt(2)-W(5)*Xt(1)
%------求向前l步的预测值
%预测步数小于5时
for l=2:5
K(l)=0;
for i=1:l-1
K(l)=W(i)*Z(l-i)+K(l);
end
G(l)=0;
for j=l:5
G(l)=W(j)*Xt(5+l-j)+G(l);
end
Z(l)=K(l)+G(l);
end
%预测步数大于5时(向前6步预测)
for l=6:6
K(l)=0;
for i=1:5
K(l)=W(i)*Z(l-i)+K(l);
end
Z(l)=K(l);
end
%----预测值进行反标准化处理
r=Z*v+Ux % 0.0581 0.0844 0.0156 0.0319 0.0632 0.0652
r(1)=Yt(90)+r(1); %一次反差分
z(1)=P(90)+r(1) %二次反差分
for i=2:6
r(i)=r(i-1)+r(i);
z(i)=z(i-1)+r(i)
end
%---------------------------- 预测误差分析 ------------------------------%
%-------计算绝对误差和相对误差
D=[13.70 13.66 13.27 13.56 13.14 14.19 ]; % 预测值 z =14.0281 13.9606 13.9087 13.8887 13.9318 14.0403
for i=1:6
e6(i)=D(i)-z(i);
PE6(i)= (e6(i)/D(i))*100;
end
e6 % 多步预测的绝对误差 e = -0.3281 -0.3006 -0.6387 -0.3287 -0.7918 0.1497
PE6 % 多步预测的相对误差
1-abs(PE6) % 准确率
%------多步预测平均绝对误差
mae6=sum(abs(e6)) /6
%------多步预测平均绝对百分比误差
MAPE6=sum(abs(PE6))/6
%------绘制预测结果和实际值的比较图
figure;
plot(1:6,D,'-+')
hold on;
plot(z,'r-*');
title('向前六步预测值和实际值对比图');
hold off;
////////////////////////
x =
Columns 1 through 6
-0.5386 0.0522 -0.1024 0.1529 -0.1005 0.0879
Columns 7 through 12
-0.0663 0.0127 -0.0147 0.1122 -0.1924 0.1290
Columns 13 through 18
-0.0523 0.1399 -0.1931 0.0557 -0.0059 0.1092
Columns 19 through 20
-0.1111 0.0548
X2 =
-0.7190
-0.3350
X22 =
-0.3350
X3 =
-0.8494
-0.6149
-0.3892
X33 =
-0.3892
X4 =
-0.9306
-0.7432
-0.5664
-0.2087
X44 =
-0.2087
X5 =
-0.9784
-0.8729
-0.7366
-0.4218
-0.2290
X55 =
-0.2290
X6 =
-1.0038
-0.9196
-0.8182
-0.5185
-0.3374
-0.1109
X66 =
-0.1109
X7 =
-1.0132
-0.9482
-0.8622
-0.5879
-0.4154
-0.1959
-0.0848
X77 =
-0.0848
X8 =
-1.0213
-0.9671
-0.9023
-0.6446
-0.4986
-0.2875
-0.1826
-0.0965
X88 =
-0.0965
X9 =
-1.0310
-0.9854
-0.9310
-0.6944
-0.5630
-0.3775
-0.2791
-0.1985
-0.0998
X99 =
-0.0998
X10 =
-1.0228
-0.9691
-0.9082
-0.6636
-0.5170
-0.3209
-0.2031
-0.1181
-0.0157
0.0816
X1010 =
0.0816
X101 =
-1.0145
-0.9708
-0.9203
-0.6844
-0.5499
-0.3738
-0.2711
-0.2110
-0.1149
-0.0231
-0.1024
X1111 =
-0.1024
X12 =
-1.0204
-0.9721
-0.9269
-0.6965
-0.5655
-0.3953
-0.3027
-0.2504
-0.1678
-0.0789
-0.1607
-0.0575
X1212 =
-0.0575
X =
Columns 1 through 6
-0.5386 -0.3350 -0.3892 -0.2087 -0.2290 -0.1109
Columns 7 through 12
-0.0848 -0.0965 -0.0998 0.0816 -0.1024 -0.0575
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -