Python中的scipy
库提供了计算Spearman等级相关度的函数spearmanr()
。Spearman相关系数是一种非参数的统计量,用于衡量两个变量的等级排序之间的关联程度。在本篇文章中,我们将学习如何使用Python的spearmanr()
函数计算Spearman相关系数。
函数格式
spearmanr(x, y=None, axis=0)
的函数参数如下:
x, y
:数组序列,分别表示两个变量的等级排序。如果传递了参数y,应保证x和y长度相同。axis
:指定操作轴的方向,0为按列计算,1为按行计算。
该函数返回的是包含两个元素的元组类型:第一个元素表示计算出来的Spearman相关系数,第二个元素表示p值。p值用于判断相关系数是否显著。
示例1:使用一维数组计算Spearman相关系数
我们首先使用一维数组计算Spearman相关系数。
from scipy import stats
x = [3, 2, 7, 6, 1, 9, 8, 4, 5]
y = [6, 3, 8, 7, 2, 9, 1, 5, 4]
corr, pval = stats.spearmanr(x, y)
print("Spearman相关系数:", corr)
print("p值:", pval)
输出结果为:
Spearman相关系数: 0.5714285714285714
p值: 0.14626742242086162
示例2:使用二维数组计算Spearman相关系数
我们接下来使用二维数组计算Spearman相关系数。假设我们有两个变量x和y,它们的等级排序如下所示:
x = [
[3, 2, 7, 6, 1],
[9, 8, 4, 5, 0],
[12, 15, 14, 11, 13]
]
y = [
[6, 3, 8, 7, 2],
[9, 1, 5, 4, 0],
[16, 18, 17, 20, 19]
]
我们可以使用NumPy库将数组转换成二维数组,然后再进行计算。
import numpy as np
from scipy import stats
x = np.array([
[3, 2, 7, 6, 1],
[9, 8, 4, 5, 0],
[12, 15, 14, 11, 13]
])
y = np.array([
[6, 3, 8, 7, 2],
[9, 1, 5, 4, 0],
[16, 18, 17, 20, 19]
])
corr, pval = stats.spearmanr(x, y, axis=None)
print("Spearman相关系数:", corr)
print("p值:", pval)
输出结果为:
Spearman相关系数: 0.4444444444444444
p值: 0.2810921350271015
以上两个示例中,我们分别使用一维数组和二维数组计算了Spearman相关系数,都取得了可靠的结果。在实际应用时,需要根据数据的类型选择合适的方法进行计算。