与灰色预测模型一样,比赛不能优先使用,灰色关联往往可以与层次分析结合使用。层次分析用在确定权重上面

【1】确定比较对象(评价对象)(就是数据,并且需要进行规范化处理,就是标准化处理,见下面例题的表格数据)和参考数列(评价标准,一般该列数列都是1,就是最优的的情况)

【2】确定各个指标权重,可用层次分析确定

【3】计算灰色关联系数

python实现灰色关联分析的代码 灰色关联分析法代码_权重


这是一个比较复杂的公式,给出的代码可以直接运行出来,可以先不管这个公式。

【4】计算灰色加权关联度,计算公式为:

python实现灰色关联分析的代码 灰色关联分析法代码_python实现灰色关联分析的代码_02


其中Ri就是第i个指标对理想对象(参考数列,一般该数列都是1,就是最有情况)的加权关联度。就可以认为是评价的结果。

其中Ri就是第i个指标对理想对象(参考数列,一般该数列都是1,就是最有情况)的加权关联度。就可以认为是评价的结果。

【5】评价分析。

例 1 通过对某健将级女子铅球运动员的跟踪调查,获得其 1982 年至 1986 年每年最好成绩及 16 项专项素质和身体素质的时间序列资料,见下表,试对此铅球运动员的专项成绩进行因素分析。

表 各项成绩数据

python实现灰色关联分析的代码 灰色关联分析法代码_权重_03


python实现灰色关联分析的代码 灰色关联分析法代码_文本文件_04


python实现灰色关联分析的代码 灰色关联分析法代码_权重_05

源代码:基于MATLAB2014a编程
clc,clear
load x.txt %把原始数据存放在纯文本文件 x.txt 中,其中把数据的"替换替换成.
for i=1:15
    x(i,:)=x(i,:)/x(i,1); %标准化数据
end
for i=16:17
    x(i,:)=x(i,1)./x(i,:); %标准化数据
end

data=x;
n=size(data,2); %求矩阵的列数,即观测时刻的个数
ck=data(1,:); %提出参考数列
bj=data(2:end,:); %提出比较数列
m2=size(bj,1); %求比较数列的个数
for j=1:m2
    t(j,:)=bj(j,:)-ck;
end
mn=min(min(abs(t'))); %求最小差
mx=max(max(abs(t'))); %求最大差
rho=0.5; %分辨系数设置
ksi=(mn+rho*mx)./(abs(t)+rho*mx); %求关联系数
r=sum(ksi')/n %求关联度
[rs,rind]=sort(r,'descend') %对关联度进行排序
运行结果的r为各指标和成绩的关联度,rind即为各指标和成绩的关联度大小排序的结果。在使用本程序的时候,只需要把数据换成自己自己的数据,以及把循环次数改一下即可。