鄧內特檢定#
鄧內特檢定比較多個實驗組與單一對照組的平均值。在 [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.62008884, 0.00587363])
組別 A 和對照組之間比較對應的 p 值超過 0.05,因此我們不拒絕該比較的虛無假設。然而,組別 B 和對照組之間比較對應的 p 值小於 0.05,因此我們認為實驗結果是反對虛無假設而支持對立假設的證據:組別 B 的平均值與對照組不同。