搜索
您的当前位置:首页正文

【数学建模】数模day13-灰色系统理论I-灰色关联与GM(1,1)预测

来源:抵帆知识网
【数学建模】数模day13-灰⾊系统理论I-灰⾊关联与GM(1,1)

预测

接下来学习灰⾊系统理论。

0.

什么是灰⾊系统?

部分信息已知⽽部分信息未知的系统,我们称之为灰⾊系统。相应的,知道全部信息的叫⽩⾊系统,完全未知的叫⿊⾊系统。

为什么采⽤灰⾊系统理论?

在给定信息不多,并且⽆法建⽴客观的物理原型,其作⽤原理亦不明确,内部因素难以辨识或之间关系隐蔽,⼈们很难准确了解这类系统的⾏为特征,因此对其定量描述难度较⼤。这时就采⽤“灰⾊系统理论”。

⽐如说,社会、经济、农业、⽣态问题的系统中,噪声普遍存在,⼀般受随机侵蚀的系统理论⽴⾜于【概率统计】,⽐如回归分析、⽅差分析、主成分分析等等。但是这些在⼩样本(数据不⾜)、样本没有较好的统计分布规律、难以量化等问题下,都不能够很好的胜任。尤其是,涉及到预测问题时,直接回归⽅程代⼊数得”预测“明显不符合客观规律,⽽使⽤灰⾊预测(通常使⽤GM(1,1))更可靠。

1.

关联分析

这个⽅法解决的是:因素之间关联性如何,关联程度如何量化的问题。讨论因素之间关联性如何,之前我们采⽤【回归分析】,即因变量对⾃变量求回归⽅程,这是基于更多样本的量化讨论。为了做【整体系统分析】,得到⼀个好的【直观过程】,以及为了【定性描述】,可以考虑采⽤【关联分析】。

实际上,实际应⽤中,我们可以【关联分析】+【回归分析】⼀起做。

关联分析实际上是动态过程发展态势的量化⽐较分析。

简⽽⾔之,关联分析是从整体态势上把握两(多)变量(每个变量的不同样本构成数列)之间的相关程度,并且从整体上分析减少了异常点的影响。

所谓发展态势⽐较,也就是系统各时期有关统计数据的⼏何关系的⽐较。

1) 做关联分析⾸先讨论数据变换技术。

通过数据变换消除【量纲】,使其具有【可⽐性】。

2) 做关联分析:

3) 关联分析案例:

分析求解:

依照问题的要求,我们⾃然选取铅球运动员专项成绩作为参考数列,将其余的各个数列的初始化数列代⼊计算关联度公式,易算出各数列的关联度如下表:关联度表:

matlab程序如下:

数据:x.txt

13.6 14.01 14.54 15.64 15.69 11.50 13.00 15.15 15.30 15.02 13.76 16.36 16.90 16.56 17.30 12.41 12.70 13.96 14.04 13.46 2.48 2.49 2.56 2.64 2.59 85 85 90 100 105 55 65 75 80 80 65 70 75 85 90

12.80 15.30 16.24 16.40 17.05 15.30 18.40 18.75 17.95 19.30 12.71 14.50 14.66 15.88 15.70 14.78 15.54 16.03 16.87 17.82 7.64 7.56 7.76 7.54 7.70 120 125 130 140 140 80 85 90 90 95

4.2 4.25 4.1 4.06 3.99

13.1 13.42 12.85 12.72 12.56

程序:

1 % 关联分析 2 load x.txt 3 for i = 1:15

4 x(i,:) = x(i,:)/x(i,1); %前15数列做标准化 5 end

6 for i = 16:17

7 x(i,:) = x(i,1)./x(i,:); %后两个做标准化 8 end

9 data = x;

10 n = size(data,2); %矩阵列数,即观测时刻的个数11 ck = data(1,:); %选第⼀列是参考数列12 bj = data(2:end,:);%其余列是⽐较数列13 m2 = size(bj,1);%⽐较数列个数14 for j = 1:m2

15 t(j,:) = bj(j,:)-ck;16 end

17 mn = min(min(abs(t'))); %最⼩差18 mx = max(max(abs(t'))); %最⼤差19 rho = 0.5; %分辨系数设置

20 ksi = (mn + rho*mx)./(abs(t)+rho*mx);%求关联系数21 r = sum(ksi')/n %关联度

22 [rs,rind] = sort(r,'descend') %关联度排序‘

matlab结果:

依次打印关联度:r = 1 ⾄ 6 列

0.5881 0.6627 0.8536 0.7763 0.8549 0.5022 7 ⾄ 12 列

0.6592 0.5820 0.6831 0.6958 0.8955 0.7047 13 ⾄ 16 列

0.9334 0.8467 0.7454 0.7261排序后:rs = 1 ⾄ 6 列

0.9334 0.8955 0.8549 0.8536 0.8467 0.7763 7 ⾄ 12 列

0.7454 0.7261 0.7047 0.6958 0.6831 0.6627

13 ⾄ 16 列

0.6592 0.5881 0.5820 0.5022

rind = 1 ⾄ 10 列

13 11 5 3 14 4 15 16 12 10 11 ⾄ 16 列

9 2 7 1 8 6

2.

优势分析:

⼀个例⼦:假如有关联度矩阵如下:分析:

3.

⽣成数:

我们主要使⽤【累加⽣成】,其理论如下:

应⽤中,最常⽤的是 1 次累加⽣成。

⼀般地,经济数列等实际问题的数列皆是⾮负数列,累加⽣成可使⾮负的摆动与⾮摆动的数列或任意⽆规律性的数列转化为⾮减的数列。

有些实际问题的数列中有负数(例如温度等),累加时略微复杂。有时,由于出现正负抵消这种信息损失的现象,数列经过累加⽣成后规律性⾮但没得到加强,甚⾄可能被削弱。对于这种情形,我们可以先进⾏【移轴】,然后再做【累加⽣成】。

4.

灰⾊GM(1,1)模型

GM是Grey Model的简写。

1)GM(1,1)定义:

