代码实现:
import numpy as np
from scipy.stats import pearsonr, spearmanr,kendalltau
#什么是皮尔逊、斯佩尔曼和肯德尔相关性系数
# 生成示例数据
x = np.array([1, 2, 3, 4, 5])
y = np.array([5, 6, 7, 8, 7])
# 计算皮尔逊相关系数
pearson_coef, pearson_p = pearsonr(x, y)
# 输出皮尔逊相关系数和p值
print(f"Pearson correlation coefficient: {pearson_coef}, p-value: {pearson_p}")
# 计算斯皮尔曼相关系数
spearman_coef, spearman_p = spearmanr(x, y)
# 输出斯皮尔曼相关系数和p值
print(f"Spearman correlation coefficient: {spearman_coef}, p-value: {spearman_p}")
# 使用Kendall's tau进行相关性分析
kendall_tau_coef, kendalltau_p = kendalltau(x, y)
# 输出Kendall's tau相关系数
print(f"Kendall's tau correlation coefficient(相关系数): {kendall_tau_coef}, p-value: {kendalltau_p}")
输出:
E:\开发工具\pythonProject\studyLL\venv\Scripts\python.exe E:/开发工具/pythonProject/studyLL/pytorch07x/相关性分析02.py
Pearson correlation coefficient: 0.8320502943378438, p-value: 0.08050957329849849
Spearman correlation coefficient: 0.8207826816681233, p-value: 0.08858700531354381
Kendall's tau correlation coefficient(相关系数): 0.7378647873726218, p-value: 0.07697417298126674
Process finished with exit code 0
(1) Pearson相关系数:要求数据具有连续性、正态分布性等特点,因此应对数据分布进行严格的验证,否则可能会出现相反的效果。
(2) Spearman相关系数 :对于不满足Pearson相关系数要求的连续型变量数据,可以使用Spearman相关系数,也可针对定序和定类变量的数据。
(3) Kendall相关系数 :Kendall相关系数数据条件与Spearman相同,常常使用定序数据相关性分析。
皮尔逊相关系数
考虑一个有两个特征的数据集:x和y。每个特征有n个值,所以x和y是n个元组。x的第一个值x1对应y的第一个值y1,x的第二个值x2对应的y第二个值y2,以此类推。那么,就有对对应的数值:(x1,y1),(x2,y2),以此类推。这些x-y对中的每一个都代表一个单一的观察。
皮尔逊相关系数是对两个特征之间的线性关系的衡量。它是 x 和 y 的协方差与它们的标准差的乘积的比率。它通常用字母 r表示,并称为皮尔逊的r 。我们可以用这个方程式来表示这个值的数学性质。
这里,i 的值为1,2,3...... 。 x和y 的平均值用mean(x)和mean(y)来表示。这个公式表明,如果较大的 x 值倾向于对应较大的 y 值,反之亦然,则 r为正。另一方面,如果较大的 x值大多与较小的 y值相关,反之亦然,则r 为负。
以下是关于皮尔逊相关系数:
皮尔逊相关系数可以在 -1<=r <=1 的范围内取任何实值。
最大值 r=1 对应于 x 和 y之间存在完美的正线性关系的情况。换句话说,较大的 x 值对应较大的y 值,反之亦然。
r>0的值表示 x 和y 之间的正相关。
r=0 的值对应于 x 和 y之间没有线性关系的情况。
r<0的值表示 x和 y 之间的负相关。
最小值 r=-1对应于 x和y 之间存在完美的负线性关系的情况。换句话说,较大的 x 值对应较小的 y 值,反之亦然。
非线性关系经常用斯皮尔曼等级相关性。
Spearman相关系数
两个特征之间的Spearman相关系数是它们的等级值之间的Pearson相关系数。它的计算方法与Pearson相关系数相同,但考虑到了它们的rank而不是它们的数值。它通常用希腊字母rho(ρ)表示,称为Spearman's rho。
假设有两个n元组, x 和y ,其中 (x1,y1),(x2,y2),......, 是作为对应值的观察值对。我们可以用与Pearson系数相同的方法来计算Spearman相关系数 ρ。使用rank而不是 x 和 y 的实际值。
以下是关于Spearman相关系数的一些重要事实。
它可以在 -1<=ρ<=1的范围内取一个实数。
它的最大值 ρ=1对应于 x 和 y之间存在单调增长函数的情况。换句话说,更大的 x 值对应更大的y 值,反之亦然。
它的最小值 ρ=-1对应于 x和 y之间存在单调递减函数的情况。换句话说,较大的x值对应较小的 y 值,反之亦然。