Ich habe mit Daten gearbeitet, die Probleme mit wiederholten Messungen haben. Dabei habe ich ein sehr unterschiedliches Verhalten zwischen lme()
und unter lmer()
Verwendung meiner Testdaten festgestellt und möchte wissen warum.
Der von mir erstellte gefälschte Datensatz enthält Größen- und Gewichtsmessungen für 10 Probanden, die jeweils zweimal durchgeführt wurden. Ich habe die Daten so eingestellt, dass zwischen den Probanden eine positive Beziehung zwischen Größe und Gewicht besteht, aber eine negative Beziehung zwischen den wiederholten Messungen innerhalb jedes einzelnen.
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
Hier ist ein Diagramm der Daten mit Linien, die die beiden Messungen von jedem einzelnen verbinden.
Also lief ich zwei Modelle, eines mit lme()
aus dem nlme
Paket und eines mit lmer()
aus lme4
. In beiden Fällen führte ich eine Regression des Gewichts gegen die Größe mit einem zufälligen ID-Effekt durch, um die wiederholten Messungen jedes Individuums zu kontrollieren.
library(nlme)
Mlme=lme(Height~Weight,random=~1|ID,data=DF)
library(lme4)
Mlmer=lmer(Height~Weight+(1|ID),data=DF)
Diese beiden Modelle führten häufig (wenn auch nicht immer abhängig von der Saat) zu völlig unterschiedlichen Ergebnissen. Ich habe gesehen, wo sie leicht unterschiedliche Varianzschätzungen erzeugen, unterschiedliche Freiheitsgrade berechnen usw., aber hier sind die Koeffizienten in entgegengesetzte Richtungen.
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
Zur Veranschaulichung modellieren Sie mit lme()
Und Modell mit lmer()
Warum weichen diese Modelle so stark voneinander ab?