scipy.stats.

ranksums#

scipy.stats.ranksums(x, y, alternative='two-sided', *, axis=0, nan_policy='propagate', keepdims=False)[source]#

计算两个样本的 Wilcoxon 秩和统计量。

Wilcoxon 秩和检验检验从同一分布中提取两个测量集的零假设。对立假设是一组样本中的值更有可能大于另一组样本中的值。

应使用此检验来比较来自连续分布的两个样本。它不能处理 x 和 y 中测量值之间的平局。有关关系处理和可选连续校正,请参见 scipy.stats.mannwhitneyu

参数:
x,yarray_like

来自两个样本的数据。

alternative{‘two-sided’, ‘less’, ‘greater’}, optional

定义对立假设。默认为“两侧”。以下选项可用

  • ‘双边’: 分布之一(基础 xy)在统计史上大于另一个。

  • ‘小于’: 基础 x 的分布在统计史上小于基础 y 的分布。

  • ‘大于’: 基础 x 的分布在统计史上大于基础 y 的分布。

在版本 1.7.0 中添加。

axisint 或 None,默认值:0

如为 int,则沿其计算统计数据的输入轴。输入的各个轴片(如,行)的统计数据将显示在输出的对应元素中。如果 None,则计算统计数据前,会对输入进行展平。

nan_policy{‘传播’, ‘忽略’, ‘引发’}

定义如何处理输入 NaN。

  • propagate:如果沿计算统计数据的轴片(如,行)存在 NaN,则输出的对应条目为 NaN。

  • omit:执行计算时会忽略 NaN。如果沿计算统计数据的轴片上数据不足,则输出的对应条目为 NaN。

  • raise:如果存在 NaN,则引发 ValueError

keepdimsbool,默认值:False

如果设置为 True,则缩减的轴作为维度保留在结果中,且大小为一。使用此选项,结果会与输入阵列正确广播。

返回:
statisticfloat

秩和统计量正态分布的大样本逼近下的检验统计量。

pvaluefloat

检验的 p 值。

注意

从 SciPy 1.9 开始,在执行计算之前,会将 np.matrix 输入(不推荐用于新代码)转换为 np.ndarray。在这种情况下,输出将是标量或形状合适的 np.ndarray,而不是二维 np.matrix。同样,虽然会忽略掩码数组的屏蔽元素,但输出将是标量或 np.ndarray,而不是掩码 mask=False 的掩码数组。

参考

示例

我们可以计算威尔科克森秩和统计量来检验两个独立的非等大小样本是否源于同一分布的假设。

>>> import numpy as np
>>> from scipy.stats import ranksums
>>> rng = np.random.default_rng()
>>> sample1 = rng.uniform(-1, 1, 200)
>>> sample2 = rng.uniform(-0.5, 1.5, 300) # a shifted distribution
>>> ranksums(sample1, sample2)
RanksumsResult(statistic=-7.887059,
               pvalue=3.09390448e-15) # may vary
>>> ranksums(sample1, sample2, alternative='less')
RanksumsResult(statistic=-7.750585297581713,
               pvalue=4.573497606342543e-15) # may vary
>>> ranksums(sample1, sample2, alternative='greater')
RanksumsResult(statistic=-7.750585297581713,
               pvalue=0.9999999999999954) # may vary

小于 0.05 的 p 值表示此检验在 5% 显著性水平下拒绝原假设。