[R] post hoc comparison in repeated measure
Richard M. Heiberger
rmh at temple.edu
Thu May 11 02:46:36 CEST 2006
This is how I would do it.
arraychip <- read.table("arraychip.dat", sep='\t',
header=T, row.names=1)
for (i in 2:4) arraychip[[i]] <- factor(arraychip[[i]])
## run aov:
fit <- aov(x ~ treatment + Time + Error(animal), data=arraychip)
summary(fit)
## single stratum for the same ANOVA
fit2 <- aov(x ~ treatment + animal + Time, data=arraychip)
summary(fit2)
trt.means <- model.tables(fit2, cterms="treatment", type="means")
treat.means <- as.vector(trt.means$tables$treatment)
treat.n <- as.vector(trt.means$n$treatment)
names(treat.means) <- levels(arraychip$treatment)
## this expression works in R and S-Plus
mi.mj <- outer(treat.means, treat.means, "-")
s2 <- summary(fit2)$"Mean Sq"[2] ## S-Plus
s2 <- summary(fit2)[[1]]["animal","Mean Sq"] ## R
s2.n <- s2 / treat.n
si.sj <- sqrt(outer(s2.n, s2.n, "+"))
q.tukey <- qtukey(.95, 4 ,36) /sqrt(2)
mi.mj
lower <- mi.mj - q.tukey*si.sj
upper <- mi.mj + q.tukey*si.sj
lower
upper
## in S-Plus you can also use
multicomp.default(treat.means,
df.residual=summary(fit2)$Df[2],
vmat=diag(
## rep(
summary(fit2)$"Mean Sq"[2]
## , length(trt.means))
/ treat.n
),
method="tukey")
More information about the R-help
mailing list