邓内特检验#

邓内特检验比较多个实验组与单个对照组的均值。在 [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()
../../_images/98f0fadda7683f7545dbc625f4ee107cfb6bc3f72279733e553d4ad7baa20d7e.png

请注意药物 A 组和对照组的四分位数范围重叠,以及药物 B 组和对照组之间的明显分离。

接下来,我们将使用邓内特检验来评估组均值之间的差异是否显著,同时控制家庭错误率:做出任何错误发现的概率。

假设零假设是实验组与对照组具有相同的均值,备择假设是实验组与对照组不具有相同的均值。我们将认为 5% 的家庭错误率是可以接受的,因此我们选择 0.05 作为显著性阈值。

from scipy.stats import dunnett
res = dunnett(drug_a, drug_b, control=control)
res.pvalue
array([0.62008884, 0.00587363])

组 A 和对照组之间比较对应的 p 值超过 0.05,因此我们不拒绝该比较的零假设。然而,组 B 和对照组之间比较对应的 p 值小于 0.05,因此我们认为实验结果是反对零假设而支持备择假设的证据:组 B 与对照组的均值不同。

参考文献#