Random slope for time in subject not working in lme4

前端 未结 1 1117
滥情空心
滥情空心 2021-02-06 17:44

I can not insert a random slope in this model with lme4(1.1-7):

> difJS<-lmer(JS~Tempo+(Tempo|id),dat,na.action=na.omit)
Error: number of observations (=27         


        
相关标签:
1条回答
  • 2021-02-06 18:19

    It is "working" with lme, but I'm 99% sure that your random slopes are indeed confounded with the residual variation. The problem is that you only have two measurements per subject (or only one measurement per subject in 4 cases -- but that's not important here), so that a random slope plus a random intercept for every individual gives one random effect for every observation.

    If you try intervals() on your lme fit, it will give you an error saying that the variance-covariance matrix is unidentifiable.

    You can force lmer to do it by disabling some of the identifiability checks (see below).

    library("lme4")
    library("nlme")
    library("plyr")
    

    Restrict the data to only two points per individual:

    sleepstudy0 <- ddply(sleepstudy,"Subject",
          function(x) x[1:2,])
    m1 <- lme(Reaction~Days,random=~Days|Subject,data=sleepstudy0)
    intervals(m1)
    ## Error ... cannot get confidence intervals on var-cov components
    
    lmer(Reaction~Days+(Days|Subject),data=sleepstudy0)
    ## error
    

    If you want you can force lmer to fit this model:

    m2B <- lmer(Reaction~Days+(Days|Subject),data=sleepstudy0,
            control=lmerControl(check.nobs.vs.nRE="ignore"))
    ## warning messages
    

    The estimated variances are different from those estimated by lme, but that's not surprising since some of the parameters are jointly unidentifiable.

    If you're only interested in inference on the fixed effects, it might be OK to ignore these problems, but I wouldn't recommend it.

    The sensible thing to do is to recognize that the variation among slopes is unidentifiable; there may be among-individual variation among slopes, but you just can't estimate it with this model. Don't try; fit a random-intercept model and let the implicit/default random error term take care of the variation among slopes.

    There's a recent related question on CrossValidated; there I also refer to another example.

    0 讨论(0)
提交回复
热议问题