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

2024-04-13

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

学习规划(可以通过处理下面R中“Dummy dataset”下的代码看到):

  • The outcome (Binary_outcome) is binary.
    • 重复措施:每个受试者的二元响应在每个预测变量组合中被记录多次(有关结构,请参阅下面的“虚拟数据集”)。
  • There are two predictors of interest (both binary, categorical):
    • One 科目间因素,Sex(男/女)。
    • One 科目内因素,干涉(前/后)。
  • Each subject is measured over six trials (under which there are repeated measures), Trial.
    • 注意有12个possible考验一个人could被分配。因此,并不是每个受试者都参与全部 12 项试验,而是随机的 6 项试验。
    • Trial is not感兴趣的变量。人们仅仅认为,对个体内部的观察,在审判中可能会更加相似,因此Trial也应被视为集群相关性的一种形式。

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

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")

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

  • 我相信两者Subject and Trial随机效应是交叉的(不是嵌套的),因为主题 1 始终是主题 1,试验 A 始终是试验 A。如果设计是嵌套的,则无法像您可以的那样重新编号/重新字母(参见,例如:https://stats.stackexchange.com/questions/228800/crossed-vs-nested-random-effects-how-do-they-differ-and-how-are-they-specified https://stats.stackexchange.com/questions/228800/crossed-vs-nested-random-effects-how-do-they-differ-and-how-are-they-specified).
  • As can be seen above under "Current code being used," I have included the fixed effects of interest (Sex, Intervention, and Sex**Intervention*), and random intercepts for Trial and Subject using + (1 | Trial) + (1 | Subject).
    • Does + (1 | Trial) + (1 | Subject)正确地“告诉”模型来解释人体内的相关性,在审判中,或者是否需要以其他方式指定?尽管我不认为随机效应是嵌套的,但仍然感觉存在“层次结构”,但也许这已经被解释为+ (1 | Trial) + (1 | Subject).
    • 这些数据似乎很独特,因为即使在试验中,每个受试者也有多个测量值(0 秒/1 秒)。我不确定这对模型拟合的影响。
    • 我是否需要进一步告诉模型来区分受试者内和受试者间的固定效应?或者代码“自动”“拾取”这个+ (1 | Trial) + (1 | Subject)?当您简单地为主题指定随机截距时,它会正确地执行此操作lme() with + (1 | Subject), or aov() with + Error(Subject), 例如。这就是为什么我简单地使用+ (1 | Trial) + (1 | Subject) here.
  • 最后,我不知道不是每个受试者都进行每次试验(而是 12 次可能的试验中的 6 次)是否重要,以及这是否会影响代码的某些方面。

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


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

我相信与此设计相对应的最大模型是

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

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

  • 无需明确编码固定效应的“水平”(内部与之间)
  • 缺乏平衡和/或缺乏完全交叉会降低给定样本量的功效,但并不是问题(这是混合模型方法的一大优点)
  • 听起来每个受试者的多个观察结果:试验组合是可以交换的(即,您可以将它们全部视为来自相同分布的样本,具有相同的期望值等:如果您想考虑顺序,则例外情况)主题内的观察结果:试验,例如随着时间的推移准确性的趋势)。在这种情况下,您最好进行聚合并进行二项式回归 - 将主题视为“N 次试验中的 m 次成功”而不是“{1,0,1,1,1,0,0,1}”。
  • 对于每个簇的有效样本量较小(即,如果每个主题的二进制观测值总数相当少),您需要注意一些技术细节:广泛使用的拉普拉斯近似(由lme4, glmmTMB, INLA,...)可能很差。不幸的是,除了贝叶斯之外,你没有太多选择 - 自适应高斯-埃尔米特求积(lme4, GLMMadaptive)对于具有多种随机效应的问题很少实现/可用。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

