如何强制所有治疗在lme4中具有相同的拦截?

时间:2017-08-24 18:43:13

标签: r lme4

这是我第一次在这里发帖,所以我希望我的问题不是愚蠢的,虽然我担心它没有答案。

我进行了一次喂养试验,在那里喂养五种不同藻类中的一种,然后测量个体长度。我使用R lme4

构建了一个LMM
model<-lmer(log(length)~treatment*day+(1+day|individual), data=real, REML=F)

在我的模型中,其中一种治疗方法的截距与其他方法截然不同:

Plot of my model, showing the treatment with outlier intercept, and other treatments with roughly matching intercepts.

我在61天(第7天,第20天,第42天,第61天)测量了4次长度,但不幸的是我没有在第0天测量它。所有的蜗牛来自同一批次,所以每次治疗都有相同的第0天的平均长度。有没有办法告诉R这是真的,即使我不知道第0天的平均长度是多少?从理论上讲,我可以调整截距以使它们匹配,但如果模型考虑到这些信息,那么线的斜率似乎也会发生变化。

我知道模型的编写是为了让所有人都有随机拦截。然而,使用术语(0+day|individual)编写模型以便个体具有固定的截距并不能解决问题,因为个体的截距仅在治疗中相同,但在治疗之间是不同的。可能是我要求R做不可能或不道德的事情,即制作数据。

提前感谢任何建议!

编辑可重现的示例: 如果使用R“ChickWeights”数据集会发生同样的问题(这些数据不是一个完美的线性趋势,但作为一个例子还不错)

model.chix<-lmer(weight~Diet*Time+(Time|Chick), data=ChickWeight, REML=FALSE)

> summary(model.chix)
Linear mixed model fit by maximum likelihood  ['lmerMod']
Formula: weight ~ Diet * Time + (Time | Chick)
   Data: ChickWeight

     AIC      BIC   logLik deviance df.resid 
  4824.2   4876.5  -2400.1   4800.2      566 

Scaled residuals: 
    Min      1Q  Median      3Q     Max 
-2.7508 -0.5693 -0.0401  0.4694  3.5415 

Random effects:
 Groups   Name        Variance Std.Dev. Corr 
 Chick    (Intercept) 103.61   10.179        
          Time         10.01    3.165   -0.99
 Residual             163.36   12.781        
Number of obs: 578, groups:  Chick, 50

Fixed effects:
            Estimate Std. Error t value
(Intercept)  33.6541     2.8023  12.009
Diet2        -5.0205     4.8072  -1.044
Diet3       -15.4038     4.8072  -3.204
Diet4        -1.7475     4.8145  -0.363
Time          6.2799     0.7304   8.598
Diet2:Time    2.3293     1.2508   1.862
Diet3:Time    5.1430     1.2508   4.112
Diet4:Time    3.2528     1.2515   2.599

Correlation of Fixed Effects:
           (Intr) Diet2  Diet3  Diet4  Time   Dt2:Tm Dt3:Tm
Diet2      -0.583                                          
Diet3      -0.583  0.340                                   
Diet4      -0.582  0.339  0.339                            
Time       -0.881  0.513  0.513  0.513                     
Diet2:Time  0.514 -0.882 -0.300 -0.299 -0.584              
Diet3:Time  0.514 -0.300 -0.882 -0.299 -0.584  0.341       
Diet4:Time  0.514 -0.300 -0.300 -0.882 -0.584  0.341  0.341

截距估计值预测第0天的雏鸡重量。预测Diet1上的雏鸡重33.7克,而Diet3上的雏鸡预计重15.4克。如果它在第0天迫使所有的鸡蛋重量相同,那么这个模型不是更合适吗?

2 个答案:

答案 0 :(得分:0)

您能提供一个可重复的示例来更好地理解这一点吗?

我得到的是你要删除随机效果,对吧?在那种情况下是

library(lme4)
library(ggplot2)

model <- lmer(log(hwy) ~ -1 + displ + (displ || year), data=mpg, REML=F)

答案 1 :(得分:0)

我发现我可以通过包含没有主要效果术语的交互术语来获得匹配的截距:

model.chix<-lmer(weight~Diet:Time+(Time|Chick), data=ChickWeight, REML=FALSE)

但是,要包含互动,您还必须包含主要效果字词,否则您的统计信息是错误的。因此,我按照上面的说明确定了模型,并且如果没有拦截,将为现有数据的最佳拟合提供一个案例。