当前位置: 首页>>代码示例 >>用法及示例精选 >>正文


Python SciPy stats.anderson_ksamp用法及代码示例


本文简要介绍 python 语言中 scipy.stats.anderson_ksamp 的用法。

用法:

scipy.stats.anderson_ksamp(samples, midrank=True, *, method=None)#

Anderson-Darling 测试k-samples。

k-sample Anderson-Darling 测试是单样本 Anderson-Darling 测试的一种修改。它测试 k-samples 来自同一总体的原假设,而无需指定该总体的分布函数。临界值取决于样本数量。

参数

samples 一维 数组 序列

数组中的样本数据数组。

midrank 布尔型,可选

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

method 排列方法,可选

定义用于计算 p 值的方法。如果方法是一个实例PermutationMethod,p 值的计算方法为scipy.stats.permutation_test使用提供的配置选项和其他适当的设置。否则,p 值是根据表格值插值得出的。

返回

res Anderson_ksampResult

包含属性的对象:

统计 浮点数

标准化 k-sample Anderson-Darling 测试统计量。

critical_values 数组

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

p值 浮点数

检验的近似 p 值。如果未提供方法,则该值的下限/上限为 0.1%/25%。

抛出

ValueError

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

注意

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

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

参考

[1] (1,2,3)

Scholz, F. W 和 Stephens, M. A. (1987),K-Sample 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

相关用法


注:本文由纯净天空筛选整理自scipy.org大神的英文原创作品 scipy.stats.anderson_ksamp。非经特殊声明,原始代码版权归原作者所有,本译文未经允许或授权,请勿转载或复制。