2020.12.11
三、学习产出: 3.1 灰色关联分析基本思想 3.2 运用灰色关联分析的基本步骤 确定分析数列母序列(又称参考数列,母指标):能反映系统行为特征的数据序列——>类似与因变量Y子序列(又称比较数列,子指标):影响系统行为的因素组成的数据序列——>类似与自变量X 对变量进行预处理(去量纲,缩小变量范围,简化计算),先求出每个指标列的均值,再用该指标列的每一个元素都除以该指标列的均值用子序列中每一个元素减去对应母序列中同一行的那个元素,并取绝对值,由此得到一个新矩阵new_X。记a为矩阵中的最小元素,b为矩阵中的最大元素,分辨系数ro通常为0.5,那么每一个元素对应母序列的关联系数为 a+ro*b./(new_X+ro*b)然后,我们再对得到的关联系数矩阵求每一列均值,得到的最后结果gamma就是每一个指标对于母序列的灰色关联度 3.3 灰色关联分析代码实现(Matlab) 3.3.1 应用一:分析产业对GDP的影响程度数据:
由于第一产业、第二产业、第三产业的量纲相同,去量纲步骤可以跳过。大家在使用时需要注意自己的数据量纲是否相同。
%% 应用一:分析产业对GDP的影响程度clear;clc;load data.mat;r = size(data,1);c = size(data,2);%第一步,对变量进行预处理,消除量纲的影响(大家在使用时需要注意自己的数据量纲是否相同)%avg = repmat(mean(data),r,1);%data = data./avg;%定义母序列和子序列Y = data(:,1); %母序列X = data(:,2:c); %子序列Y2 = repmat(Y,1,c-1); %把母序列向右复制到c-1列absXi_Y = abs(X-Y2)a = min(min(absXi_Y)) %全局最小值b = max(max(absXi_Y)) %全局最大值ro = 0.5; %分辨系数取0.5gamma = (a+ro*b)./(absXi_Y+ro*b) %计算子序列中各个指标与母序列的关联系数disp("子序列中各个指标的灰色关联度分别为:");ans = mean(gamma)输出结果为:
子序列中各个指标的灰色关联度分别为:ans =0.73190.89830.8518 3.3.2 应用二:灰色关联分析评价河流情况数据:
%应用二:灰色关联分析评价河流情况clear;clc;load X.mat;%获取行数列数r = size(X,1);c = size(X,2);%首先,把我们的原始指标矩阵正向化%第二列中间型--->极大型middle = input("请输入最佳的中间值:");M = max(abs(X(:,2)-middle));for i=1:r X(i,2) = 1-abs(X(i,2)-middle)/M;end%第三列极小型--->极大型max_value = max(X(:,3)); X(:,3) = abs(X(:,3)-max_value);%第四列区间型--->极大型a = input("请输入区间的下界:");b = input("请输入区间的下界:");M = max(a-min(X(:,4)),max(X(:,4))-b);for i=1:rif (X(i,4)复制)除题头外的数据 在matlab中的变量内部的左上角,右键->粘贴 将变量data另存为data.mat文件(注意:需要存在和你代码的同一目录下) 然后就可以全选代码,右键运行啦! 3.5 总结 灰色关联分析法的优势在于,它弥补了采用数理统计方法系统分析所导致的缺憾,对样本量的多少和样本有无规律都适用,而且计算量小,十分方便,更不会出现与定性结果不符合的情况。但是灰色关联分析仅在我国有部分学者使用,在国际上并没有得到太多认可,而且当数据量较大的时候,使用标准化回归的方法是更好的选择,只有在数据很少万不得已的情况下,才考虑灰色关联分析,当然,你也可以两者综合考虑。值得一提的是,在灰色关联分析中,母序列有多个的情况,我们只需要分开计算即可,也就是说,每一个母序列,都对应一个完整的子序列。