[关闭]
@notmylove 2019-07-02T05:58:55.000000Z 字数 3859 阅读 6359

灰色关联分析法(GRA)

数学 经济


什么是灰色关联分析

对于两个系统之间的因素,其随时间或不同对象而变化的关联性大小的量度,称为关联度。在系统发展过程中,若两个因素变化的趋势具有一致性,即同步变化程度较高,即可谓二者关联程度较高;反之,则较低。因此,灰色关联分析方法,是根据因素之间发展趋势的相似或相异程度,亦即“灰色关联度”,作为衡量因素间关联程度的一种方法。

灰色系统理论提出了对各子系统进行灰色关联度分析的概念,意图透过一定的方法,去寻求系统中各子系统(或因素)之间的数值关系。通常可以运用此方法来分析各个因素对于结果的影响程度,也可以运用此方法解决随时间变化的综合评价类问题。因此,灰色关联度分析对于一个系统发展变化态势提供了量化的度量,非常适合动态历程分析。也就是说应用灰色关联度分析法可以得到两个因素之间的关联度,也就是一个因素对另一个因素的影响程度,并且这个影响程度是可以用数值来量化的,因此可以进一步地对各因素的影响程度进行对比。

因素分析法

那么大家有没有发现,这跟课程中的梅老师讲的统计分析方法-因素分析法是不是有相似之处。因素分析法是利用统计指数体系分析现象总变动中各个因素影响程度的一种统计分析方法,包括连环替代法、差额分析法、指标分解法等。它是将分析指标分解为各个可以计量的因素,并根据各个因素之间的依存关系,顺次用各因素的比较值(通常即实际值)替代基准值(通常为标准值或计划值),据以测定各因素对分析指标的影响。这是对于分析指标可以拆解成各因素,并且因素之间有函数表达式的情况下可以使用的方法。但是如果对于各因素之间不存在这样显示函数表达式的关系时,那么可以考虑使用灰色关联分析法。这里要注意的一点是,灰色关联分析是描述因素之间发展趋势的相似或相异程度,也就是说这里不分正影响与负影响

灰色关联分析的步骤

1. 确定参考数列和比较数列

反映系统行为特征的数据序列,称为参考数列;影响系统行为的因素成的数据序列,称比较数列。

2. 无量纲化处理
由于系统中各因素的物理意义不同,导致数据的量纲也不一定相同,不便于比较,或在比较时难以得到正确的结论。因此在进行灰色关联度分析时,一般都要进行无量纲化的数据处理。主要有一下两种方法:
  
(1)初值化处理:

(2)均值化处理:

计算关联系数

所谓关联程度,实质上是曲线间几何形状的差别程度。因此曲线间差值大小,可作为关联程度的衡量尺度。对于一个参考数列,有若干个比较数列,各比较数列与参考数列在各个时刻(即曲线中的各点)的关联系数 可由下列公式算出:


其中
其中 ρ为分辨系数,一般在0~1之间,通常取0.5。

计算关联度

因为关联系数是比较数列与参考数列在各个时刻(即曲线中的各点)的关联程度值,所以它的数不止一个,而信息过于分散不便于进行整体性比较。因此有必要将各个时刻(即曲线中的各点)的关联系数集中为一个值,即求其平均值,作为比较数列与参考数列间关联程度的数量表示,关联度公式如下:


值越接近1,说明相关性越好。

关联度排序

因素间的关联程度,主要是用关联度的大小次序描述,而不仅是关联度的大小。将m个子序列对同一母序列的关联度按大小顺序排列起来,便组成了关联序,记为{},它反映了对于母序列来说各子序列的“优劣”关系。若,则对于同一母序列, 优于.

应用实例

例1

下表为某地区国内生产总值的统计数据(以百万元计),问该地区从2000年到2005年之间哪一种产业对GDP总量影响最大。

年份 国内生产总值 第一产业 第二产业 第三产业
2000 1988 386 839 763
2001 2061 408 846 808
2002 2335 422 960 953
2003 2750 482 1258 1010
2004 3356 511 1577 1268
2005 3806 561 1893 1352

