灰色关联分析综述
诸如经济系统、生态系统、社会系统等抽象系统都包含许多因素,系统整体的发展受各个因素共同影响。
为了更好地推动系统发展,我们需要清楚哪些因素是主要的,哪些是次要的,哪些是积极的,哪些是消极的,这就要求我们进行系统分析。
数理统计中的系统分析方法包括回归分析、方差分析和主成分分析,它们都存在一些不足之处,当数据样本较少时,灰色关联分析方法可以较好地克服那些不足。
因此,当样本个数较大时,一般使用标准化回归;当样本个数较少时,才使用灰色关联分析。
灰色关联分析的基本思想,是根据序列曲线的几何形状的相似程度来判断其联系是否紧密,曲线越接近,相似序列之间的关联度就越大,反之就越小。
接下来我们用两个例题来介绍一下灰色关联分析的两种应用。
应用一:进行系统分析
第一步:画统计图并分析
由图可知:
- 四个变量均呈上升趋势;
- 第二产业的增幅较为明显;
- 第二产业和第三产业的差距在后三年相差更大。
第二步:确定分析数列
母序列(参考数列、母指标):能反映系统行为特征的数据序列。类似于因变量Y,这里记作X0
子序列(比较序列、子指标):影响系统行为的因素组成的数据序列。类似于自变量X,记作X1~Xn
在例题中,国内生产总值就是母序列,第一、第二和第三产业就是子序列。
第三步:对变量进行预处理
目的:去量纲,缩小变量范围以简化计算。
对母序列和子序列中的每个指标进行预处理:先求出每个指标的均值,再用该指标的每个元素除以其均值。
第四步:计算子序列中各个指标与母序列的关联系数
第五步:求出灰色关联度
第六步:比较关联度,得出结论
对这个例题来说,该地区在2000年至2005年间的国内生产总值受到第三产业的影响最大(其灰色关联度最大)。
代码
clear;clc
load gdp.mat % 导入数据 一个6*4的矩阵
Mean = mean(gdp); % 求出每一列的均值以供后续的数据预处理
gdp = gdp ./ repmat(Mean,size(gdp,1),1); %size(gdp,1)=6, repmat(Mean,6,1)可以将矩阵进行复制,复制为和gdp同等大小,然后使用点除(对应元素相除)
disp('预处理后的矩阵为:'); disp(gdp)
Y = gdp(:,1); % 母序列
X = gdp(:,2:end); % 子序列
absX0_Xi = abs(X - repmat(Y,1,size(X,2))) % 计算|X0-Xi|矩阵(在这里我们把X0定义为了Y)
a = min(min(absX0_Xi)) % 计算两级最小差a
b = max(max(absX0_Xi)) % 计算两级最大差b
rho = 0.5; % 分辨系数取0.5
gamma = (a+rho*b) ./ (absX0_Xi + rho*b) % 计算子序列中各个指标与母序列的关联系数
disp('子序列中各个指标的灰色关联度分别为:')
disp(mean(gamma))
应用二:综合评价问题
题目:评价下表中20条河流的水质情况。(用Topsis结合熵权法也可以解决)
解题步骤
- 对指标正向化
- 对正向化后的矩阵进行预处理
- 将预处理后的矩阵每一行取出最大值构成母序列
- 计算各个指标与母序列的灰色关联度
- 计算各个指标灰色关联度的权重
- 计算各个评价对象的得分(用权重计算)
- 对得分进行归一化