灰色预测模型

gm(1,1)

% x0=[3 5 1 2 7];
% n=length(x0);
% x1=cumsum(x0);
% t1=x1;
% for k=2:n
%     t1(k)=(x1(k)+x1(k-1))/2;%z1是x1的上午紧邻均值生成数列
% end
% for k=2:n
%     y(k-1)=x0(k);
% end
% for k=2:n
%     z1(k-1)=t1(k);
% end
% z1=z1';
%  fai=[-z1 ones(n-1,1)];
% theta=inv(fai'*fai)*fai*y';
%  a=theta(1);
%  b=theta(2);
% for k=0:n-1
%      x1(k+1)=(x1(1)-b/a)*exp(-a*k-1)+b/a;
%  end
%  for k=1:n-1
%      x0(k)=x1(k+1)-x1(k);
%  end
clc
clear
x0=[2 3 3 4]';
n=length(x0);
x1=cumsum(x0);
z1=zeros(n-1,1);                                %给z1预先分配空间,然后计算均值生成列
for i=1:n-1
    z1(i)=1/2*(x1(i+1)+x1(i));
end
Y=x0(2:n);
phi=[-z1(1:3) ones(3,1)];                       %计算Φ
theta=(phi'*phi)^(-1)*phi'*Y;                   %计算最小二乘参数
c=theta(2)/theta(1);           
for k=0:5                                       %计算差分后的时间响应序列
    xx1(k+1)=[x1(1)-c]*exp(-theta(1)*k)+c;
end
xx0=x0(1);                                      %还原x0的值
for k=1:5 
xx0(k+1)= xx1(k+1)-xx1(k);
end
x=2006:2011;                                    %画图对比,2009年以后的是预测值
plot(x(1:4),x0,'*',x,xx0,'ro')
disp('均方误差为:')
MSE=1/n*sum((x0'-xx0(1:4)).^2)                  %方差误差
% RMSE=sqrt(MSE);                               %均方根误差
s1=var(x0);                                     %x0的方差=  5
s2=var(x0'-xx0(1:n));                           %残差的方差
s0=sum(x0(2:n-1)-x0(1))+1/2*(x0(n)-x0(1));
ss0=sum(xx0(2:n-1)-x0(1))+1/2*(xx0(n)-x0(1));
disp('绝对关联度为:')
epsilon=(1+abs(s0)+abs(ss0))/(1+abs(s0)+abs(ss0)-abs(s0-ss0))  %绝对关联度
if epsilon>0.9
    disp('预测精度等级:好')
   elseif  epsilon>0.8
       disp('绝对关联度为:合格')
         elseif epsilon>0.7
             disp('绝对关联度为:勉强')
             else
                 disp('绝对关联度为:不合格')
end

灰色预测模型

上一篇:Linux设备树中节点的命名格式和常见属性【转】


下一篇:CF165E Compatible Numbers