bws_test#
- scipy.stats.bws_test(x, y, *, alternative='two-sided', method=None)[源代码]#
对两个独立样本执行 Baumgartner-Weiss-Schindler 检验。
Baumgartner-Weiss-Schindler (BWS) 检验是一种非参数检验,用于检验零假设,即样本 x 底层的分布与样本 y 底层的分布相同。与 Kolmogorov-Smirnov、Wilcoxon 和 Cramer-Von Mises 检验不同,BWS 检验通过累积分布函数 (CDF) 差值的方差对积分进行加权,从而强调分布的尾部,这在许多应用中提高了检验的功效。
- 参数:
- x, y类数组
样本的一维数组。
- alternative{‘two-sided’, ‘less’, ‘greater’}, 可选
定义备择假设。默认为“双边”。令 F(u) 和 G(u) 分别为 x 和 y 底层分布的累积分布函数。那么以下备择假设可用:
‘two-sided’:分布不相等,即 F(u) ≠ G(u) 对于至少一个 u。
‘less’:x 底层的分布在随机意义上小于 y 底层的分布,即对于所有 u,F(u) >= G(u)。
‘greater’:x 底层的分布在随机意义上大于 y 底层的分布,即对于所有 u,F(u) <= G(u)。
在更严格的一组假设下,备择假设可以根据分布的位置来表达;请参阅 [2] 第 5.1 节。
- methodPermutationMethod, optional
配置用于计算 p 值的方方法。默认是默认的
PermutationMethod对象。
- 返回:
- resPermutationTestResult
- 具有以下属性的对象
- statisticfloat
数据的观测检验统计量。
- pvaluefloat
给定备择假设下的 p 值。
- null_distributionndarray
在零假设下生成的测试统计量的值。
附注
当
alternative=='two-sided'时,统计量由 [1] 第 2 节中的方程给出。此统计量不适用于单边备择假设;在这种情况下,统计量是 [1] 第 2 节中方程给出的统计量的*负值*。因此,当第一个样本的分布在随机意义上大于第二个样本的分布时,统计量倾向于为正。数组 API 标准支持
bws_test除了 NumPy 之外,还对兼容 Python Array API Standard 的后端提供了实验性支持。请考虑通过设置环境变量SCIPY_ARRAY_API=1并提供 CuPy、PyTorch、JAX 或 Dask 数组作为数组参数来测试这些功能。支持以下后端和设备(或其他功能)的组合。库
CPU
GPU
NumPy
✅
不适用
CuPy
不适用
⛔
PyTorch
⛔
⛔
JAX
⛔
⛔
Dask
⛔
不适用
有关更多信息,请参阅 对数组 API 标准的支持。
参考文献
[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% 的阈值,我们将其视为反对零假设的证据,支持两组之间表现存在差异的备择假设。