Dunnett 检验#
Dunnett 检验将多个实验组的均值与单个对照组进行比较。在 [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's test
来评估组均值之间的差异是否显著,同时控制家族错误率:即做出任何错误发现的概率。
设零假设为实验组与对照组具有相同的均值,备择假设为实验组与对照组的均值不同。我们将认为 5% 的家族错误率是可接受的,因此我们选择 0.05 作为显著性阈值。
from scipy.stats import dunnett
res = dunnett(drug_a, drug_b, control=control)
res.pvalue
array([0.62014302, 0.00583758])
组 A 与对照组比较的 p 值超过 0.05,因此我们不拒绝该比较的零假设。然而,组 B 与对照组比较的 p 值小于 0.05,因此我们认为实验结果是反对零假设并支持备择假设的证据:即 B 组与对照组的均值不同。