scipy.stats.

dunnett#

scipy.stats.dunnett(*samples, control, alternative='two-sided', rng=None)[源代码]#

邓尼特检验:多个均值与对照组的比较。

这是对邓尼特原始单步检验的实现,如 [1] 中所述。

参数:
sample1, sample2, …一维类数组

每个实验组的样本测量值。

control一维类数组

对照组的样本测量值。

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

定义备择假设。

零假设是样本和对照组的分布均值相等。 以下备择假设可用(默认为“two-sided”)

  • “two-sided”:样本和对照组的分布均值不相等。

  • “less”:样本的分布均值小于对照组的分布均值。

  • “greater”:样本的分布均值大于对照组的分布均值。

rngnumpy.random.Generator, 可选

伪随机数生成器状态。当 rng 为 None 时,将使用来自操作系统的熵创建一个新的 numpy.random.Generatornumpy.random.Generator 以外的类型将传递给 numpy.random.default_rng 以实例化一个 Generator

在 1.15.0 版本中更改: 作为从使用 numpy.random.RandomStatenumpy.random.GeneratorSPEC-007 过渡的一部分,此关键字从 random_state 更改为 rng。在过渡期,两个关键字都将继续工作,但一次只能指定一个。在过渡期之后,使用 random_state 关键字的函数调用将发出警告。在弃用期后,将删除 random_state 关键字。

返回:
resDunnettResult

一个包含属性的对象

statistic浮点数 ndarray

每次比较的检验计算统计量。索引 i 处的元素是组 i 和对照组之间比较的统计量。

pvalue浮点数 ndarray

每次比较的检验计算 p 值。索引 i 处的元素是组 i 和对照组之间比较的 p 值。

以及以下方法

confidence_interval(confidence_level=0.95)

计算组与对照组之间的均值差值 +- 容许值。

另请参见

tukey_hsd

执行均值的成对比较。

邓尼特检验

扩展示例

注释

与独立样本 t 检验类似,邓尼特检验 [1] 用于推断从中抽取样本的分布的均值。 但是,当在固定的显着性水平下执行多个 t 检验时,“族误差率”(至少在一个检验中错误拒绝零假设的概率)将超过显着性水平。邓尼特检验旨在执行多次比较,同时控制族误差率。

邓尼特检验将多个实验组的均值与单个对照组进行比较。Tukey 的 Honestly Significant Difference Test 是另一种控制族误差率的多重比较检验,但 tukey_hsd 执行组之间的所有成对比较。当不需要实验组之间的成对比较时,邓尼特检验由于其更高的功效而更可取。

此检验的使用依赖于几个假设。

  1. 观察结果在组内和组之间是独立的。

  2. 每个组内的观察结果呈正态分布。

  3. 抽取样本的分布具有相同的有限方差。

参考文献

[1] (1,2)

Dunnett, Charles W. (1955) “一种比较几种处理与对照的多重比较程序。” 美国统计协会杂志,50:272, 1096-1121, DOI:10.1080/01621459.1955.10501294

[2]

Thomson, M. L., & Short, M. D. (1969)。健康、慢性阻塞性气道疾病和石棉沉着症中的粘液纤毛功能。应用生理学杂志,26(5), 535-539。 DOI:10.1152/jappl.1969.26.5.535

示例

我们将使用 [2] 表 1 中的数据。零假设是样本和对照组的分布均值相等。

首先,我们测试样本和对照组的分布均值不相等 (alternative='two-sided',默认值)。

>>> import numpy as np
>>> from scipy.stats import dunnett
>>> samples = [[3.8, 2.7, 4.0, 2.4], [2.8, 3.4, 3.7, 2.2, 2.0]]
>>> control = [2.9, 3.0, 2.5, 2.6, 3.2]
>>> res = dunnett(*samples, control=control)
>>> res.statistic
array([ 0.90874545, -0.05007117])
>>> res.pvalue
array([0.58325114, 0.99819341])

现在,我们测试样本的分布均值大于对照组的分布均值。

>>> res = dunnett(*samples, control=control, alternative='greater')
>>> res.statistic
array([ 0.90874545, -0.05007117])
>>> res.pvalue
array([0.30230596, 0.69115597])

有关更详细的示例,请参阅 邓尼特检验