在 R: lme4::glmer 中指定逻辑混合模型中重复测量的随机效应 的相关文章

  • 从数据框中绘制多条平滑线

    我对 R 比较陌生 我正在尝试绘制从 csv 文件加载的数据框 数据由 6 列组成 如下所示 xval col1 col2 col3 col4 col5 第一列 xval 由一系列单调递增的正整数 例如 10 40 60 等 组成 其他列
  • R:如何将字符/数字转为1,NA转为0?

    有没有一种简单的方法可以将列的字符 数字变为 1 将 NA 变为 0 这里有一些示例数据 我想将其应用于 3 4 structure list Item Code c 176L 187L 191L 201L 217L 220L Item x
  • 使用数据帧的 R 中的 EWMA 波动性

    我正在尝试从一系列股票每日收益中获取 EWMA 波动性 这些收益来自一个名为base retorno diario Data IBOV ABEV3 AEDU3 ALLL3 BBAS3 BBDC3 BBDC4 1 2000 01 04 0 0
  • 扩展数据框以使其具有与原始行中两列的范围一样多的行[重复]

    这个问题在这里已经有答案了 我有一个数据框如下 structure list symbol c u n v i a start c 9L 6L 10L 8L 7L end c 14L 15L 12L 13L 11L Names c symb
  • StatET调试工具

    我想我只是很密集 但我似乎无法弄清楚如何在 Eclipse 中的 R 中使用调试工具 StatET 插件 有人有关于这个主题的任何提示或教程吗 StatET 2 00 现在对高级 可视化调试提供实验性支持 需要 Eclipse 3 6 或
  • Python sklearn 多标签分类:用户警告:所有训练示例中都存在标签不是 226

    我正在尝试多标签分类问题 我的数据看起来像这样 DocID Content Tags 1 some text here 70 2 some text here 59 3 some text here 183 4 some text here
  • 如何将参数从 Excel/VBA 传递到 Rstudio 中的脚本

    我正在尝试使用 Rstudio 从 VBA 打开 R 脚本 同时将参数传递给 R 脚本 然后我可以使用 commandArgs 访问该脚本 该问题与此处描述的问题非常相似 WScript Shell 用于运行路径中包含空格且来自 VBA 的
  • 在闪亮的数据表中为每个单元格显示工具提示或弹出窗口?

    有没有什么方法可以为 r闪亮数据表中的每个单元格获取工具提示 有很多方法可以获取悬停行或列 但我找不到一种方法来获取行和列索引并为每个单元格显示不同的悬停工具提示 任何人都可以修改以下代码吗 library shiny library DT
  • 更改绘图区域背景颜色

    我想使用我们公司的颜色在 R 中制作一个图表 这意味着所有图表的背景应为浅蓝色 但绘图区域应为白色 我正在寻找答案 发现绘制一个矩形就可以完成这项工作 几乎 然而 绘图区域现在是白色的 并且图形不再可见 这可能吗 getSymbols SP
  • 如何在R中实现countifs函数(excel)

    我有一个包含 100000 行数据的数据集 我尝试做一些countifExcel 中的操作 但速度慢得惊人 所以我想知道R中是否可以完成这种操作 基本上 我想根据多个条件进行计数 例如 我可以指望职业和性别 row sex occupati
  • R 颜色 - 许多独特的颜色仍然很漂亮

    我很好奇你是否有一些关于 R 中颜色酿造的技巧 对于许多独特的颜色 在某种程度上图形仍然好看 我需要相当数量的独特颜色 至少 24 种 可能需要更多 50 种 用于堆叠区域图 所以不是热图 渐变颜色不起作用 我发现了 viridis 它的调
  • 计算字符串向量中连续数字的函数

    我想创建一个函数 它接受至少 1 个元素的字符串对象并包含数字 2 到 5 并确定是否存在至少 N 长度的连续数字 其中 N 是实际数字值 如果是 则返回字符串 true 否则返回字符串 false 例如 Input 555123 Outp
  • ggplot 的每个方面都有不同的 `geom_hline()`

    这个问题在这里已经有答案了 library tidyverse ggplot mpg aes cty hwy geom point facet grid year fl geom hline yintercept mean mpg hwy
  • 上传到 Shiny 服务器后在 R 中解压文件

    我正在尝试在我们的本地服务器上使用 Shiny 来构建一个应用程序 允许用户上传包含 ESRI shapefile 和关联文件的 zip 文件 Shiny 服务器的 fileInput 可以获取数据 并且当它这样做时 它会将其存储在临时目录
  • 如何在 R 中 fork 进程

    我试图了解 R 多核包实现的分叉系统 包的例子是 p lt fork if inherits p masterProcess cat I m a child Sys getpid n exit I was a child cat I m t
  • 文件错误(文件,“rt”):complete.cases 程序中的“描述”参数无效

    我正在编写一个 R 函数 该函数读取充满文件的目录并报告每个数据文件中完全观察到的案例的数量 该函数返回一个数据框 其中第一列是文件名称 第二列是完整案例数 such as id nobs 1 108 2 345 etc 这是我写的函数 c
  • 聚合函数在数据框中创建不需要的向量

    我在函数中创建数据帧时遇到了一个奇怪的问题 但是 在 data frame 之外使用相同的方法效果很好 这是基本函数 我用它来计算数据集的平均值 标准差和标准误差 aggregateX lt function formula dataset
  • 函数速度测试的奇怪结果

    我编写了一个使用递归来查找最大公因数 分母 的函数 gt gcd function a b if length a length b gt 1 warning Only scalars allowed using first element
  • 使用括号表示 y 轴上的负值 ggplot2

    我想在括号中显示 y 轴负值 而不是用负号 例如 我想显示 2 000 而不是 2 000 我在 R 中使用 ggplot2 我尝试在scale y continuous内部使用 negative parens TRUE 如下所示 但没有成
  • 根据列中的部分字符串匹配选择数据框行

    我想根据列中字符串的部分匹配从数据框中选择行 例如列 x 包含字符串 hsa 使用sqldf if它有一个like语法 我会做类似的事情 select from lt gt where x like hsa 很遗憾 sqldf不支持该语法

