R 中的线性混合效应模型不会收敛

问题描述 投票:0回答:1

我有一个长格式数据集,包含大约 7 万人的数据。该数据跟踪基线后 3、6 和 12 个月的连续随访测量(每个时间点都有 +/- 1 个月的缓冲期)。成员只需在任何时间点采取 1 项后续措施即可纳入研究。基线时有完整的数据,第 3 个月的数据完整率为 94%,但在后期时间点有相当多的缺失(第 6 个月为 60%,第 12 个月为 87%)。

身份证 时间_点 持续成果
1 0 7.5
1 3 7.2
1 6 不适用
1 12 7.0

我正在使用 R 的

lmer
包中的
lme4
命令来尝试运行此模型,将时间作为固定效应中的因子变量,并结合随机斜率(时间作为连续变量)和随机效应中的截距,将每个成员视为一个单独的集群。 代码:

m.unstructured <- lmer(outcome ~ time_factor + (1 + time | id),
  data = df.long
)

我期望获得一个模型摘要,其中包含每个时间点相对于基线的变化值。但是,模型无法收敛并出现以下错误:

Warning message:
In checkConv(attr(opt, "derivs"), opt$par, ctrl = control$checkConv,  :
  Model failed to converge with max|grad| = 0.00317116 (tol = 0.002, component 1)

只有当我添加像 Nelder-Mead 或 bobyqa 这样的优化器时,我才能让模型运行,例如

control = lmerControl(optimizer ="Nelder_Mead")
。当我尝试使用
nlme
命令在
lme
包中运行此模型时,我遇到了类似的问题。

我的问题是,这个论证的作用是什么?为什么没有它我的模型就无法运行?是因为样本量大、缺失广泛吗?我可以假设这种使用优化器的方法会产生有效的结果吗?最终,我想比较协方差结构并添加额外的固定效应,例如性别和年龄,但在我能够理解如何运行我的模型之前,我陷入了困境。感谢您提供的任何指导!

r lme4 longitudinal
1个回答
0
投票

lme4
文档和辅助信息中有很多关于此的信息:

更具体地说,本页说明收敛检查机制在大约 10,000 个观察值时开始变得不可靠(您有大约 120K 个观察值:“观察值”是数据框中的一行,即主题:时间点组合)。

您所说的错误在技术上并不是错误,而是一个警告;这是一个重要的区别(请参阅here了解更多信息。如果您确实有错误,您将无法检索结果;因为这是警告,所以您可以。

我的建议:

  • 使用
    allFit()
    使用所有可用的优化器来尝试您的模型
  • 比较结果(对于模型的哪些方面对您来说很重要,例如
    time_factor
    的固定效应或随机效应方差,以及对您的应用程序来说重要的任何容差)
    • 如果所有优化器给出截然不同的答案,你可能会遇到麻烦
    • 如果优化器的子集给出了类似的、合理的答案,请从该子集中选择您最喜欢的(可能是最快的)并继续进行其余的分析。之后,您可能决定使用
      lmerControl(calc.derivs = FALSE)
      来抑制(容易出错的)导数计算,这将使您免受进一步警告(!)并节省时间...
© www.soinside.com 2019 - 2024. All rights reserved.