scipy.stats.

bws_test#

scipy.stats.bws_test(x, y, *, alternative='two-sided', method=None)[source]#

对两个独立样本执行 Baumgartner-Weiss-Schindler 检验。

Baumgartner-Weiss-Schindler (BWS) 检验是一种非参数检验,用于检验样本 x 的底层分布与样本 y 的底层分布相同的零假设。 与 Kolmogorov-Smirnov、Wilcoxon 和 Cramer-Von Mises 检验不同,BWS 检验通过累积分布函数 (CDF) 中差异的方差来加权积分,从而强调分布的尾部,这增加了检验在许多应用中的效力。

参数:
x, y类数组

样本的一维数组。

alternative{‘two-sided’, ‘less’, ‘greater’}, 可选

定义备择假设。 默认为 ‘two-sided’。 设 F(u)G(u) 分别为样本 xy 的底层分布的累积分布函数。 那么以下备择假设可用

  • ‘two-sided’:分布不相等,即对于至少一个 uF(u) ≠ G(u)

  • ‘less’:样本 x 的底层分布在随机意义上小于样本 y 的底层分布,即对于所有 uF(u) >= G(u)

  • ‘greater’:样本 x 的底层分布在随机意义上大于样本 y 的底层分布,即对于所有 uF(u) <= G(u)

在一组更严格的假设下,备择假设可以用分布的位置来表示;参见 [2] 第 5.1 节。

methodPermutationMethod,可选

配置用于计算 p 值的函数。默认值为默认的 PermutationMethod 对象。

返回:
resPermutationTestResult
具有以下属性的对象
statisticfloat

数据的观测检验统计量。

pvaluefloat

给定备择假设的 p 值。

null_distributionndarray

在零假设下生成的检验统计量的值。

注释

alternative=='two-sided' 时,该统计量由 [1] 第 2 节中给出的方程定义。 该统计量不适用于单侧备择假设; 在这种情况下,该统计量是 [1] 第 2 节中给出的方程的负数。 因此,当第一个样本的分布在随机意义上大于第二个样本的分布时,该统计量将趋于正数。

参考文献

[1] (1,2,3,4,5)

Neuhäuser, M. (2005). Exact Tests Based on the Baumgartner-Weiss-Schindler Statistic: A Survey. Statistical Papers, 46(1), 1-29.

[2]

Fay, M. P., & Proschan, M. A. (2010). Wilcoxon-Mann-Whitney or t-test? On assumptions for hypothesis tests and multiple interpretations of decision rules. Statistics surveys, 4, 1.

示例

我们遵循 [1] 中的表 3 的示例:14 名儿童被随机分为两组。 他们在执行特定测试中的排名如下。

>>> import numpy as np
>>> x = [1, 2, 3, 4, 6, 7, 8]
>>> y = [5, 9, 10, 11, 12, 13, 14]

我们使用 BWS 检验来评估两组之间是否存在统计学上的显著差异。 零假设是两组的表现分布没有差异。 我们确定需要 1% 的显著性水平才能拒绝零假设,支持两组分布不同的备择假设。 由于样本数量非常少,我们可以将观察到的检验统计量与零假设下检验统计量的精确分布进行比较。

>>> from scipy.stats import bws_test
>>> res = bws_test(x, y)
>>> print(res.statistic)
5.132167152575315

这与 [1] 中报告的 \(B = 5.132\) 一致。 bws_test 产生的 p 值也与 [1] 中报告的 \(p = 0.0029\) 一致。

>>> print(res.pvalue)
0.002913752913752914

由于 p 值低于我们的 1% 阈值,我们将其作为反对零假设的证据,支持两组之间表现存在差异的备择假设。