- 背景知识
相关系数矩阵衡量的是自变量之间的相关程度,当相关系数为1时表示自变量之间完全正相关,当相关系数为-1时表示自变量之间完全负相关。
- 衡量方法
Pearson皮尔逊相关系数衡量的是两个变量之间的线性关系,即线性关联度,在数学上定义为两个变量之间的协方差和标准差之积的商。
r
=
cov
(
X
,
Y
)
σ
X
σ
Y
r = \frac{\text{cov}(X, Y)}{\sigma_X \sigma_Y}
r=σXσYcov(X,Y)
其中:
cov
(
X
,
Y
)
\text{cov}(X, Y)
cov(X,Y) 是变量
X
X
X 和
Y
Y
Y 的协方差。
σ
X
\sigma_X
σX 和
σ
Y
\sigma_Y
σY 分别是变量
X
X
X 和
Y
Y
Y 的标准差。
Kendall肯德尔等级相关系数衡量的是两个变量之间的等级相关性,对数据的长度没有限制,比较适合应用于当数据不满足正态分布或者有异常值的情况。
Spearman斯皮尔曼等级相关系数衡量的是两个变量之间单调关系的强度,即两个变量在变大或者变小的趋势上有多大的程度在保持步调一致(忽略是否保持等比例)
- Python实现
主要使用Python内置函数corr()。
method:参数指定计算相关性的方法;
min_periods:设置计算相关性所需观测值数量的最小值,默认min_periods = 1;
numeric_only:True则仅计算数值列,False计算所有列(可能会有报错),建议保持默认为True.
import pandas as pd
df_correlation_matrix = pd.read_excel(file) # 读取Excel数据
# used_column 为参与计算相关系数矩阵的数据列列名,type为list
df_correlation_matrix_used = df_correlation_matrix[used_column]
pearson_matrix = df_correlation_matrix_used.corr(method='pearson', min_periods=1, numeric_only=True)
kendall_matrix = df_correlation_matrix_used.corr(method='kendall', min_periods=1, numeric_only=True)
spearman_matrix = df_correlation_matrix_used.corr(method='spearman', min_periods=1, numeric_only=True)
如果需要把计算所得的相关系数矩阵绘制成热力图,可以参考如下代码:
import seaborn as sns
import matplotlib.pyplot as plt
# 绘制热图
sns.heatmap(pearson_matrix, annot=True)
plt.savefig('pearson_matrix_plot.png')
以上仅供参考。