混合建模 - lme和lmer函数之间的不同结果

时间:2015-11-07 18:36:32

标签: r lme4 mixed-models nlme

我目前正在编写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)

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

1 个答案:

答案 0 :(得分:3)

lme和相应的lmer公式之间的唯一区别应该是将随机和固定组件聚合为单个公式:

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

使用(1|participant) + (1|looks) + (1|personality)仅在lookspersonality在每个嵌套级别都具有唯一值时才相同。

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

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

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

  • y~x+(x|g) 出现以适应模型,但如果您尝试通过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) lmer固定效果:

lme

starling示例here提供了另一个示例并进一步解释了此问题。