灰色关联分析

灰色系统

        用颜色深浅来反映信息量的多少,黑色表示信息量太少,白色表示这个系统是清楚的、信息量充足。处于黑白之间的,即信息不完全的系统,称灰色系统。

关联分析

        回答这样的问题:哪些因素是主要的(次要的)、哪些因素影响大(小)、哪些因素是明显的(潜在的)...... 

灰色关联分析(GRA)

        是一种多因素统计分析的方法,弥补了采用梳理统计方法作系统分析所导致的缺憾。它对样本量的多少和样本有无规律都同样适用,且计算量小,也不会出现量化结果和定性分析结果不符的情况。 

        基本思想

        GRA的基本思想是根据序列曲线几何形状相似程度来判断其联系是否紧密

        对一个抽象系统分析,首先要选准反映系统行为特征的数据序列,称系统行为的映射量,用其来表征系统行为。比如用国民平均受教育年数来反映教育发达程度。有了系统行为特征数据和相关因素的数据,可以做出各个序列的图形。

        基本步骤

  •         构造母序列:能反映系统行为特征的数据序列,类似于因变量Y,记为Y=[y_1,y_2,...,y_n]^T
  •         构造子序列:影响系统行为的因素组成的数据序列,类似于因变量X,记为X_{nm}=\begin{bmatrix} x_{11} & x_{12} &... & x_{1m}\\ x_{21}& x_{22} &... & x_{2m}\\ ...& ... & ... &... \\ x_{n1} & x_{n2} & ... & x_{nm} \end{bmatrix}
  •         数据预处理:去量纲,统一到近似的范围,先求出每个指标的均值,再用指标中的元素除以其均值。
  •         计算灰色关联系数
  •         计算关联度

Python代码

import numpy as np

# 从文件加载数据
data_matrix = np.loadtxt("data.txt")

# 计算每列的最大值,得到参考序列的最大值
reference_max_values = data_matrix.max(axis=0)

# 计算每列的最小值,得到参考序列的最小值
reference_min_values = data_matrix.min(axis=0)

# 计算参考序列与每个序列的差,形成新的数组
differences = reference_max_values - data_matrix

# 计算数组中的最小值
min_difference = differences.min()

# 计算数组中的最大值
max_difference = differences.max()

# 定义分辨系数
resolution_coefficient = 0.5

# 计算灰色关联系数
grey_correlation_values = (min_difference + resolution_coefficient * max_difference) / (differences + resolution_coefficient * max_difference)

# 沿着每一行计算平均值,得到灰色关联度
grey_correlation_degree = grey_correlation_values.mean(axis=1)

# 打印结果
print("\n关联系数=", grey_correlation_values, '\n关联度=', grey_correlation_degree)

 

你可能感兴趣的:(美赛,算法,python,数学建模)