灰色系统GM(1,1)模型预测实例

灰色系统

原理:采用累加和累减的方式,将灰色系统中的未知因素弱化,强化已知因素,通过数学方法确定方程中的参数,从而实现预测目的。

clear
clc
syms a u;
c=[a,u]';%构成矩阵
A1=xlsread('wen1');%输入数据,可以修改
A = A1( :,end)'
Ago=cumsum(A);%原始数据一次累加,得到1-AGO序列xi(1)。
n=length(A);%原始数据个数
for k=1:(n-1)
    Z(k)=(Ago(k)+Ago(k+1))/2; %Z(i)为xi(1)的紧邻均值生成序列
end
Yn =A;%Yn为常数项向量
Yn(1)=[]; %从第二个数开始,即x(2),x(3)...
Yn=Yn';
E=[-Z;ones(1,n-1)]';%累加生成数据做均值
c=(E'*E)\(E'*Yn);%利用公式求出a,u
c= c';
a=c(1);%得到a的值
u=c(2);%得到u的值
F=[];
F(1)=A(1);
for k=2:(n)
    F(k)=(A(1)-u/a)/exp(a*(k-1))+u/a;%求出GM(1,1)模型公式
end
G=[];
G(1)=A(1);
for k=2:(n)
    G(k)=F(k)-F(k-1);%两者做差还原原序列,得到预测数据
end
%figure 1
subplot(2,1,1)
hold on
t1=1:n;
t2=1:n;
plot(t1,A,'bo--')
hold on;
plot(t2,G,'r*-') 
title('预测结果');
legend('真实值','预测值');
%后验差检验
%figure 2
subplot(2,1,2)
hold on
e=A-G;
plot(e)
title('预测值与真实值误差')
ylabel('误差')
xlabel('时间')
q=e/A;%相对误差
s1=var(A);
s2=var(e);
c=s2/s1;%方差比
len=length(e);
p=0;  %小误差概率
for i=1:len
    if(abs(e(i))<0.6745*s1)
        p=p+1;
    end
end
p=p/len

在这里插入代码片

在这里插入图片描述
数据连接:https://share.weiyun.com/vXQfIuld

  • 2
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值