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个变量作为参数。相关矩阵为正方形,长度等于中的变量(列或行)总数
a
和b
加在一起。- 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)