随机推荐

  • Powershell:递归替换目录的选择子文件中的字符串

    我在 Windows XP 上使用 Powershell 并尝试编写一个命令来 1 read all bat cfg and config files 2 replace a string it s actually the path th
  • 尝试对变量列表进行所有操作组合

    我有一个值列表 例如 values 1 2 3 4 我想尝试此列表中的所有组合 例如 1 2 1 3 1 4 1 2 1 3 1 4 1 2 3 1 2 4 1 3 4 etc 以最简洁的方式获得所有这些可能的操作组合的最直接的方法是什么
  • Mongodb子文档之间的多对多关系

    TL DR 想象一下第一个 match 阶段给了你几个文档 但你想要refine他们在里面 就像 redact做 但问题是你的子文档有关系 而你想要 where就像他们之间的检查一样 怎样才能做到这一点呢 我无法 unwind 因为它会导致
  • RxJava 中的 n 元笛卡尔积

    现在我持有一个Observable
  • 算术恒等式和 EFLAGS

    因为 x not x 1 意味着 a b a not b 1 那么 sub rax rcx 相当于 mov temp rcx not temp add rax temp add rax 1 其中 temp 是一些被认为是易失性的寄存器 换句
  • 在“UITableView”中选择行时调用新视图

    我目前正在编写我的第一个 iPhone 应用程序 但遇到了问题 我有一个包含 UITableView 的视图 这是我第一次尝试这样做 这是我试图实现的行为 当用户选择其中一行时 我希望调用一个新视图 将用户带到另一个页面 显示参考他们选择的
  • iOS 16 FairPlay 变化

    FairPlay 逻辑有任何变化吗 我的应用程序具有受 FairPlay 保护的视频和音频 它们在 iOS 15 7 之前完美运行 但在 iOS 16 中 makeStreamingContentKeyRequestData is thro
  • 如何通过 JavaScript 文件将所有 JavaScript 文件包含在目录中?

    我有一堆 JavaScript 文件 我想将它们包含在页面中 但我不想继续编写 那么有没有办法包含目录中的所有文件 大小未知 我可以做一些像 getScript js js 获取 js 目录中的所有 JavaScript 文件 我怎样才能使
  • 访问网络驱动器上的文件

    背景 我有一个必须从网络驱动器 Z 上的文件读取的应用程序 这在我的办公室域中工作得很好 但是它在现场 在不同的域中 不起作用 据我所知 域用户和网络驱动器的设置方式相同 但是我无权访问客户域中的用户等 当我无法访问网络驱动器时 我想我需要
  • 如何使用Android 4.4中出现的ImageReader?

    Android 4 4 Kit Kat 推出了图像读取器 http developer android com reference android media ImageReader html用于访问 Surface 中的图像的类 对于实时
  • 如何在 Rails 应用程序的数据库/模型中存储营业时间?

    我正在创建一个 Rails 应用程序 它将存储企业的营业时间和营业时间 最初 我想到简单地使用文本数据类型并使其成为自由格式 Monday to Friday 9am to 5pm Saturday 11am to 4pm Closed S
  • 无法在 urllib.request 中使用 https 代理

    我使用 python 创建了一个脚本urllib request申请https其中的代理 我尝试过如下操作 但遇到了不同类型的问题 如urllib error URLError
  • 如何为独立的 Illuminate IoC 容器创建 Illuminate/Support/Facade/App Facade

    在我的独立 没有 Laravel 项目中 我想使用 Illuminate IoC 容器 我还想通过访问应用程序容器App外观由提供illuminate support成分 我安装了这两个组件 v5 0 28 这是我的 简化的 代码 func
  • 从扩展类调用时,groovy 中的闭包不能使用私有字段

    我有一个 groovy 课程 其中有一个私有字段和一个方法 在该方法中 我调用 http 服务 并在其中传递一个闭包来处理响应 像这样的事情 class WebUiRestRequestSender private String jSess
  • 删除“if”语句的大括号是否有任何例外?

    我是一名计算机科学专业的学生 前段时间我们的教授向我们解释说 在 C 语言中 当只有一个语句时 我们可以删除大括号 例如 if a do b 但我们不能这样做 if a do b do c 因为那会做不止一个声明 但它也告诉我们 删除大括号
  • 在汇编器中导出优化的 strlen?

    以下代码能够确定 DWORD 的一个或多个字节是否设置为 0 mov eax value mov edx 07EFEFEFFh add edx eax xor eax 0FFFFFFFFh xor eax edx and eax 08101
  • numpy 数组上的余数函数 (%) 运行时间远远长于手动余数计算

    在过去的几天里 我一直致力于改进 python 函数的运行时 该函数需要多次使用余数函数 等 我的主要测试用例是超过 80 000 个元素的 numpy 数组 单调递增 迭代次数为 10000 次 尽管我也尝试过各种其他大小 最终我发现余数
  • 如何在python中终止进程之前执行代码?

    这个问题涉及 python 中的多处理 我想在终止进程时执行一些代码 更具体地说 是在终止进程之前执行一些代码 我正在寻找一种解决方案atexit register对于Python程序 我有一个方法工作者 看起来 def 工人 而真实 打印
  • 在自己的目录中安装 WordPress 但永久链接失败

    我在 EC2 上安装了 WordPress 位于 var www html wordpress 我按照 WordPress 指南将 index php 和 htaccess 复制到根目录 即 var www html 并修改了index p
  • 在 R: lme4::glmer 中指定逻辑混合模型中重复测量的随机效应

    我正在寻找反馈 以确定如何正确指定随机效应来解释重复测量设计中的相关性 但具有多个相关性级别 包括纵向数据 对于每个预测变量组合 结果是二元的 所以我将拟合逻辑混合模型 我本来打算使用glmer 函数从lme4包裹 如果您想知道这些数据是如