2)GM(1,1)的⽩化型:

应当注意,GM(1,1)表⽰模型师⼀阶⽅程并且只有⼀个变量;推⼴之,加⼊有m个⽅程,n个变量则为G(m,n)。pdf讨论了G(1,N)/G(2,N)等,⽤到再说,对于这⾥,我们⾸先详细使⽤G(1,1)。

5.

灰⾊预测

灰⾊预测是指利⽤ GM 模型对系统⾏为特征的发展变化规律进⾏估计【预测】,同时也可以对⾏为特征的异常情况发⽣的时刻进⾏估计计算(把异常时间作为数列),以及对在特定时区内发⽣事件的未来时间分布情况做出研究等等。这些⼯作实质上是将“随机过程”当作“灰⾊过程”,“随机变量”当作“灰变量”,并主要以灰⾊系统理论中的 【GM(1,1)模型】来进⾏处理。

1) 灰⾊预测的⽅法

2) 灰⾊预测处理的步骤(使⽤)

1. 数据的检验和处理2. 建⽴模型

参考上述GM(1,1)⽅法,建⽴GM(1,1)模型,并求解该微分⽅程,得到预测值:

3. 检验预测值

4. 预测预报

由模型 GM(1,1)所得到的指定时区内的预测值,根据实际问题的需要,给出相应的预测预报。

另⼀个应⽤--灾变预测

⼀个案例:

假定⼩于320为异常。预测下⼀次异常出现的时间(旱灾)。

6.

灰⾊预测计算实例:如何使⽤、求解以及分析

灰⾊G(1,1)预测步骤:

步骤:

第⼀步:级⽐检验

(1)求级⽐,列出级⽐向量。

(2)级⽐判断:若所有级⽐都落在可容覆盖内,则通过,说明原始数据适合使⽤GM(1,1)

第⼆步:GM(1,1)建模(1)原始数据做⼀次累加(2)列出GM(1,1)模型

第三步:求解模型

(1)最⼩⼆乘法求解GM(1,1)

(2)求⽣成数列预测值以及模型还原值(3)相应可以得到预测值-真实值⽐较表格

第四步:模型检验

(1)原始值-模型值-残差-相对误差0级⽐偏差表格(2)根据表格作出说明

⼀个实例:

北⽅某城市 1986~1992 年道路交通噪声平均声级数据如下: 序号年份Leq1234567

198671.1198772.4198872.4198972.1199071.4199172.0199271.6

求解分析:

求解MATLAB程序如下:

%此程序原著pdf上程序是有bug的,以下已经调通

1 clc,clear

2 x0=[71.1 72.4 72.4 72.1 71.4 72.0 71.6]';%注意这⾥为列向量 3 n=length(x0);

4 lamda=x0(1:n-1)./x0(2:n) %计算级⽐ 5 range=minmax(lamda') %计算级⽐的范围 6 x1=cumsum(x0); %累加运算

7 B=[-0.5*(x1(1:n-1)+x1(2:n)),ones(n-1,1)]; 8 Y=x0(2:n);

9 u=B\\Y %最⼩⼆乘,拟合参数10 syms x(t)

11 x=dsolve(diff(x)+u(1)*x==u(2),x(0)==x0(1));12 x=subs(x,{'a','b','x0'},{u(1),u(2),x1(1)});13 yuce1=subs(x,t,[0:n-1]);14 yuce1 = double(yuce1);

15 %为提⾼预测精度,先计算预测值,再显⽰微分⽅程的解16 y=vpa(x,6) %其中的 6 表⽰显⽰ 6 位数字

17 yuce=[x0(1),diff(yuce1)] %差分运算,还原数据18 epsilon=x0'-yuce %计算残差

19 delta=abs(epsilon./x0') %计算相对误差

20 rho=1-(1-0.5*u(1))/(1+0.5*u(1))*lamda' %计算级⽐偏差值

求解结果如下:

级⽐:lamda = 0.9820 1.0000 1.0042 1.0098 0.9917 1.0056

级⽐范围:range =

0.9820 1.0098模型参数:u = 0.0023 72.6573

求解模型得⽅程:

y = 31000.0 - 30928.9*exp(-0.00234379*t) 模型值:yuce = 1 ⾄ 6 列

71.1000 72.4057 72.2362 72.0671 71.8984 71.7301 7 列 71.5622

残差:epsilon = 1 ⾄ 6 列

0 -0.0057 0.1638 0.0329 -0.4984 0.2699 7 列 0.0378

相对误差:delta = 1 ⾄ 6 列

0 0.0001 0.0023 0.0005 0.0070 0.0037 7 列 0.0005

级⽐偏差:rho =

0.0203 0.0023 -0.0018 -0.0074 0.0107 -0.0032

因篇幅问题不能全部显示,请点此查看更多更全内容

Top