本文简要介绍 python 语言中 scipy.stats.dunnett
的用法。
用法:
scipy.stats.dunnett(*samples, control, alternative='two-sided', random_state=None)#
Dunnett 检验:将平均值与对照组进行多重比较。
这是 Dunnett 原始 single-step 测试的实现,如 [1] 中所述。
- sample1, sample2, …: 一维数组
每个实验组的样本测量值。
- control: 一维数组
对照组的样本测量值。
- alternative: {‘双面’,‘less’, ‘greater’},可选
定义备择假设。
原假设是样本和对照的分布均值相等。可以使用以下替代假设(默认为“双面”):
“双面”:样本和对照的分布均值不相等。
‘less’:样本基础分布的均值小于对照基础分布的均值。
‘greater’:样本基础分布的均值大于控件基础分布的均值。
- random_state: {无,整数,
numpy.random.Generator
},可选 如果random_state是 int 或 None,一个新的
numpy.random.Generator
是使用创建的np.random.default_rng(random_state)
.如果random_state已经是一个Generator
实例,然后使用提供的实例。随机数生成器用于控制 multivariate-t 分布的随机 Quasi-Monte 卡罗积分。
- res:
DunnettResult
包含属性的对象:
- 统计 浮点数数组
每次比较的测试的计算统计量。索引
i
处的元素是组i
与对照组之间比较的统计数据。- p值 浮点数数组
每次比较的检验的计算 p 值。索引
i
处的元素是组i
与对照之间比较的 p 值。
以及以下方法:
- confidence_interval(confidence_level=0.95):
计算对照组平均值的差异+-津贴。
- res:
参数 ::
返回 ::
注意:
与 independent-sample t-test 一样,Dunnett 检验 [1] 用于推断样本的分布均值。然而,当在固定显著性水平下执行多个t-tests时,“family-wise错误率”(在至少一次检验中错误拒绝零假设的概率)将超过显著性水平。 Dunnett 的测试旨在执行多重比较,同时控制 family-wise 错误率。
邓尼特检验将多个实验组的平均值与单个对照组的平均值进行比较。 Tukey 的诚实显著差异测试是另一个控制 family-wise 错误率的 multiple-comparison 测试,但是scipy.stats.tukey_hsd施行全部组间的两两比较。当不需要实验组之间的成对比较时,邓尼特检验因其较高的功效而更可取。
该测试的使用依赖于几个假设。
观察在组内和组间是独立的。
每组内的观察值呈正态分布。
从中抽取样本的分布具有相同的有限方差。
参考:
[1] (1,2,3)查尔斯·W·邓尼特。 “将几种治疗方法与对照进行比较的多重比较程序。”美国统计协会杂志,50:272, 1096-1121,DOI:10.1080/01621459.1955.10501294,1955 年。
例子:
在[1]中,研究了药物对三组动物血细胞计数测量的影响。
下表总结了实验结果,其中两组接受不同的药物,一组作为对照。记录血细胞计数(每立方毫米数百万个细胞):
>>> import numpy as np >>> control = np.array([7.40, 8.50, 7.20, 8.24, 9.84, 8.32]) >>> drug_a = np.array([9.76, 8.80, 7.68, 9.36]) >>> drug_b = np.array([12.80, 9.68, 12.16, 9.20, 10.55])
我们想看看任何组之间的方法是否有显著差异。首先,目视检查盒须图。
>>> import matplotlib.pyplot as plt >>> fig, ax = plt.subplots(1, 1) >>> ax.boxplot([control, drug_a, drug_b]) >>> ax.set_xticklabels(["Control", "Drug A", "Drug B"]) >>> ax.set_ylabel("mean") >>> plt.show()
注意药物 A 组和对照组的重叠四分位数范围以及药物 B 组和对照组之间的明显分离。
接下来,我们将使用 Dunnett 检验来评估组均值之间的差异是否显著,同时控制 family-wise 错误率:做出任何错误发现的概率。令零假设为实验组与对照组具有相同的均值,而替代假设为实验组与对照组不具有相同的均值。我们认为 5% family-wise 错误率是可以接受的,因此我们选择 0.05 作为显著性阈值。
>>> from scipy.stats import dunnett >>> res = dunnett(drug_a, drug_b, control=control) >>> res.pvalue array([0.62004941, 0.0059035 ]) # may vary
A 组与对照组之间的比较对应的 p 值超过 0.05,因此我们不拒绝该比较的原假设。然而,与 B 组和对照组之间的比较相对应的 p 值小于 0.05,因此我们认为实验结果是反对零假设的证据,有利于替代方案:B 组的平均值与对照组不同。
相关用法
- Python SciPy stats.directional_stats用法及代码示例
- Python SciPy stats.dirichlet_multinomial用法及代码示例
- Python SciPy stats.dweibull用法及代码示例
- Python SciPy stats.differential_entropy用法及代码示例
- Python SciPy stats.dgamma用法及代码示例
- Python SciPy stats.describe用法及代码示例
- Python SciPy stats.dlaplace用法及代码示例
- Python SciPy stats.dirichlet用法及代码示例
- Python SciPy stats.anderson用法及代码示例
- Python SciPy stats.iqr用法及代码示例
- Python SciPy stats.genpareto用法及代码示例
- Python SciPy stats.skewnorm用法及代码示例
- Python SciPy stats.cosine用法及代码示例
- Python SciPy stats.norminvgauss用法及代码示例
- Python SciPy stats.invwishart用法及代码示例
- Python SciPy stats.bartlett用法及代码示例
- Python SciPy stats.levy_stable用法及代码示例
- Python SciPy stats.page_trend_test用法及代码示例
- Python SciPy stats.itemfreq用法及代码示例
- Python SciPy stats.exponpow用法及代码示例
- Python SciPy stats.gumbel_l用法及代码示例
- Python SciPy stats.chisquare用法及代码示例
- Python SciPy stats.semicircular用法及代码示例
- Python SciPy stats.gzscore用法及代码示例
- Python SciPy stats.gompertz用法及代码示例
注:本文由纯净天空筛选整理自scipy.org大神的英文原创作品 scipy.stats.dunnett。非经特殊声明,原始代码版权归原作者所有,本译文未经允许或授权,请勿转载或复制。