阅读文献中涉及到灰色关联度分析,于是便于上网查阅,在CSDN上查到一篇比较通俗易懂的文章,但是其中有些部分讲解的无法理解,于是便决定写一篇关于灰色关联度分析的文章,在查阅了有关资料后本文将从以下几个方面去介绍灰色关联度
1.灰色关联度定义
2.灰色关联度如何计算
3.Matlab程序详细解析
1.灰色关联度定义
灰色关联度定义:对于两个系统之间的因素,其随时间或不同对象而变化的关联性大小的量度,称为关联度。在系统发展过程中,若两个因素变化的趋势具有一致性,即同步变化程度较高,即可谓二者关联程度较高;反之,则较低。因此,灰色关联分析方法,是根据因素之间发展趋势的相似或相异程度,亦即“灰色关联度”,作为衡量因素间关联程度的一种方法。------取自百度百科
其实很好理解,如上图图1所示,旅游总收入与许多因素息息相关,如在校大学生人数,旅游人数,星级饭店数等,其中我们为了探究哪个因素对旅游总收入影响最大,我们便提出了灰色关联度分析法。
2.灰色关联度如何计算
①母序列与子序列:为了计算灰色关联度,我们首先得确定母序列与子序列,母序列便是你想要研究的目标,如图1中旅游总收入,子序列则是影响母序列的因素,如校大学生人数,旅游人数,星级饭店数等等。
②归一化:首先解释下为什么要归一化,如图2所示,显然不同种类的数据差别过大,此外单位也不是一个量级的,因此必须做归一化处理,在此我们采用初值化处理,即将每个种类的数据除以该种类数据1998年的数据,处理后的数据如图3所示。
③灰色关联系数计算公式:其具体计算公式如图4
其中X_0(K)代表旅游总收入在K年份的值
X_i(K),则代表第i个因素在K年份的值(i=1,2,3)
其中对于min min |X0(K)-X_i(K)| 与 max max |X0(K)-X_i(K)| 都是定值,以min min |X0(K)-X_i(K)| 为例,该式其实很好理解首先固定i,如令i=1,则式子就代表在不同年份下,寻找旅游总收入与在校大学生人数之间差值的最小值,假设找到 X1,同理,则再令i=2,找到 X2再令i=3,找到 X3, 最后我们需要再X1,X2,X3中选取最小值X,同理max max |X0(K)-X_i(K)| 也为定值。
由于做了初值化处理,由图3也显然得出,min min |X0(K)-X_i(K)| 为0,所以ρ不能为0,ρ的取值通常在0-1之间,本次实验选取ρ=0.5。
3.Matlab代码
①取ρ=0.5
- clear
- travel_sum_money=[3439 4002 4519 4995 5566];
- student_number=[341 409 556 719 903];
- travel_people_number=[183 196 564 598 613];
- hotel_number=[3248 3856 6029 7358 8880];
- x_0=travel_sum_money;
- x_1=student_number;
- x_2=travel_people_number;
- x_3=hotel_number;
- %归一化处理
- x0=x_0./x_0(1);
- x1=x_1./x_1(1);
- x2=x_2./x_2(1);
- x3=x_3./x_3(1);
- %用矩阵进行计算,通过两个·min(max)求得其中最小值(最大值)
- g_min=min(min(abs([x1;x2;x3]-[x0;x0;x0])));
- g_max=max(max(abs([x1;x2;x3]-[x0;x0;x0])));
- %取ρ=0.5
- zeta1=(g_min+g_max*0.5)./(abs(x0-x1)+g_max*0.5);
- zeta2=(g_min+g_max*0.5)./(abs(x0-x2)+g_max*0.5);
- zeta3=(g_min+g_max*0.5)./(abs(x0-x3)+g_max*0.5);
- %求关联系数平均值
- average1=mean(zeta1);
- average2=mean(zeta2);
- average3=mean(zeta3);
- figure(1);
- plot(zeta1,'g-*');
- hold on
- plot(zeta2,'b-*');
- hold on
- plot(zeta3,'r-*');
- hold on
- legend('大学生数量','旅游人数','酒店数量');
- title('灰色关联系数');
- figure(2);
- plot(x_1,'g-*');
- hold on
- plot(x_2,'b-*');
- hold on
- plot(x_3,'r-*');
- hold on
- plot(x_0,'k-*');
- hold on
- legend('大学生数量','旅游人数','酒店数量','总收入');
- title('未经归一化');
- figure(3)
- plot(x1,'g-*');
- hold on
- plot(x2,'b-*');
- hold on
- plot(x3,'r-*');
- hold on
- plot(x0,'k-*');
- hold on
- legend('大学生数量','旅游人数','酒店数量','总收入');
- title('归一化')
图5为关联系数平均值,可知影响因素为大学生人数>酒店数量>旅游人数
distance1=(0.7505-0.7154)/0.7505=4.67688%
distance2=(0.7154-0.5848)/0.7154=18.2555%
②取ρ=0.1
distance1=(0.1501-0.1431)/0.1501=4.6635%
distance2=(0.1431-0.1170)/0.1431=18.239%