scipy.stats.

anderson_ksamp#

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

Anderson-Darling 的 k 样本检验。

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

参数:
示例1-D 类数组的序列

数组中的样本数据数组。

中层bool, 可选

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

方法PermutationMethod, 可选

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

返回:
resAnderson_ksampResult

一个包含属性的对象:

统计浮动

标准化 k 样本 Anderson-Darling 检验统计量。

临界值数组

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

p值浮动

测试的近似 p 值。如果未提供 method,则该值将被限制在 0.1% 至 25% 之间。

Raises:
ValueError

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

参见

ks_2samp

2 样本 Kolmogorov-Smirnov 检验

anderson

1 样本 Anderson-Darling 检验

注释

[1] 定义了三种版本的 k-样本 Anderson-Darling 检验:一种用于连续分布,两种用于离散分布,其中样本之间可能存在联系。该例程的默认设置是计算基于中秩经验分布函数的版本。此检验适用于连续和离散数据。如果 midrank 设置为 False,则使用右侧经验分布进行离散数据的检验。根据 [1],如果由于舍入误差在未调整样本间联系的检验中发生少量碰撞,两种离散检验统计量仅略有不同。

对应于显著性水平从0.01到0.25的临界值取自[R046565845cc9-1]_。p值被限制在0.1% / 25%。由于临界值的范围可能在未来的版本中扩展,建议不要测试``p == 0.25``,而是测试``p >= 0.25``(类似地适用于下限)。

Added in version 0.14.0.

参考文献

[1] (1,2)

Scholz, F. W 和 Stephens, M. A. (1987), K样本Anderson-Darling检验, 《美国统计协会杂志》, 第82卷, 第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