scipy.stats.spearmanr

scipy.stats.spearmanr(a, b=None, axis=0, nan_policy='propagate', alternative='two-sided')[源代码]

计算具有相关p值的Spearman相关系数。

Spearman秩相关系数是两个数据集之间关系单调性的非参数度量。与皮尔逊关联不同,Spearman关联不假设两个数据集都是正态分布的。与其他相关系数一样,此系数在-1和+1之间变化,0表示没有相关性。-1或+1的关联意味着精确的单调关系。正相关意味着x增加了,y也增加了。负相关意味着x增加了,y减少了。

p值大致表示不相关的系统产生的数据集的概率,该数据集的Spearman相关性至少与根据这些数据集计算的数据集的相关性一样极端。p值并不完全可靠,但对于大于500左右的数据集可能是合理的。

参数
a, b1D或2D ARRAY_LIKE,b是可选的

包含多个变量和观测的一个或两个一维或二维数组。当它们是一维时,每个表示单个变量的观测值的向量。有关2-D情况下的行为,请参见 axis ,见下图。两个数组在 axis 尺寸标注。

axis整型或无型,可选

如果AXIS=0(默认值),则每列表示一个变量,在行中有观察值。如果AXIS=1,则关系颠倒:每行表示一个变量,而列包含观察值。如果AXIS=NONE,则两个数组都将被分解。

nan_policy{‘Propagate’,‘RAISE’,‘OMIT’},可选

定义输入包含NaN时的处理方式。以下选项可用(默认值为‘Propagate’):

  • ‘Propagate’:返回NaN

  • “raise”:引发错误

  • ‘omit’:执行计算时忽略NaN值

alternative{‘双面’,‘少’,‘大’},可选

定义了另一种假设。默认值为“双面”。以下选项可用:

  • ‘Two-Side’:相关性为非零

  • ‘less’:相关性为负(小于零)

  • “较大”:相关性为正(大于零)

1.7.0 新版功能.

退货
correlation浮动或ndarray(二维正方形)

Spearman相关矩阵或相关系数(如果只给出2个变量作为参数。相关矩阵为正方形,长度等于中的变量(列或行)总数 ab 加在一起。

pvalue浮动

假设检验的p值,其零假设是两组数据不相关。看见 alternative 以上可供选择的假设。 pvalue 形状与 correlation

参考文献

1

Zvelinger,D.和Kokoska,S.(2000)。CRC标准概率和统计表和公式。查普曼与霍尔:纽约。2000年。第14.7条

示例

>>> from scipy import stats
>>> stats.spearmanr([1,2,3,4,5], [5,6,7,8,7])
SpearmanrResult(correlation=0.82078..., pvalue=0.08858...)
>>> rng = np.random.default_rng()
>>> x2n = rng.standard_normal((100, 2))
>>> y2n = rng.standard_normal((100, 2))
>>> stats.spearmanr(x2n)
SpearmanrResult(correlation=-0.07960396039603959, pvalue=0.4311168705769747)
>>> stats.spearmanr(x2n[:,0], x2n[:,1])
SpearmanrResult(correlation=-0.07960396039603959, pvalue=0.4311168705769747)
>>> rho, pval = stats.spearmanr(x2n, y2n)
>>> rho
array([[ 1.        , -0.07960396, -0.08314431,  0.09662166],
       [-0.07960396,  1.        , -0.14448245,  0.16738074],
       [-0.08314431, -0.14448245,  1.        ,  0.03234323],
       [ 0.09662166,  0.16738074,  0.03234323,  1.        ]])
>>> pval
array([[0.        , 0.43111687, 0.41084066, 0.33891628],
       [0.43111687, 0.        , 0.15151618, 0.09600687],
       [0.41084066, 0.15151618, 0.        , 0.74938561],
       [0.33891628, 0.09600687, 0.74938561, 0.        ]])
>>> rho, pval = stats.spearmanr(x2n.T, y2n.T, axis=1)
>>> rho
array([[ 1.        , -0.07960396, -0.08314431,  0.09662166],
       [-0.07960396,  1.        , -0.14448245,  0.16738074],
       [-0.08314431, -0.14448245,  1.        ,  0.03234323],
       [ 0.09662166,  0.16738074,  0.03234323,  1.        ]])
>>> stats.spearmanr(x2n, y2n, axis=None)
SpearmanrResult(correlation=0.044981624540613524, pvalue=0.5270803651336189)
>>> stats.spearmanr(x2n.ravel(), y2n.ravel())
SpearmanrResult(correlation=0.044981624540613524, pvalue=0.5270803651336189)
>>> rng = np.random.default_rng()
>>> xint = rng.integers(10, size=(100, 2))
>>> stats.spearmanr(xint)
SpearmanrResult(correlation=0.09800224850707953, pvalue=0.3320271757932076)