灰色系统
信息绝对透明的是白色系统,信息绝对秘密的是黑色系统,灰色系统介于两者之间
关联分析
即系统的分析因素
包含多种因素的系统中,哪些因素是主要的,哪些因素是次要的,哪些因素影响大,哪些因素影响小,哪些需要发展,哪些需要抑制……
现有因素分析的量化方法,大都是数理统计法,如回归分析,方差分析,主要成分分析等,但都有一下弱点:
- 要求大量数据,数据量少难以找到统计规律
- 要求分布是典型的(线性的,指数的或对数的),即使是典型的,也并非都能处理
- 计算工作量大,一般需要计算机辅助
- 有时可能出现反常情况,如正相关判断为负相关
灰色关联度分析
灰色关联度分析,是一种多因素统计分析的方法。灰色关联分析弥补了采用数理统计方法做系统分析所导致的缺憾。它对样本量的多少和样本有无规律都同样适用 ,而且计算量小,十分方便,更不会出现量化结果与定性分析结果不符的情况。
灰色关联分析的基本思想是根据序列曲线几何形状的相似程度来判断其联系是否紧密。曲线越接近,相应序列之间的关联度就越大,反之就越小。
对一个抽象的系统或现象进行分析,首先要选准反映系统行为特征的数据序列,称为找系统行为的映射量,用
映射量来间接的表征系统行为。
例如:用国民平均接受教育的年数来反映教育的发达程度,用刑事案件的案发率来反映社会治安与秩序,有了系统行为特征和相关因素的数据,即可作出各个序列的图形,从直观上进行分析。
关联分析步骤
-
母序列
又称参考序列,母指标,能反映系统行为特征的数据序列,类似于因变量Y,记为 Y=[y1,y2,……,yn]T -
子序列
又称比较序列,子指标,影响系统行为的因素组成的数据序列 -
数据预处理
由于不同要素具有不同量纲和数据范围,因此我们要对他们进行预处理去量纲,将他们统一到近似的范围内,先求出每个指标的均值,再用指标中的元素除以其均值
注意此处与层次分析法的数据归一化方法不同 -
计算灰色关联系数
计算子序列中各个指标与母序列的关联系数 -
计算关联度
python代码
import numpy as np
# 请输入初始矩阵[[55, 24, 10], [65, 38, 22], [75, 40, 18], [100, 50, 20]]
A = np.array(eval(input('请输入初始矩阵='))) # 假设输入的形式是合法的Python列表形式
# 求出每一列的均值以供后续的数据预处理
Mean = np.mean(A, axis=0)
# 预处理后的矩阵
A_norm = A / Mean
print('预处理后的矩阵为:')
print(A_norm)
# 母序列
Y = A_norm[:, 0]
# 子序列
X = A_norm[:, 1:]
# 计算|X0-Xi|矩阵(在这里我们把X0定义为了Y)
absX0_Xi = np.abs(X - np.tile(Y.reshape(-1, 1), (1, X.shape[1])))
# 计算两级最小差a
a = np.min(absX0_Xi)
# 计算两级最大差b
b = np.max(absX0_Xi)
# 分辨系数取0.5
rho = 0.5
# 计算子序列中各个指标与母序列的关联系数
gamma = (a + rho * b) / (absX0_Xi + rho * b)
print('子序列中各个指标的灰色关联度分别为:')
print(np.mean(gamma, axis=0))
课程链接
https://www.bilibili.com/video/BV1EK41187QF?p=13&vd_source=b3a05527a277213bd1c75289bedc229d