灰色关联度分析matlab代码(示例)
灰色关联度分析(Grey Relation Analysis,GRA),是一种多因素统计分析的方法。简单来讲,就是在一个灰色系统中,我们想要了解其中某个我们所关注的某个项目受其他的因素影响的相对强弱,再直白一点,就是说:我们假设以及知道某一个指标可能是与其他的某几个因素相关的,那么我们想知道这个指标与其他哪个因素相对来说更有关系,而哪个因素相对关系弱一点,依次类推,把这些因素排个序,得到一个分析结果,我们就可以知道我们关注的这个指标,与因素中的哪些更相关。
灰色系统这个概念的提出是相对于白色系统和黑色系统而言的。按照控制论的惯例,颜色一般代表的是对于一个系统我们已知的信息的多少,白色就代表信息充足,比如一个力学系统,元素之间的关系都是能够确定的,这就是一个白色系统;而黑色系统代表我们对于其中的结构并不清楚的系统,通常叫做黑箱或黑盒的就是这类系统。灰色介于两者之间,表示我们只对该系统有部分了解。
灰色关联度系数
matlab代码(示例):
% Grey relation analysis
clear
close all
clc
e1 = [3439, 4002, 4519, 4995, 5566]; %因素1
e2 = [341, 409, 556, 719, 903]; %因素2
e3 = [183, 196, 564, 598, 613]; %因素3
e4 = [3248, 3856, 6029, 7358, 8880]; %因素4
% define comparative and reference
x0 = e1;
x1 = e2;
x2 = e3;
x3 = e4;
% normalization
x0 = x0 ./ x0(1);
x1 = x1 ./ x1(1);
x2 = x2 ./ x2(1);
x3 = x3 ./ x3(1);
% global min and max
global_min = min(min(abs([x1; x2; x3] - repmat(x0, [3, 1]))));
global_max = max(max(abs([x1; x2; x3] - repmat(x0, [3, 1]))));
% set rho
rho = 0.5;
% calculate zeta relation coefficients
zeta_1 = (global_min + rho * global_max) ./ (abs(x0 - x1) + rho * global_max);
zeta_2 = (global_min + rho * global_max) ./ (abs(x0 - x2) + rho * global_max);
zeta_3 = (global_min + rho * global_max) ./ (abs(x0 - x3) + rho * global_max);
% show
figure;
plot(x0, 'ko-' )
hold on
plot(x1, 'b*-')
hold on
plot(x2, 'g*-')
hold on
plot(x3, 'r*-')
legend('因素1', '因素2', '因素3', '因素4')
figure;
plot(zeta_1, 'b*-')
hold on
plot(zeta_2, 'g*-')
hold on
plot(zeta_3, 'r*-')
title('Relation zeta')
legend('因素2', '因素3', '因素4')