赞
踩
灰色系统分析方法在建模中的应用:相关性问题、预测问题
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)
经检验,原始数据列满足 级比检验
级比偏差均小于0.2,因此精度可以
表一:商品零售额(亿元)
表二:接待海外旅游人数(万人)
表三:综合服务业累计数据(亿元)
模型的分析与假设
提出假设:
建立灰色预测模型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))]);
赞
踩
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。