Eu gostaria de usar lme4
para ajustar uma regressão de efeitos mistos e multcomp
calcular as comparações aos pares. Eu tenho um conjunto de dados complexo com vários preditores contínuos e categóricos, mas minha pergunta pode ser demonstrada usando o ChickWeight
conjunto de dados interno como exemplo:
m <- lmer(weight ~ Time * Diet + (1 | Chick), data=ChickWeight, REML=F)
Time
é contínuo e Diet
é categórico (4 níveis) e existem vários pintinhos por dieta. Todos os filhotes começaram com o mesmo peso, mas suas dietas (podem) afetam sua taxa de crescimento; portanto, as Diet
interceptações devem ser (mais ou menos) iguais, mas as inclinações podem ser diferentes. Posso obter comparações aos pares para o efeito de interceptação Diet
como este:
summary(glht(m, linfct=mcp(Diet = "Tukey")))
e, de fato, eles não são significativamente diferentes, mas como posso fazer o teste análogo para o Time:Diet
efeito? Apenas colocar o termo de interação mcp
produz um erro:
summary(glht(m, linfct=mcp('Time:Diet' = "Tukey")))
Error in summary(glht(m, linfct = mcp(`Time:Diet` = "Tukey"))) :
error in evaluating the argument 'object' in selecting a method for function
'summary': Error in mcp2matrix(model, linfct = linfct) :
Variable(s) ‘Time:Diet’ have been specified in ‘linfct’ but cannot be found in ‘model’!
fonte
Time*Diet
, que é apenas uma simplificação deTime + Diet + Time:Diet
. Usaranova(m)
ousummary(m)
confirmar que o termo de interação está no modelo.Respostas:
Por padrão,
lmer
trata o nível de referência de um preditor categórico como a linha de base e estima parâmetros para os outros níveis. Portanto, você obtém algumas comparações aos pares na saída padrão e pode obter as outras usandorelevel
para definir um novo nível de referência e reajustar o modelo. Isso tem a vantagem de permitir que você use comparações de modelo ou MCMC para obter os valores-p, mas não corrige várias comparações (embora você possa aplicar sua própria correção posteriormente).Para usar
multcomp
, você precisa definir a matriz de contraste. Cada linha na matriz de contraste representa pesos para os efeitos que você obtém na saída do modelo padrão, começando com o Intercept. Portanto, se você deseja um efeito que já esteja incluído na saída básica, basta colocar um "1" na posição correspondente a esse efeito. Como as estimativas de parâmetro são relativas a um nível de referência comum, é possível obter comparações entre outros dois níveis, definindo o peso de um para "-1" e do outro "1". Veja como isso funcionaria para osTime:Diet
termos doChickWeight
exemplo:Advertência: esta abordagem parece usar a aproximação normal para obter valores-p, que é um pouco anti-conservador e, em seguida, aplica alguma correção para comparações múltiplas. O resultado é que esse método fornece acesso fácil a quantas estimativas de parâmetros emparelhadas e erros padrão você desejar, mas os valores-p podem ou não ser o que você deseja.
(Obrigado a Scott Jackson, do r-ling-lang-L, pela ajuda)
fonte