最近我一直在尝试对相对较大的数据集拟合很多随机效应模型,比如说大约有50,000人(或更多)在最多25个时间点上进行观察。由于样本量很大,我们需要调整很多预测变量 - 也许是50个左右的固定效应。我使用R中的lme4 :: glmer
将模型拟合到二元结果,每个主题都有随机截距。我不能具体说明数据,但我使用的 glmer
命令的基本格式是:
fit <- glmer(outcome ~ treatment + study_quarter + dd_quarter + (1|id),
family = "binomial", data = dat)
在这里,study_quarter
和 dd_quarter
这两个变量都有约20个水平。
我尝试在R中拟合这个模型,但它运行了大约12-15小时,然后返回一个未能收敛的错误。我进行了一些故障排除(例如,按照这些指南操作),但没有改善。最终,收敛甚至还很遥远(最大梯度约为5-10,而收敛标准是0.001左右,我想)。
然后,我尝试使用 Stata 中的 melogit 命令拟合模型。该模型在不到2分钟的时间内拟合完成,没有出现收敛问题。对应的Stata命令是:
melogit outcome treatment i.study_quarter i.dd_quarter || id:
是什么使得Stata表现更好?是拥有更好的拟合算法,还是针对大型模型和大型数据集进行了更好的优化呢?两者的运行时间差异如此之大确实让人惊讶。
family = binomial(link = "logit")
然后再试试看? - Erdne Htábrobglmer
时,需要运行数天并出现收敛警告 - 而在Stata中使用melogit
只需几分钟即可完成拟合,并获得与相同规范下几乎相同的结果。 - Tom Wagstaff