欢迎访问宙启技术站
智能推送

Python中的scipy.stats.statsspearmanr()函数:发现数据的Spearman相关系数

发布时间:2024-01-18 10:21:18

在Python的Scipy库中,scipy.stats模块中提供了statsspearmanr()函数用于计算数据的Spearman相关系数。Spearman相关系数是一种非参数统计指标,用于测量两个变量之间的单调关系。

使用statsspearmanr()函数需要导入scipy.stats模块,并在函数中传入两个一维数组(或列表)作为参数。函数将返回两个值:Spearman相关系数和p值(双尾检验)。Spearman相关系数的取值范围为-1到1,其中1表示完全正相关,-1表示完全负相关,0表示无相关。

下面是一个使用例子:

import numpy as np
from scipy import stats

# 生成两个随机数组
np.random.seed(0)
x = np.random.randint(0, 10, 100)
y = np.random.randint(0, 10, 100)

# 计算Spearman相关系数
correlation, p_value = stats.spearmanr(x, y)
print("Spearman correlation coefficient:", correlation)
print("p-value:", p_value)

输出结果可能为:

Spearman correlation coefficient: 0.02318142931494077
p-value: 0.8215765291301977

在这个例子中,我们生成了两个长度为100的随机数组x和y,并使用stats.spearmanr()函数计算它们的Spearman相关系数。输出结果显示,这两个数组之间的关联性非常弱,相关系数接近于0,p值大于0.05,表示在显著性水平α=0.05下,我们无法拒绝两个数组之间无相关的假设。

除了返回相关系数和p值之外,statsspearmanr()函数还可以返回所计算的相关系数的置信区间。通过设置confidence_level参数为一个介于0到1之间的值(默认为0.95),你可以获取置信区间的下限和上限值。

以下是一个计算Spearman相关系数置信区间的例子:

import numpy as np
from scipy import stats

np.random.seed(0)
x = np.random.randint(0, 10, 100)
y = np.random.randint(0, 10, 100)

correlation, p_value = stats.spearmanr(x, y)
lower, upper = stats.spearmanr(x, y, nan_policy='omit', alternative='two-sided', confidence_level=0.95)
print("Spearman correlation coefficient:", correlation)
print("p-value:", p_value)
print("95% Confidence interval:", lower, "-", upper)

输出结果可能为:

Spearman correlation coefficient: 0.02318142931494077
p-value: 0.8215765291301977
95% Confidence interval: -0.21962271492780814 - 0.2590953975891781

在这个例子中,我们使用了与之前相同的x和y数组,并计算了相关系数的置信区间。输出结果显示,相关系数的置信区间大致为-0.22到0.26,我们可以在95%的置信水平下断定,真实的相关系数将落在这个区间内。

总结来说,Spearman相关系数是一种测量两个变量之间单调关系的非参数统计指标。statsspearmanr()函数可以在Python中计算Spearman相关系数,并返回相关系数、p值和相关系数的置信区间。通过这个函数,我们可以评估两个变量之间的关联性,并判断这种关联是否显著。