首页 > 解决方案 > glmmLasso 函数无法完成运行

问题描述

我正在尝试在 RStudio 中使用 glmmLasso 构建混合模型套索模型。但是,我正在寻求一些帮助。

我的模型方程如下:

glmmModel <- glmmLasso(outcome ~ year + married ,list(ID=~1), lambda = 100, family=gaussian(link="identity"), data=data1,control = list(print.iter=TRUE))

其中结果是连续变量,年份是收集数据的年份,已婚是对象是否已婚的二元指标 (1/0)。我最终想在我的模型中包含更多的协变量,但是为了首先成功地运行它,现在我只是试图用这两个协变量运行一个模型。我的 data1 数据框是 48000 个观察值和 57 个变量。

但是,当我单击运行时,模型会运行数小时(48+)而不会停止。我得到的唯一反馈是“ITERATION 1”、“ITERATION 2”等......我有什么遗漏或做错了吗?请注意,我在只有 8 GB RAM 的机器上运行,但我认为这不应该是问题,对吧?我的数据集(48000 个观察值)并不是特别大(至少我不这么认为)。关于如何解决此问题的任何建议或想法将不胜感激。谢谢!

标签: rstatisticsramglmmixed-models

解决方案


这太长了,不能发表评论,但我觉得你应该回答这个困惑。

体验“慢”性能的情况并不少见。事实上,在许多 glmm 实现中,它比没有更常见。事实上,广义线性混合效应模型很难估计。对于纯高斯模型(无惩罚器),一系列证明为我们提供了 REML 估计器,可以非常有效地估计它,但对于广义模型,情况并非如此。因此请注意,随机效应模型矩阵可以变得绝对庞大。请记住,对于每个随机效应,您都会获得一个块对角矩阵,因此即使对于小型数据,您也可能拥有一个包含 2000 多列的模型矩阵,需要通过 PIRLS(反演等)进行优化。

一些包(glmmTMB、lme4 和 nlme)具有非常有效的实现,它们滥用随机效应矩阵的块对角性和高性能 C/C++ 库来执行优化的稀疏矩阵计算,而glmmLasso(链接到源)包使用 R-base 来执行它的所有计算。不管我们怎么做,它不会滥用稀疏计算并在 R 中实现它的代码,这会导致它变慢

作为旁注,我的论文项目有大约 24000 次观察,有 3 个随机效应变量(和一些奇怪的 20 个固定效应)。该数据集的拟合过程可能需要 15 分钟到 3 小时,具体取决于复杂性,并且主要由随机效应结构决定。

所以从这里的答案:

是的 glmmLasso 会很慢。这可能需要数小时、数天甚至数周,具体取决于您的数据集。我建议使用跨独立组的分层(或/和聚类)子样本,使用较小的数据集(可能是 3000 - 4000?)拟合模型,以获得初始起点,并“希望”这些接近真实值. 要有耐心。如果您认为神经网络很复杂,欢迎来到广义混合效应模型的世界。


推荐阅读