⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 ar.m

📁 运用自回归滑动平均模型进行预测的matlab 程序
💻 M
📖 第 1 页 / 共 2 页
字号:
    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 + -