Eu tenho trabalhado com alguns dados que têm alguns problemas com medições repetidas. Ao fazer isso, notei um comportamento muito diferente entre lme()
e lmer()
usando meus dados de teste e quero saber o porquê.
O conjunto de dados falsos que criei possui medidas de altura e peso para 10 indivíduos, tiradas duas vezes cada. Configurei os dados para que, entre os sujeitos, houvesse uma relação positiva entre altura e peso, mas uma relação negativa entre as medidas repetidas dentro de cada indivíduo.
set.seed(21)
Height=1:10; Height=Height+runif(10,min=0,max=3) #First height measurement
Weight=1:10; Weight=Weight+runif(10,min=0,max=3) #First weight measurement
Height2=Height+runif(10,min=0,max=1) #second height measurement
Weight2=Weight-runif(10,min=0,max=1) #second weight measurement
Height=c(Height,Height2) #combine height and wight measurements
Weight=c(Weight,Weight2)
DF=data.frame(Height,Weight) #generate data frame
DF$ID=as.factor(rep(1:10,2)) #add subject ID
DF$Number=as.factor(c(rep(1,10),rep(2,10))) #differentiate between first and second measurement
Aqui está um gráfico dos dados, com linhas conectando as duas medidas de cada indivíduo.
Então, eu executei dois modelos, um com lme()
o nlme
pacote e outro com lmer()
from lme4
. Nos dois casos, executei uma regressão do peso contra a altura com um efeito aleatório da ID para controlar as medidas repetidas de cada indivíduo.
library(nlme)
Mlme=lme(Height~Weight,random=~1|ID,data=DF)
library(lme4)
Mlmer=lmer(Height~Weight+(1|ID),data=DF)
Esses dois modelos frequentemente (embora nem sempre dependendo da semente) geravam resultados completamente diferentes. Vi onde eles geram estimativas de variação ligeiramente diferentes, calculam diferentes graus de liberdade etc., mas aqui os coeficientes estão em direções opostas.
coef(Mlme)
# (Intercept) Weight
#1 1.57102183 0.7477639
#2 -0.08765784 0.7477639
#3 3.33128509 0.7477639
#4 1.09639883 0.7477639
#5 4.08969282 0.7477639
#6 4.48649982 0.7477639
#7 1.37824171 0.7477639
#8 2.54690995 0.7477639
#9 4.43051687 0.7477639
#10 4.04812243 0.7477639
coef(Mlmer)
# (Intercept) Weight
#1 4.689264 -0.516824
#2 5.427231 -0.516824
#3 6.943274 -0.516824
#4 7.832617 -0.516824
#5 10.656164 -0.516824
#6 12.256954 -0.516824
#7 11.963619 -0.516824
#8 13.304242 -0.516824
#9 17.637284 -0.516824
#10 18.883624 -0.516824
Para ilustrar visualmente, modele com lme()
E modelo com lmer()
Por que esses modelos divergem tanto?