灰色关联分析是什么
灰色关联分析同层次分析法和TOPSIS法一样,可以用来进行系统分析的方法。但与其他方法不同的是灰色关联分析对样本数量要求不高,计算量较小,且不会出现量化结果与定性分析结果不符的情况。
灰色关联分析的基本思想是根据序列曲线集合形状的相似程度来判断其联系是否紧密。曲线越接近,相应序列之间的关联度就越大,反之则越小。
灰色关联分析怎么用
应用1 进行系统分析
第一步:画统计图
根据统计图可得以下结论:
四个变量均呈上升趋势第二产业的增幅较为明显第二产业和第三产业的差距在后三年相差更大
第二步:确定分析序列
将这四个序列分为一个母序列和多个子序列。
母序列(参考序列)是能反映系统行为特征的序列。类似于因变量,此处记为x0x_0x0。
子序列(比较序列)是影响系统行为的因素组成的序列。类似于自变量,此处记为(x1,x2,x3,...xn)(x_1,x_2,x_3,...x_n)(x1,x2,x3,...xn)。
在本例中,国内生产总值是母序列,第一二三产业是子序列。
第三步:对变量进行预处理
预处理有两个目的:
去量纲缩小变量范围来简化计算
预处理的方法:先求出每个指标的均值,再用该指标中的每个元素都除以其均值。
第四步:计算子序列中各个指标与母序列的关联系数
设子序列的个数为mmm,每个序列有nnn个样本,则我们的数据可以表示为:
x0=(x0(1),x0(2),...,x0(n))Tx_0=(x_0(1),x_0(2),...,x_0(n))^Tx0=(x0(1),x0(2),...,x0(n))T
x1=(x1(1),x1(2),...,x1(n))Tx_1=(x_1(1),x_1(2),...,x_1(n))^Tx1=(x1(1),x1(2),...,x1(n))T
xm=(xm(1),xm(2),...,xm(n))Tx_m=(x_m(1),x_m(2),...,x_m(n))^Txm=(xm(1),xm(2),...,xm(n))T
设aaa为两极最小差,bbb为两极最大差
a=min(i)min(k)∣x0(k)−xi(k)∣a=min(i)min(k)|x_0(k)-x_i(k)|a=min(i)min(k)∣x0(k)−xi(k)∣
b=max(i)max(k)∣x0(k)−xi(k)∣b=max(i)max(k)|x_0(k)-x_i(k)|b=max(i)max(k)∣x0(k)−xi(k)∣
如图
关联系数yyy(Gamma值)的公式为:
y(x0(k),xi(k))=a+ρb∣x0(k),xi(k)∣+ρby(x_0(k), x_i(k))=\frac{a+\rho b}{|x_0(k), x_i(k)|+\rho b}y(x0(k),xi(k))=∣x0(k),xi(k)∣+ρba+ρb
其中ρ\rhoρ为分辨系数,一般取0.5
本例中每个样本的关联系数如图:
第五步:计算各个子序列的灰色关联度
设灰色关联度为y(x0,xi)y(x_0,x_i)y(x0,xi),则
y(x0,xi)=1n∑k=1ny(x0(k),xi(k))y(x_0,x_i)=\frac{1}{n}\sum_{k=1}^{n}y(x_0(k),x_i(k))y(x0,xi)=n1k=1∑ny(x0(k),xi(k))
(其实就是每个子序列的关联系数取平均值)
本例:
第一产业灰色关联度为0.5084
第二产业灰色关联度为0.6243
第三产业灰色关联度为0.7573
最后得到结论:灰色关联度最大的子序列即为对系统影响最大的因素
本例第三产业对国内生产总值影响最大
matlab代码示例:
%灰色关联分析clear;clc%加载数据,每个序列为一列,母序列在第一列load gdp.mat%画图[n ,m]= size(gdp);for i = 1:mplot(gdp(:,i), 'x-');hold on endhold offxlabel('年份')ylabel('百万元')legend({'国内生产总值','第一产业','第二产业','第三产业'})%对变量进行预处理y = gdp(:,1);x = gdp(:,2:end);x_norm = zeros(n ,m);x_sum = 0;for i = 1:mx_sum = sum(gdp(:,i));for j = 1:nx_norm(j, i) = gdp(j, i) / x_sum * n;endx_sum = 0;end%计算子序列中各个指标与母序列的关联系数x_concect = zeros(size(x));for i = 1: length(x_concect(1,:))x_concect(:,i) = abs(x_norm(:, 1) - x_norm(:,i+1));enda = min(min(x_concect));b = max(max(x_concect));%计算灰色关联度(gamma)rho = 0.5;gamma = zeros(n, m-1);for i = 1:m-1for j = 1:ngamma(j, i) = (a + rho * b)/(x_concect(j,i) + rho * b);endendans = mean(gamma);disp('最终得到的灰色关联度分别是:')disp(ans)% % 注意:代码文件仅供参考,一定不要直接用于自己的数模论文中% % 国赛对于论文的查重要求非常严格,代码雷同也算作抄袭
学习资源和部分图片来自“清风数学建模”