我正在尝试复制用于单向混合效应方差分析的 Tukey 测试的教科书示例(来自 Statistics,William L. Hays p 581-583),但我使用 lme 和 glht 获得的 p 值没有意义
该研究重复测量了四种治疗方法和 10 名受试者
数据
subject=c(1, 1, 1, 1, 2, 2, 2, 2, 3, 3, 3, 3, 4, 4, 4, 4, 5, 5, 5, 5, 6, 6, 6,
6, 7, 7, 7, 7, 8, 8, 8, 8, 9, 9, 9, 9, 10, 10, 10, 10)
treatment=c("a1", "a2", "a3", "a4", "a1", "a2", "a3", "a4", "a1", "a2", "a3",
"a4", "a1", "a2", "a3", "a4", "a1", "a2", "a3", "a4", "a1", "a2",
"a3", "a4", "a1", "a2", "a3", "a4", "a1", "a2", "a3", "a4", "a1",
"a2", "a3", "a4", "a1", "a2", "a3", "a4")
response=c(11, 9, 5, 17, 14, 12, 10, 18, 15, 7, 6, 21, 17, 10, 13, 22, 15, 7, 6,
15, 14, 8, 13, 22, 9, 6, 7, 15, 17, 11, 10, 19, 10, 13, 14, 23, 12,
8, 11, 20)
dataFrame=data.frame(subject, treatment, response)
该模型
library(nlme)
model = lme(response~ treatment,random=~1|subject,data=dataFrame)
anova(model)
numDF denDF F-value p-value
(Intercept) 1 27 375.9198 <.0001
treatment 3 27 43.4507 <.0001
这个 F 值与 Hay 的 ( ) 足够接近F = 43.41
,我很确定我的模型很好。
图基测试
library(multcomp)
glht.out =glht(model, mcp(treatment="Tukey"))
summary(glht.out)
Simultaneous Tests for General Linear Hypotheses
Multiple Comparisons of Means: Tukey Contrasts
Fit: lme.formula(fixed = response ~ treatment, data = dataFrame, random = ~1 |
subject)
Linear Hypotheses:
Estimate Std. Error z value Pr(>|z|)
a2 - a1 == 0 -4.300 1.006 -4.276 <0.001 ***
a3 - a1 == 0 -3.900 1.006 -3.879 <0.001 ***
a4 - a1 == 0 5.800 1.006 5.768 <0.001 ***
a3 - a2 == 0 0.400 1.006 0.398 0.979
a4 - a2 == 0 10.100 1.006 10.044 <0.001 ***
a4 - a3 == 0 9.700 1.006 9.647 <0.001 ***
这与书本不一致。Hay's 只报告了一些比较,并给出了 HSD 和均值,而不是 p,但对于 a3-a1 的对比,发现与 an 没有显着差异,HSD = 4.02
并且mean = 3.9
根据我的计算有p.value = 1-ptukey(3.9*sqrt(10/8.27),4,9)=0.05719563
.
R 输出也没有意义,因为应该控制多重比较的 Tukey 检验 p 值远小于配对 t 检验的 p 值(p=0.0142,使用t.test(c(11, 14, 15, 17, 15, 14, 9, 17, 10, 12),c(5, 10, 6, 13, 6, 13, 7, 10, 14, 11), paired=TRUE)
.
知道我做错了什么以及如何在 R 中正确执行 Tukey 测试吗?