Id: Unidade Amostral
#Estrutura dos dados:
set.seed(13032012)
d=expand.grid(Trat1=gl(3,18),Tempo=gl(2,1))
d$Trat2=gl(2,9,108)
d$Id=as.factor(rep(1:54,2))
d$Y=abs(rnorm(108,c(10,30,8),10))
str(d)
#Verificar estrutura para a unidade amostral i=3, por exemplo
d[d$Id==3,]: Tratamento1 =1, Tratamento2=1 Tempo=1, 2.
#Ajuste que fiz usando lme
library(nlme)
f=lme(Y~(Trat1/Trat2)*Tempo, random=~1|Id,d)
summary(f)
m0 <- lme(Y~Trat2/Tempo/Trat1, random=~1|Id,d)
fixef(m0)
anova(m0)
require(aod)
# 8 parâmetros = 8 g.l. da interação
grep("*.:Tempo*.:Trat1*.", names(fixef(m0)), value=TRUE)
idx <- grep("*.:Tempo*.:Trat1*.", names(fixef(m0)))
# última linha da anova(m0)
wald.test(Sigma=vcov(m0), b=fixef(m0), Terms=idx, df=nrow(d)-length(fixef(m0)))
# assim é possível fazer testes de desdobramento de interação usando a wald.test()
# é só saber que índices passar para Terms= para ter as hipóteses adequadas
require(contrast)
levels(d$Trat2)
levels(d$Trat1)
levels(d$Tempo)
c0 <- contrast(m0,
list(Trat2="1", Tempo="1", Trat1="1"),
list(Trat2="1", Tempo="1", Trat1="2"))
# modelo tem que estar na forma cruzada (*) e não aninhada (/)
m0 <- lme(Y~Trat2*Tempo*Trat1, random=~1|Id,d)
c0 <- contrast(m0,
list(Trat2="1", Tempo="1", Trat1="1"),
list(Trat2="1", Tempo="1", Trat1="2"))
c0
c0$X # vetor de contrastes
Depois é só você trocar os niveis na contrast() para demais comparações. Você pode reunir os vetores de contraste e fazer esses contrastes com a multcomp::glht() para ajustar o p-valor dos testes, visto que são muitas hipóteses não ortogonais. Consulte a documentação dessas funções. Aconselho você a sempre enviar perguntas para a R-br pois o sucesso de resposta é maior, sua dúvida pode ajudar os demais além de ficar no arquivo da lista para consulta futura.
À disposição.
Walmes.