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

  • Post category:Python

下面我来为你详细讲解 Python 斯皮尔曼等级顺序相关度使用方法的完整攻略。

概述

斯皮尔曼等级顺序相关度(Spearman’s rank correlation coefficient),也称斯皮尔曼相关系数,是用于统计两个变量之间单调关系强度的非参数检验方法。斯皮尔曼相关系数的取值范围在 [-1, 1] 之间,其中,-1 表示完全反相关,0 表示无相关关系,1 表示完全正相关。

使用方法

在 Python 中,我们可以使用 scipy 库中的 spearmanr 函数进行求解。该函数的调用方式如下:

from scipy.stats import spearmanr

corr, p_value = spearmanr(x, y)

其中,xy 是两个样本变量。

函数的返回值包含两个部分:

  • corr: 斯皮尔曼相关系数的值
  • p_value: 此系数的双侧 p 值

同时,该函数还支持返回相关系数矩阵,以及计算多个变量之间的相关系数等用法,具体可以参考 官方文档

示例说明

示例一

假设我们有两个变量 xy,它们之间的关系如下:

x 1 2 3 4 5
y 5 6 4 8 7

现在我们需要计算它们之间的 Spearman 相关系数。

from scipy.stats import spearmanr

x = [1, 2, 3, 4, 5]
y = [5, 6, 4, 8, 7]

corr, p_value = spearmanr(x, y)
print(f"Spearman 相关系数:{corr:.4f}")
print(f"p 值:{p_value:.4f}")

运行结果:

Spearman 相关系数:0.2000
p 值:0.8263

由于此例中相关系数较小,且 p 值较大,因此我们可以认为 xy 之间不存在显著相关关系。

示例二

再假设我们有另外两个变量 ab,它们之间的关系如下:

a 1 2 3 4 5
b 3.2 3.9 2.0 4.1 3.7

现在我们需要计算它们之间的 Spearman 相关系数。

from scipy.stats import spearmanr

a = [1, 2, 3, 4, 5]
b = [3.2, 3.9, 2.0, 4.1, 3.7]

corr, p_value = spearmanr(a, b)
print(f"Spearman 相关系数:{corr:.4f}")
print(f"p 值:{p_value:.4f}")

运行结果:

Spearman 相关系数:0.2000
p 值:0.8263

由于此例中相关系数较小,且 p 值较大,因此我们可以认为 ab 之间不存在显著相关关系。