Python 斯皮尔曼等级顺序相关度

  • Post category:Python

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相关系数,都取得了可靠的结果。在实际应用时,需要根据数据的类型选择合适的方法进行计算。