scipy.stats.

anderson_ksamp#

scipy.stats.anderson_ksamp(samples, midrank=True, *, method=None)[源代码]#

k 样本的 Anderson-Darling 检验。

k 样本的 Anderson-Darling 检验是对单样本 Anderson-Darling 检验的修改。它检验 k 个样本是否来自同一总体的零假设,而无需指定该总体的分布函数。临界值取决于样本的数量。

参数:
samples一维类数组序列

数组形式的样本数据。

midrank布尔值,可选

计算的 Anderson-Darling 检验的类型。默认值 (True) 是适用于连续和离散总体的中秩检验。如果为 False,则使用右侧经验分布。

methodPermutationMethod,可选

定义用于计算 p 值的所用方法。如果 methodPermutationMethod 的实例,则 p 值使用 scipy.stats.permutation_test 以及提供的配置选项和其他适当的设置进行计算。否则,p 值从表格值插值得到。

返回:
resAnderson_ksampResult

一个包含属性的对象

statistic浮点数

归一化的 k 样本 Anderson-Darling 检验统计量。

critical_values数组

显著性水平为 25%、10%、5%、2.5%、1%、0.5%、0.1% 的临界值。

pvalue浮点数

检验的近似 p 值。如果未提供 method,则该值向下/向上取整到 0.1%/25%。

引发:
ValueError

如果提供的样本少于 2 个,样本为空,或者样本中没有不同的观测值。

另请参阅

ks_2samp

2 样本 Kolmogorov-Smirnov 检验

anderson

1 样本 Anderson-Darling 检验

备注

[1] 定义了 k 样本 Anderson-Darling 检验的三个版本:一个用于连续分布,两个用于可能发生样本间关联的离散分布。此例程的默认值是基于中秩经验分布函数计算的版本。此检验适用于连续和离散数据。如果 midrank 设置为 False,则右侧经验分布用于离散数据的检验。根据 [1],如果由于四舍五入错误在未调整样本间关联的检验中发生一些冲突,则两个离散检验统计量仅略有不同。

对应于 0.01 到 0.25 显著性水平的临界值取自 [1]。p 值向下/向上取整到 0.1%/25%。由于临界值的范围可能会在未来的版本中扩展,建议不要测试 p == 0.25,而应测试 p >= 0.25(对于下限类似)。

在 0.14.0 版本中添加。

参考文献

[1] (1,2,3)

Scholz, F. W 和 Stephens, M. A. (1987), K-Sample Anderson-Darling Tests, Journal of the American Statistical Association, Vol. 82, pp. 918-924.

示例

>>> import numpy as np
>>> from scipy import stats
>>> rng = np.random.default_rng()
>>> res = stats.anderson_ksamp([rng.normal(size=50),
... rng.normal(loc=0.5, size=30)])
>>> res.statistic, res.pvalue
(1.974403288713695, 0.04991293614572478)
>>> res.critical_values
array([0.325, 1.226, 1.961, 2.718, 3.752, 4.592, 6.546])

可以以 5% 的水平拒绝两个随机样本来自同一分布的零假设,因为返回的检验值大于 5% 的临界值 (1.961),但在 2.5% 的水平下不能拒绝。插值给出的近似 p 值为 4.99%。

>>> samples = [rng.normal(size=50), rng.normal(size=30),
...            rng.normal(size=20)]
>>> res = stats.anderson_ksamp(samples)
>>> res.statistic, res.pvalue
(-0.29103725200789504, 0.25)
>>> res.critical_values
array([ 0.44925884,  1.3052767 ,  1.9434184 ,  2.57696569,  3.41634856,
  4.07210043, 5.56419101])

对于来自相同分布的三个样本,不能拒绝零假设。报告的 p 值 (25%) 已被上限,可能不是很准确(因为它对应的值为 0.449,而统计量为 -0.291)。

在这种 p 值被上限或样本量较小的情况下,排列检验可能更准确。

>>> method = stats.PermutationMethod(n_resamples=9999, random_state=rng)
>>> res = stats.anderson_ksamp(samples, method=method)
>>> res.pvalue
0.5254