Estou tentando analisar alguns dados usando um modelo de efeito misto. Os dados que eu coletei representam o peso de alguns animais jovens de diferentes genótipos ao longo do tempo.
Estou usando a abordagem proposta aqui: https://gribblelab.wordpress.com/2009/03/09/repeated-measures-anova-using-r/
Em particular, estou usando a solução 2
Então eu tenho algo como
require(nlme)
model <- lme(weight ~ time * Genotype, random = ~1|Animal/time,
data=weights)
av <- anova(model)
Agora, eu gostaria de fazer algumas comparações múltiplas. Usando multcomp
eu posso fazer:
require(multcomp)
comp.geno <- glht(model, linfct=mcp(Genotype="Tukey"))
print(summary(comp.geno))
E, é claro, eu poderia fazer o mesmo com o tempo.
Eu tenho duas perguntas:
- Como eu uso
mcp
para ver a interação entre Time e Genotype? Quando corro
glht
, recebo este aviso:covariate interactions found -- default contrast might be inappropriate
O que isso significa? Posso ignorá-lo com segurança? Ou o que devo fazer para evitá-lo?
EDIT: Encontrei este PDF que diz:
Como é impossível determinar os parâmetros de interesse automaticamente nesse caso, mcp () no multcomp, por padrão, gera comparações apenas para os principais efeitos, ignorando covariáveis e interações . Desde a versão 1.1-2, pode-se especificar a média dos termos de interação e covariáveis usando os argumentos interação_average = TRUE e covariate_average = TRUE, respectivamente, enquanto as versões anteriores a 1.0-0 calculam a média automática dos termos de interação. Sugerimos aos usuários, no entanto, que escrevam, manualmente, o conjunto de contrastes que desejam.Deve-se fazer isso sempre que houver dúvida sobre o que os contrastes padrão medem, o que normalmente acontece em modelos com termos de interação de ordem superior. Nós nos referimos a Hsu (1996), capítulo ~ 7, e Searle (1971), capítulo ~ 7.3, para discussões e exemplos adicionais sobre esse assunto.
Eu não tenho acesso a esses livros, mas talvez alguém aqui tenha?
Respostas:
Se
time
eGenotype
são ambos preditores categóricos como parecem ser, e você está interessado em comparar todos os pares de tempo / genótipo entre si, basta criar uma variável de interação e usar os contrastes de Tukey:Se você estiver interessado em outros contrastes, poderá usar o fato de que o
linfct
argumento pode ter uma matriz de coeficientes para os contrastes - dessa forma, você pode configurar exatamente as comparações que deseja.EDITAR
Parece haver alguma preocupação nos comentários de que o modelo equipado com o
TimeGeno
preditor é diferente do modelo original equipado com oTime * Genotype
preditor. Não é esse o caso , os modelos são equivalentes. A única diferença está na parametrização dos efeitos fixos, configurada para facilitar o uso daglht
função.Eu usei um dos conjuntos de dados internos (tem Diet em vez de Genotype) para demonstrar que as duas abordagens têm a mesma probabilidade, valores previstos, etc:
A única diferença é que quais hipóteses são fáceis de testar. Por exemplo, no primeiro modelo, é fácil testar se os dois preditores interagem; no segundo modelo, não há teste explícito para isso. Por outro lado, o efeito conjunto dos dois preditores é fácil de testar no segundo modelo, mas não no primeiro. As outras hipóteses são testáveis, é apenas mais trabalho para configurá-las.
fonte
glht
usa os graus de liberdade dados no modelo lme. Não tenho certeza se esses graus de liberdade são adequados ...?Animal/time
que agora não é um dos fatores. Será que realmenteunderstand
isso?all.equal(resid(model1), resid(model2))
ver que eles são os mesmos antes de adivinhar o contrário? Somente a parametrização de efeitos fixos é diferente.TimeDiet
não é um termo de interação puro e não é equivalente aTime:Diet
, mas sim aTime + Diet + Time:Diet
.