繁体   English   中英

在 R 中指定逻辑混合 model 中重复测量的随机效应:lme4::glmer

[英]Specifying random effects for repeated measures in logistic mixed model in R: lme4::glmer

我正在寻找反馈以确定如何正确指定随机效应以解释重复测量设计中的相关性,但具有多个相关级别(包括每个预测变量组合的纵向数据)。 结果是二进制的,所以我将拟合一个逻辑混合 model。 我打算使用 lme4 package 中的lme4 glmer() function。 如果您想知道这些数据是如何产生的,一个示例来自眼动仪:人的眼睛被“跟踪”30 秒,例如,在不同级别的预测变量下,确定他们是否在屏幕上查看某个 object (因此是二进制结果)。

研究设计(可以通过在 R 中处理下面“虚拟数据集”下的代码来看到):

  • 结果( Binary_outcome )是二进制的。
    • 重复测量:在每个预测变量组合中多次记录每个受试者的二元反应(有关结构,请参见下面的“虚拟数据集”)。
  • 有两个感兴趣的预测变量(二元、分类):
    • 一个主体间因素,性别(男性/女性)。
    • 一个主体内因素,干预(前/后)。
  • 每个受试者在六次试验中进行测量(在这些试验下有重复测量),试验
    • 请注意,可以为一个人分配 12 种可能的试验。 因此,并非每个受试者都在所有 12 次试验中,而是随机一组 6 次试验。
    • 试验不是感兴趣的变量。 只是认为个体内部的观察结果和试验中的观察结果可能更相似,因此试验也应被视为聚类相关的一种形式。

虚拟数据集:显示我的数据的一般结构(尽管这不是实际的数据集):

structure(list(Subject = c(1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 
1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 
2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L), Trial = c("A", "A", 
"A", "B", "B", "B", "C", "C", "C", "D", "D", "D", "E", "E", "E", 
"F", "F", "F", "G", "G", "G", "E", "E", "E", "D", "D", "D", "A", 
"A", "A", "J", "J", "J", "L", "L", "L"), Intervention = c("Pre", "Pre", "Pre", "Pre", 
"Pre", "Pre", "Pre", "Pre", "Pre", "Post", "Post", "Post", "Post", 
"Post", "Post", "Post", "Post", "Post", "Pre", "Pre", "Pre", 
"Pre", "Pre", "Pre", "Pre", "Pre", "Pre", "Post", "Post", "Post", 
"Post", "Post", "Post", "Post", "Post", "Post"), Sex = c("Female", 
"Female", "Female", "Female", "Female", "Female", "Female", "Female", 
"Female", "Female", "Female", "Female", "Female", "Female", "Female", 
"Female", "Female", "Female", "Male", "Male", "Male", "Male", 
"Male", "Male", "Male", "Male", "Male", "Male", "Male", "Male", 
"Male", "Male", "Male", "Male", "Male", "Male"), Binary_outcome = c(1L, 
1L, 1L, 0L, 0L, 0L, 1L, 0L, 1L, 0L, 0L, 0L, 1L, 1L, 1L, 0L, 0L, 
1L, 1L, 0L, 0L, 0L, 1L, 1L, 1L, 1L, 1L, 0L, 1L, 1L, 1L, 0L, 1L, 
1L, 1L, 1L)), class = "data.frame", row.names = c(NA, -36L))

当前使用的代码:这是我目前正在使用的,但我不知道我是否应该根据数据结构以不同的方式指定随机效应(在下面的“正确计算相关性”下概述)。

install.packages("lme4")
library(lme4)

logit_model <- glmer(Binary_outcome ~ factor(Sex)*factor(Intervention) + 
                                (1 | Trial) + 
                                (1 | Subject), 
                     data = data01, 
                     family="binomial")

