[英]Specifying random effects for repeated measures in logistic mixed model in R: lme4::glmer
我正在寻找反馈以确定如何正确指定随机效应以解释重复测量设计中的相关性,但具有多个相关级别(包括每个预测变量组合的纵向数据)。 结果是二进制的,所以我将拟合一个逻辑混合 model。 我打算使用 lme4 package 中的lme4
glmer()
function。 如果您想知道这些数据是如何产生的,一个示例来自眼动仪:人的眼睛被“跟踪”30 秒,例如,在不同级别的预测变量下,确定他们是否在屏幕上查看某个 object (因此是二进制结果)。
研究设计(可以通过在 R 中处理下面“虚拟数据集”下的代码来看到):
虚拟数据集:显示我的数据的一般结构(尽管这不是实际的数据集):
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 | Trial) + (1 | Subject)
。
+ (1 | Trial) + (1 | Subject)
是否正确地“告诉” model 来解释人内、试验内的相关性,还是需要以其他方式指定? 尽管我不认为随机效果是嵌套的,但仍然感觉有一个“层次结构”,但也许这已经被+ (1 | Trial) + (1 | Subject)
解释了。+ (1 | Trial) + (1 | Subject)
“自动”“提取”这个代码? 例如,当您在lme()
中使用+ (1 | Subject)
或使用+ Error(Subject)
为aov()
指定随机截距时,它会正确执行此操作。 这就是我在这里简单地使用+ (1 | Trial) + (1 | Subject)
的原因。我正在寻找您的反馈,最好还有用于确定您的反馈的参考资料(文本、同行评审的论文)。 我有多篇关于逻辑回归、更广泛的分类数据分析和混合模型的文章,但是——据我所知——它们都没有把我在这里提出的想法结合在一起。 因此,了解对这种情况特别有用的资源是否也会有所帮助。
(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
可能被黑客入侵...)
lme4
、 glmmTMB
使用) , INLA
, ...) 可能很差。 不幸的是,除了贝叶斯之外,您在这里没有很多选择 - 自适应高斯-厄米正交( lme4
, GLMMadaptive
)很少实现/可用于具有多个随机效应的问题。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.