dunnett#
- scipy.stats.dunnett(*samples, control, alternative='two-sided', rng=None)[source]#
Dunnett 检验:将多个均值与对照组进行比较。
这是 Dunnett 最初的单步检验的实现,如 [1] 中所述。
- 参数:
- sample1, sample2, …一维类数组
每个实验组的样本测量值。
- control一维类数组
对照组的样本测量值。
- alternative{‘two-sided’, ‘less’, ‘greater’}, 可选
定义备择假设。
零假设是样本和对照组的基础分布的均值相等。以下备择假设可用(默认为 ‘two-sided’)
‘two-sided’:样本和对照组的基础分布的均值不相等。
‘less’:样本的基础分布的均值小于对照组的基础分布的均值。
‘greater’:样本的基础分布的均值大于对照组的基础分布的均值。
- rng
numpy.random.Generator
, 可选 伪随机数生成器状态。当 rng 为 None 时,将使用来自操作系统的熵创建一个新的
numpy.random.Generator
。除numpy.random.Generator
之外的类型将传递给numpy.random.default_rng
以实例化Generator
。在版本 1.15.0 中更改: 作为从使用
numpy.random.RandomState
过渡到numpy.random.Generator
的 SPEC-007 的一部分,此关键字从 random_state 更改为 rng。在过渡期间,两个关键字将继续工作,但一次只能指定一个。在过渡期结束后,使用 random_state 关键字的函数调用将发出警告。在弃用期结束后,random_state 关键字将被删除。
- 返回值:
- res
DunnettResult
一个包含以下属性的对象
- statisticfloat ndarray
每次比较的检验的计算统计量。索引
i
处的元素是组i
和对照组之间比较的统计量。- pvaluefloat ndarray
每次比较的检验的计算 p 值。索引
i
处的元素是组i
和对照组之间比较的 p 值。
以及以下方法
- confidence_interval(confidence_level=0.95)
计算组与对照组的均值差异 +- 允许量。
- res
参见
tukey_hsd
执行均值的成对比较。
- Dunnett 检验
扩展示例
注释
与独立样本 t 检验一样,Dunnett 检验 [1] 用于推断从中抽取样本的分布的均值。但是,当以固定的显著性水平执行多个 t 检验时,“家族误差率”(至少在一个检验中错误拒绝零假设的概率)将超过显著性水平。Dunnett 检验旨在执行多个比较,同时控制家族误差率。
Dunnett 检验将多个实验组的均值与单个对照组进行比较。Tukey 的诚实显著性差异检验是另一个控制家族误差率的多重比较检验,但
tukey_hsd
执行组之间的所有成对比较。当不需要实验组之间的成对比较时,Dunnett 检验因其更高的功效而更可取。此检验的使用依赖于几个假设。
观测值在组内和组间是独立的。
每个组内的观测值呈正态分布。
抽取样本的分布具有相同的有限方差。
参考文献
[1] (1,2)Dunnett, Charles W. (1955) “A Multiple Comparison Procedure for Comparing Several Treatments with a Control.” Journal of the American Statistical Association, 50:272, 1096-1121, DOI:10.1080/01621459.1955.10501294
[2]Thomson, M. L., & Short, M. D. (1969). Mucociliary function in health, chronic obstructive airway disease, and asbestosis. Journal of applied physiology, 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])
有关更详细的示例,请参见 Dunnett 检验。