正确考虑相关性:这就是我的问题所在。 评论/问题:

  • 我相信主题试验随机效应都是交叉的(不是嵌套的),因为主题 1 始终是主题 1,而试验 A 始终是试验 A。如果设计是嵌套的(参见,例如: https://stats.stackexchange.com/questions/228800/crossed-vs-nested-random-effects-how-do-they-differ-and-how-are-they-specified ) .
  • 如上面“正在使用的当前代码”下所示,我已经包含了感兴趣的固定效果( SexInterventionSex ** Intervention*),以及使用 + (1 | Trial + (1 | Trial) + (1 | Subject)
    • + (1 | Trial) + (1 | Subject)是否正确地“告诉” model 来解释人内、试验内的相关性,还是需要以其他方式指定? 尽管我不认为随机效果是嵌套的,但仍然感觉有一个“层次结构”,但也许这已经被+ (1 | Trial) + (1 | Subject)解释了。
    • 这些数据似乎是独一无二的,即使在试验中,每个受试者也有多个测量值 (0s/1s)。 我不确定这对 model 配件的影响。
    • 我是否需要进一步告诉 model 以区分主体内和主体间的固定效应? 或者代码是否使用+ (1 | Trial) + (1 | Subject) “自动”“提取”这个代码? 例如,当您在lme()中使用+ (1 | Subject)或使用+ Error(Subject)aov()指定随机截距时,它会正确执行此操作。 这就是我在这里简单地使用+ (1 | Trial) + (1 | Subject)的原因。
  • 最后,我不知道不是每个受试者都接受每次试验(而是 12 次可能的试验中的 6 次)是否重要,以及这是否会影响代码的某些方面。

我正在寻找您的反馈,最好还有用于确定您的反馈的参考资料(文本、同行评审的论文)。 我有多篇关于逻辑回归、更广泛的分类数据分析和混合模型的文章,但是——据我所知——它们都没有把我在这里提出的想法结合在一起。 因此,了解对这种情况特别有用的资源是否也会有所帮助。

(1|Trial) + (1|Subject)是合理的:它指定了试验之间和受试者之间的变化。 效果确实是交叉的:如果您只想允许您使用的受试者中的试验之间存在差异(1|Subject/Trial) 对于您要使用的试验中受试者之间的差异(1|Trial/Subject) 由于每次试验有多个观察结果:主题组合,您可以使用(1|Trial) + (1|Subject) + (1|Subject:Trial)来允许另一个级别的变化,但我有一个替代建议(见下文) .

我相信这个设计对应的最大 model 是

Binary_outcome ~ Sex*Intervention + cor(Trial | Subject) + (1|Trial)

cor()表示相关矩阵,即我们不试图估计每个受试者在同一试验中重复测量的变化——因为我们没有这些信息。 这里(1|Trial)表示所有受试者共有的试验间的变异,而cor(Trial|Subject)表示受试者内试验间的相关性。 然而,虽然尝试确定最大值是一个有用的练习,但这里并不实用,原因有两个:(1) 跨试验估计完整的相关矩阵需要 (n*(n-1)/2 = 12* 11/2 =) 66 个参数,如果没有庞大的数据集和庞大的计算机,这将是不可能的; (2) R 中很少有可用的混合模型工具提供将随机效应约束到相关矩阵的灵活性( MCMCglmm可以,而其他一些贝叶斯工具,如brms可能; glmmTMB可以相当容易地扩展,并且lme4可能被黑客入侵...)

  • 无需显式编码固定效果的“级别”(内与间)
  • 缺乏平衡和/或缺乏完全交叉会降低给定样本量的能力,但不是问题(这是混合 model 方法的一大优势)
  • 听起来每个受试者的多个观察结果:试验组合是可交换的(即,您可以将它们全部视为来自相同分布的样本,具有相同的预期值等:如果您想考虑顺序受试者内的观察:试验,例如随着时间的推移准确性的趋势)。 在这种情况下,您最好聚合并进行二项式回归——将主题视为“N 次试验中的 m 次成功”而不是“{1,0,1,1,1,0,0,1}”。
  • 对于每个集群的有效样本量较小(即,如果每个主题的总二元观察数量相当少),您需要注意一些技术细节:广泛使用的拉普拉斯近似的准确性(由lme4glmmTMB使用) , INLA , ...) 可能很差。 不幸的是,除了贝叶斯之外,您在这里没有很多选择 - 自适应高斯-厄米正交( lme4GLMMadaptive )很少实现/可用于具有多个随机效应的问题。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM