3

我目前正在阅读 Andy Field 的书《使用 R 发现统计数据》。第 14 章是关于混合建模的,他使用lme了包中的函数nlme

他使用快速约会数据创建的模型是这样的:

speedDateModel <- lme(dateRating ~ looks + personality +
                 gender + looks:gender + personality:gender + 
                 looks:personality,
    random = ~1|participant/looks/personality)

我尝试使用包中的lmer函数重新创建一个类似的模型lme4;但是,我的结果是不同的。我以为我有正确的语法,但也许不是?

speedDateModel.2 <- lmer(dateRating ~ looks + personality + gender + 
              looks:gender + personality:gender + 
              (1|participant) + (1|looks) + (1|personality), 
              data = speedData, REML = FALSE)

此外,当我运行这些模型的系数时,我注意到它只会为每个参与者产生随机截距。然后我试图创建一个同时产生随机截距和斜率的模型。我似乎无法让这两个函数的语法正确。任何帮助将不胜感激。

4

1 回答 1

4

lme和对应公式的唯一区别lmer应该是随机分量和固定分量聚合成一个公式:

dateRating ~ looks + personality +
             gender + looks:gender + personality:gender + 
             looks:personality+ (1|participant/looks/personality)

using仅在每个嵌套级别具有唯一值(1|participant) + (1|looks) + (1|personality)时才等效。lookspersonality

目前尚不清楚您要定义斜率的连续变量:如果您有一个连续变量x和组g,那么(x|g)或等效地(1+x|g)会给您一个随机斜率模型(x也应该包含在模型的固定效应部分中,即完整的公式应该是y~x+(x|g)......)

更新:我从这里得到了数据,或者更确切地说是一个允许重建数据的脚本文件。Field 在他的书中犯了一个常见错误,我过去曾多次犯过这个错误:由于每个参与者/长相/个性组合在数据集中只有一个观察值,因此三向交互每个观察值都有一个级别。在线性混合模型中,这意味着嵌套最低级别的方差将与残差方差混淆。

您可以通过两种方式看到这一点:

  • lme 似乎很适合模型,但是如果您尝试通过 计算置信区间intervals(),您会得到
 intervals(speedDateModel)
 ## Error in intervals.lme(speedDateModel) : 
 ##   cannot get confidence intervals on var-cov components: 
 ##   Non-positive definite approximate variance-covariance
  • 如果你尝试这个,lmer你会得到:
## Error: number of levels of each grouping factor
##   must be < number of observations

在这两种情况下,这都是有问题的线索。(如果你真的想要,你可以克服这个问题:见。)lmer?lmerControl

如果我们省略最低的分组级别,一切正常:

sd2 <- lmer(dateRating ~ looks + personality +
                 gender + looks:gender + personality:gender + 
                 looks:personality+
                     (1|participant/looks),
            data=speedData)

比较lmerlme固定效果:

all.equal(fixef(sd2),fixef(speedDateModel)) ## TRUE

这里的八哥例子给出了另一个例子,并进一步解释了这个问题。

于 2015-11-07T18:45:35.787 回答