灰色关联分析与预测模型

灰色系统分析方法在建模中的应用:相关性问题、预测问题

1)灰色关联分析;2)灰色预测:人口、灾变...等;3)灰色决策;4)灰色预测

灰色系统:系统内一部分信息已知,另一部分未知,系统内各因素间有不确定关系。

灰色预测法:对一种含有不确定因素(在一定范围内变化的与时间有关的灰色过程)的系统进行预测的方法。

        灰色系统通过鉴别系统因素之间发展趋势的相异程度,即进行关联分析,并可对原始数据进行生成处理寻找系统变动的规律,生成有较强规律性的数据序列(等时距),然后建立相应的微分方程模型,从而预测事务未来发展趋势的状况。

一、灰色预测的四种常见类型

1)灰色时间序列预测

2)畸变预测(异常值的预测:如 异常气候等)

通过灰色模型预测异常值出现的时刻,预测异常值什么时候出现特定时区内。

3)系统预测

对系统行为特征指标建立一组相互关联的灰色预测模型,预测系统中众多变量间的相互协调关系的变化。

4)拓扑预测

二、灰色关联度与优势分析

 2.1灰色关联度

 sign:符号函数(y=sign(x): x<0,y=-1;x=0,y=0;x>0,y=1 )

2.2案例分析 (注意统一量纲)

三、灰色生成数列

 四、灰色模型GM(1,1)

 

 GM(1,1)灰色预测步骤:

 经检验,原始数据列满足 级比检验

 计算实例:

级比偏差均小于0.2,因此精度可以

案例:SARS疫情对某些经济指标影响

 表一:商品零售额(亿元)

表二:接待海外旅游人数(万人)

表三:综合服务业累计数据(亿元)

 模型的分析与假设

 提出假设:

建立灰色预测模型GM(1,1)

 

 模型求解

 代码计算每个表(以表1为例)

clc,clear
% 表一数据(表2,3同理)
han1=[83.0 79.8 78.1 85.1 86.6 88.2 90.3 86.7 93.3 92.5 90.9 96.9
      101.7 85.1 87.8 91.6 93.4 94.5 97.4 99.5 104.2 102.3 101.0 123.5 
      92.2 114.0 93.3 101.0 103.5 105.2 109.5 109.2 109.6 111.2 121.7 131.3
      105.0 125.7 106.6 116.0 117.6 118.0 121.7 118.7 120.2 127.8 121.8 121.9
      139.3 129.5 122.5 124.5 135.7 130.8 138.7 133.7 136.8 138.9 129.6 133.7
      137.5 135.3 133.0 133.4 142.8 141.6 142.9 147.3 159.6 162.1 153.5 155.9
      163.2 159.7 158.4 145.2 124.0 144.1 157.0 162.6 171.8 180.7 173.5 176.5];
han1(end,:)=[];%相当于 han1=han1(1:6,:);
m=size(han1,2);%把月份提取出来,12个月
x0=mean(han1,2);%返回每行的平均值
x1=cumsum(x0);%一次累加
alpha=0.4;
n=length(x0);%长度,数据的维度,n=6
z1=alpha*x1(2:n)+(1-alpha)*x1(1:n-1)%求邻域生成数
Y=x0(2:n);
B=[-z1,ones(n-1,1)];
ab=B\Y%求出a,b
k=6;%已知6年
x7hat=(x0(1)-ab(2)/ab(1))*(exp(-ab(1)*k)-exp(-ab(1)*(k-1)))%预测结果
z=m*x7hat %预测03年12个月总值
u=sum(han1)/sum(sum(han1)) %03年每月占全年的比例
v=z*u %03年每个月的预测值

模型结果分析:

灰色关联性分析代码:

%灰色关联分析步骤
%【1】确定比较对象(评价对象)(就是数据,并且需要进行规范化处理,就是标准化处理,见下面例题的表格数据)和参考数列(评价标准,一般该列数列都是1,就是最优的的情况) 
%【2】确定各个指标权重,可用层次分析确定 
%【3】计算灰色关联系数 
%【4】计算灰色加权关联度 
%【5】评价分析
clear,clc
x1=[1.14 1.49 1.69 2.12 2.43 4.32 5.92 6.07 7.85;
    3.30 3.47 3.61 3.80 4.00 4.19 4.42 4.61 4.80;
    6.00 6.00 6.00 7.50 7.50 7.50 9.00 9.00 9.00;
    1.20 1.20 1.80 1.80 1.80 2.40 2.70 3.60 4.00;
    4.87 5.89 6.76 7.97 8.84 10.05 11.31 12.25 11.64];%原始数据5行9列
x=x1;
n=length(x1)%列(指标数)
for i=1:5
    for j=1:9
  x(i,j)=x(i,j)/x1(1,j);
 end
end
x1=x;
for i=1:5
    for j=1:9
  x(i,j)=abs(x(i,j)-x1(i,1));
 end
end
max=x(1,1);
min=x(1,1);
for i=1:5
    for j=1:9
 if x(i,j)>=max
     max=x(i,j)
 end
  end
end
for i=1:5
    for j=1:9
 if x(i,j)<=min
     min=x(i,j)
  end
  end
end
k=0.5 ;%分辨系数取值
l=(min+k*max)./(x+k*max)%求关联系数矩阵
guanliandu=sum(l')/n
[rs,rind]=sort(guanliandu,'descend') %对关联度进行排序

灰色预测代码:

%灰色预测步骤
%(1)输入前期的小样本数据
%(2)输入预测个数
%(3)运行
clear,clc
y=input('请输入数据:');  %例如输入[1,3,5,7,9,10,12]
n=length(y);
yy=ones(n,1);
yy(1)=y(1);
for i=2:n
    yy(i)=yy(i-1)+y(i)
end
B=ones(n-1,2);
for i=1:(n-1)
    B(i,1)=-(yy(i)+yy(i+1))/2;
    B(i,2)=1;
end
BT=B';
for j=1:(n-1)
    YN(j)=y(j+1);
end
YN=YN';
A=inv(BT*B)*BT*YN;
a=A(1);
u=A(2);
t=u/a;
t_test=input('输入需要预测的个数:');
i=1:t_test+n;
yys(i+1)=(y(1)-t).*exp(-a.*i)+t;
yys(1)=y(1);
for j=n+t_test:-1:2
    ys(j)=yys(j)-yys(j-1);
end
x=1:n;
xs=2:n+t_test;
yn=ys(2:n+t_test);
plot(x,y,'^r',xs,yn,'*-b');
det=0;
for i=2:n
    det=det+abs(yn(i)-y(i));
end
det=det/(n-1);
disp(['百分绝对误差为:',num2str(det),'%']);
    disp(['预测值为:',num2str(ys(n+1:n+t_test))]);

  • 13
    点赞
  • 96
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值