步骤1:确立母序列

在此需要分别将三种产业与国内生产总值比较计算其关联程度,故母序列为国内生产总值。若是解决综合评价问题时则母序列可能需要自己生成,通常选定每个指标或时间段中所有子序列中的最佳值组成的新序列为母序列。

步骤2:无量纲化处理

在此采用均值化法,即将各个序列每年的统计值与整条序列的均值作比值.

年份 国内生产总值 第一产业 第二产业 第三产业
2000 0.73196 0.8361 0.68276 0.74391
2001 0.75884 0.88375 0.68846 0.78778
2002 0.85972 0.91408 0.78123 0.92915
2003 1.01252 1.04404 1.02374 0.98473
2004 1.23564 1.10686 1.28333 1.23627
2005 1.40133 1.21516 1.54049 1.31817

步骤3:计算每个子序列中各项参数与母序列对应参数的关联系数

步骤4:计算关联度

用公式

可以得到通过比较三个子序列与母序列的关联度可以得出结论:该地区在2000年到2005年期间的国内生产总值受到第三产业的影响最大。

Python 代码

import numpy as np
import pandas as pd


def gra(data, rho):
# 数据均值化处理
data_mean = data.mean(axis=0)
data_pro = data/data_mean

# create data_pro to excel
data_df = pd.DataFrame(data_pro)
writer = pd.ExcelWriter('data_pro.xlsx')
# float_format 控制精度
data_df.to_excel(writer, 'sheet1', float_format='%.5f')
writer.save()

# 提取参考队列和比较队列
ck = data_pro[:, 0]
bj = data_pro[:, 1:]

# 求最大差和最小差
Delta = np.abs(ck.reshape(6,1) - bj)
mmax = Delta.max()
mmin = Delta.min()

# 求关联系数
ksi = ((mmin + rho * mmax) / (Delta + rho * mmax))
# 求关联度
ri = np.mean(ksi, axis=0)
return ri


if __name__ == "__main__":
    data_name = input("请输入测试数据集的名称:")
    if data_name == 'GRA_data':
        # 读取数据集
        xls_file = pd.ExcelFile('GRA_data.xlsx')
        table = xls_file.parse('Sheet1')
        pd1 = table.set_index(['年份'])
    data = np.array(pd1, dtype=np.float64)
    # 分辨系数rho取0.5
    ri = gra(data, 0.5)
print('各因素的影响程度为:', ri)

例2

山西省汾河上游的输沙量与降雨径流的灰色关联分析:

汾河是山西省的主要河流,在汾河下游距太原市100多公里的西山修建了汾河水库。该水库不但对农业灌溉、防洪蓄水、鱼类养殖等起着很大作用,并且还为太原市的用水提供了保证。建库以来,人们经常在考虑如何防止库容被泥沙淤塞,使水库能长期有效为工农业生产与人民生活服务。 影响泥沙输入水库的因素较多,比如降雨量、径流量、植被覆盖率等。在这些因素中哪些是主要的,哪些是次要的有待研究和量化分析。
计算步骤如上:

根据关联系数求关联度得
(年径流量与输沙量的关联程度)
(年平均降雨量与输沙量的关联程度)
(平均汛期降雨量与输沙量的关联程度)

相应的关联序为

上述关联序表明对输沙量影响最大的是年径流量,其次是汛期降雨量,再其次是平均年降雨量。实际上,强度大的暴雨冲刷力大,难以被土壤吸收,从而在地表形成径流,造成水土流失,引起河道泥沙流量的形成而暴雨又大多在汛期,因此径流量是引起河道输沙的综合因素,所以径流量大反映了雨强大,反映了水土保持较差,反映了水土流失较严重,反映了汛期雨量较大。而汛期的降雨量可能是雨强较大的的降雨量,也可能是雨强较小的降雨量。而平均年降雨量则与雨强、水土保持、水土流失无直接关系。

添加新批注
在作者公开此批注前,只有你和作者可见。
回复批注