[英]Mixed Modelling - Different Results between lme and lmer functions
我目前正在研究Andy Field的书,《使用R发现统计信息》。第14章介绍了混合建模,他使用了nlme
包中的lme
函数。
他使用快速约会数据创建的模型如下:
speedDateModel <- lme(dateRating ~ looks + personality +
gender + looks:gender + personality:gender +
looks:personality,
random = ~1|participant/looks/personality)
我试图使用lme4
包中的lmer
函数来重新创建类似的模型; 但是,我的结果却不同。 我以为我有正确的语法,但也许没有?
speedDateModel.2 <- lmer(dateRating ~ looks + personality + gender +
looks:gender + personality:gender +
(1|participant) + (1|looks) + (1|personality),
data = speedData, REML = FALSE)
另外,当我运行这些模型的系数时,我注意到它仅对每个参与者产生随机截距。 然后,我试图创建一个同时产生随机截距和斜率的模型。 我似乎无法获得正确的语法来执行此功能。 任何帮助将不胜感激。
lme
和相应的lmer
公式之间的唯一区别应该是将随机和固定成分汇总为一个公式:
dateRating ~ looks + personality +
gender + looks:gender + personality:gender +
looks:personality+ (1|participant/looks/personality)
仅当looks
和personality
在每个嵌套级别具有唯一值时,才使用(1|participant) + (1|looks) + (1|personality)
等价。
尚不清楚您要定义斜率的连续变量:如果您有一个连续变量x
并分组g
,则(x|g)
或等效地(1+x|g)
将为您提供一个随机斜率模型( x
应该也包含在模型的固定效应部分中,即完整公式应为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
尝试此操作, 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
固定效果:
all.equal(fixef(sd2),fixef(speedDateModel)) ## TRUE
此处的繁琐示例给出了另一个示例,并对此问题作了进一步说明。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.