用 lme4 数据绘制两个连续变量的交互作用

2023-12-01

我正在尝试绘制 R 中两个连续变量之间的交互作用。但是,我的数据是多级的(人们在几天内嵌套),因此在绘制图表时我需要考虑数据的嵌套结构。我使用 lme4 库分析数据以解释嵌套结构,但我很难弄清楚如何绘制它的图表。

## example data
spin = runif(600, 1, 24)
reg = runif(600, 1, 15)
ID = rep(c("1","2","3","4","5", "6", "7", "8", "9", "10"))
day = rep(1:30, each = 10)
testdata <- data.frame(
  spin, reg, ID, day)
testdata$fatigue <- testdata$spin*testdata$reg/10*rnorm(30, mean=3, sd=2)

在这里,我有旋转和调节的自变量、疲劳的因变量以及嵌套在几天内的人员 (ID)。我在下面运行我的模型。

## running my multilevel model with lme4
library(lme4)
m1 <- lmer(fatigue ~ spin * reg + ( 1 | ID), data = testdata, REML = T)
(m1)
confint(m1, test = "Chisq")

假设我在 spin 和 reg 之间有交互。我需要将连续变量放入分类变量中才能绘制它。

因此,我根据连续变量之一创建分类变量。这里我选择旋转。 注意:不确定下面的代码是否完全适合我想要的。可能需要做标准错误?也没有考虑我的嵌套数据结构,但不知道要做什么。

x <- mean(testdata$spin, na.rm = T)
print(x)
y <- sd(testdata$spin, na.rm = T)
print(y)

testdata$SpinLevel[testdata$spin > x+y] <- "High"
testdata$SpinLevel[testdata$spin > x-y & testdata$spin <= x+y] <- "Mean"
testdata$SpinLevel[testdata$spin <= x-y] <- "Low"

rm(x,y)

根据我在网上找到的内容,我可以创建一个基本图来显示效果。但没有考虑嵌套结构(人——变量 ID——在几天内嵌套)。

library(ggplot2)
ggplot(testdata,aes(reg,fatigue,linetype=SpinLevel))+
  geom_smooth(method="lm",se=FALSE)

这个 ggplot 非常适合解释基本效果,但线条可能会倾斜,因为它们没有考虑我的数据的嵌套结构(几天之内的人)。

我还可以使用效果库绘制我的模型。这确实考虑了嵌套结构。除了图表不漂亮并且是四分位数之外,而且很难解释。我希望它是高、中、低并且都在同一张图表上。但我不知道该怎么做。

library(effects)
plot(effect("spin*reg", m1), grid=TRUE, labels = T,
  xlevels=list(spin=quantile(testdata$spin, seq(0, 1, 0.25))))

有任何想法吗?将不胜感激。


数据设置:

set.seed(101)
spin = runif(600, 1, 24)
reg = runif(600, 1, 15)
ID = rep(c("1","2","3","4","5", "6", "7", "8", "9", "10"))
day = rep(1:30, each = 10)
testdata <- data.frame(spin, reg, ID, day)
testdata$fatigue <- testdata$spin*testdata$reg/10*rnorm(30, mean=3, sd=2)

Is ID really nested within day?从技术上讲,这表明个体 1 (ID=1)在第 1 天测量代表不同的那个人ID=1第 2 天测量...?

library(lme4)
m1 <- lmer(fatigue ~ spin * reg + ( 1 | ID),
           data = testdata, REML = TRUE)
confint(m1, method = "Wald", parm="beta_")
## instead of test="Chisq", which doesn't work
##                    2.5 %    97.5 %
## (Intercept) -13.44726318 7.4959080
## spin         -0.04751327 1.2328254
## reg          -0.86763792 1.1550787
## spin:reg      0.11263238 0.2541709

为什么不是day在模型中...?

设置预测数据:

## midpoints of bin
 spinvals <- quantile(testdata$spin,seq(0,1,length=5))[2:4]
 pframe <- with(testdata,
           expand.grid(ID=unique(ID),
                       reg=seq(min(reg),max(reg),length.out=51),
                       spin=spinvals))
 pframe$fatigue <- predict(m1,newdata=pframe)
 pframe$spinFac <- factor(pframe$spin,levels=spinvals)
 ## explicit factor() to prevent alphabetization of levels

 library(ggplot2); theme_set(theme_bw())
 g0 <- ggplot(pframe,aes(reg,fatigue,colour=spinFac))+
     geom_line(aes(group=interaction(spinFac,ID)))

 ## bins for cutting testdata into 3 levels (min, 0.33,0.66, max)
 ## label bins by midpoints
 spincuts <- quantile(testdata$spin,seq(0,1,length=4))
 testdata$spinFac <- cut(testdata$spin,
            spincuts,labels=spinvals)

我不太清楚为什么这会翻转因子水平......

 g0 + geom_point(data=testdata)

这是从中提取所需数据的初步尝试effects目的:

library(effects)
ee <- effect("spin*reg", m1,
   xlevels=list(spin=spinvals))
eedat <- with(ee,data.frame(x,fatigue=fit,lwr=lower,upr=upper))
ggplot(eedat,aes(x=reg,y=fatigue,colour=factor(spin)))+
    geom_line()+
    geom_ribbon(aes(group=spin,ymin=lwr,ymax=upr),colour=NA,
                            alpha=0.4)
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

用 lme4 数据绘制两个连续变量的交互作用 的相关文章

  • 获取函数的命名空间

    我正在开发一个包 我希望在其中向对象添加编辑历史记录 该包允许其他包注册用于编辑对象的函数 我正在寻找一种方法来记录注册用于编辑的函数的包的版本 问题是 给定一个函数 如何从导出的位置获取包 我的想法是调查它的搜索路径 但是search 仅
  • 从日期变量创建月末日期

    我有一个包含日期变量的大型数据框 它反映了该月的第一天 有没有一种简单的方法来创建代表该月最后一天的新数据框日期变量 以下是一些示例数据 date start month seq as Date 2012 01 01 length 4 by
  • rpart“as.character(x) 中的错误:无法强制类型 'builtin' 为类型 'character' 的向量”消息是什么意思?

    我一直在用头撞rpart几天了 尝试为我拥有的这个数据集制作分类树 我认为现在是时候询问生命线了 我确信这是我没有看到的愚蠢的事情 但这里是我一直在做什么 EuropeWater lt read csv file paste Users a
  • 如何对数字进行四舍五入并使其显示零?

    R 中将数字四舍五入到小数点后 2 位的常用代码是 gt a 14 1234 gt round a digits 2 gt a gt 14 12 但是 如果该数字的前两位小数位为零 则 R 会在显示中抑制零 gt a 14 0034 gt
  • 将 ftransform 与折叠 R 包中的 fgroup_by 一起使用

    我正在尝试重现以下输出dplyr代码与R包裹collapse dplyr Code library tidyverse starwars gt select name mass species gt group by species gt
  • 尝试使用 JRI 将 R 与我的 Java 应用程序集成,但出现错误。谁能解释一下原因和解决办法吗?

    我需要将 Java 与 R 集成来运行一些数学命令并使用 R 的功能进行绘图 以下部分代码给出了错误 public static void main String args HelloRWorld r new HelloRWorld r h
  • 使用officer R导出时如何提高ggplots的分辨率

    我想将图表导出到 PPT 并使用Officer 包来实现相同的目的 但是 图表的默认分辨率较低 我想更改它 我目前正在使用以下电话 ph with gg p1 type chart res 1200 其中 p1 是 ggplot 对象 运行
  • R 中两个时间戳之间的左连接

    我的目标是执行左连接intervals哪里的bike id比赛和created at时间戳在records在 之间start and end in the intervals table gt class records 1 data ta
  • R 闪亮仪表板中的动态重复条件面板

    我正在尝试创建一个动态条件面板 所以我的条件如下 在用户界面中输入 selectInput inpt Input Number seq 1 50 1 selectize FALSE 我的条件面板 UI 输入是 conditionalPane
  • 如何在 data.table 中分组后使用条件计算行数

    我有以下数据框 dat lt read csv s1 s2 v1 v2 a b 10 20 a b 22 NA a b 13 33 c d 3 NA c d 4 5 NA c d 10 20 dat gt A tibble 6 x 4 gt
  • 将列表中的每个元素转换为数据框中的一列

    假设我有以下列表 d library combinat d permn c a b c 这看起来如下 1 1 a b c 2 1 a c b 3 1 c a b 4 1 c b a 5 1 b c a 6 1 b a c 是否可以将此列表的
  • 多个动态滤镜更新闪亮

    我希望能够让 UI 输入闪亮 并根据用户之前的选择进行自我更新 因此 在下面的示例中 预期的行为是用户选择cyl vsor carb那么这将 过滤数据集mtcars用于创建绘图 即用户根据过滤条件调整绘图并 更新其他过滤器中的剩余输入选择
  • 为什么 sapply 的缩放速度比样本大小的 for 循环慢?

    假设我想采用向量 X 2 1 N 并将 e 计算为每个元 素的指数 是的 我认识到最好的方法就是通过向量化 exp X 但这样做的目的是将 for 循环与 sapply 进行比较 我通过逐步尝试三种方法 一种使用 for 循环 两种以不同方
  • sapply - 保留列名称

    我试图总结数据集中许多不同列 变量 的平均值 标准差等 我已经编写了自己的汇总函数 以准确返回我需要和正在使用的内容sapply立即将此函数应用于所有变量 它工作正常 但是返回的数据帧没有列名 我似乎甚至无法使用列号引用重命名它们 也就是说
  • 在 RcppArmadillo 中将列向量乘以数值标量

    我在编译这个简单的程序时遇到一些麻烦c 代码使用Rcpp和RcppArmadillo包裹 采用以下简单示例 将矩阵的每一列乘以数值标量 code lt arma mat out Rcpp as
  • 从 data.frame 在 ggplot 图例中添加信息

    我想在图例中添加信息 哪个传感器具有该值 这是我的代码 z lt data frame a c sensor 1 sensor 2 sensor 3 sensor 4 sensor 5 sensor 6 sensor 7 sensor 8
  • 如何声明包含 M 个元素的列表对象

    我想声明一个包含 M 3 x 3 矩阵的列表 如果我事先知道数字 M 那么我可以通过以下方式声明这样的列表 elm lt matrix NA 3 3 Say M 7 myList lt list elm elm elm elm elm el
  • 在包加载之前如何知道 R 中特定函数属于哪个包?

    例如 我知道许多流行的功能 例如tbl df 我通常不记得它属于哪个包 即data table or dplyr 所以我必须始终记住并加载一个包 但我做不到 tbl df除非我加载了正确的包 在 R 控制台本身加载或安装包之前 有没有办法知
  • 在ggplot中设置y轴中断

    我在代码中设置中断时遇到困难 我尝试添加breaks seq 0 100 by 20 但似乎无法让它正常工作 本质上我希望 Y 轴从 0 到 100 每 20 个刻度一次 YearlyCI lt read table header T te
  • dplyr:连接中的 NSE (by)

    我很难弄清楚如何使用 dplyr left join 和 NSE 连接两个表 问题是我无法为 by 提供正确的值 我想我现在已经找到了解决方案 但感觉我正在以一种额外复杂的方式来做 因此 如果您知道更简单 更优雅的解决方案 请告诉我 这就是

随机推荐

  • Facebook-connect 提供重定向循环

    拜托 我需要帮助 我处理这个问题1个月了 我想使用 PHP 和 php sdk 3 1 1 实现 facebook 连接登录到我的网站 简而言之 我的代码可以离线工作 在本地主机上 但不能在线工作 这会导致 重定向循环太多 在 Chrome
  • 如何很好地处理[:-0]切片?

    在实现自相关函数时 我有一个像这样的术语 for k in range start N c k np sum f k f k N k 现在一切正常如果start 1但我想很好地处理开始0没有条件的情况 显然它不起作用 因为f 0 f 0 并
  • Linux 内核中哪里可以找到 TCP 数据(HTTP 下)?

    我正在尝试使用Linux内核中的TCP从HTTP流中读取数据 我能够从中获取大部分数据skb buff here 但是 如果服务器在没有请求的情况下将数据推送到客户端 则数据不会复制到用户空间 这样我就找不到它了 使用 Wireshark
  • 自定义订单排序

    您好 我想根据值 关键 高 中 低 对整个 C 列进行排序 我正在启用宏的工作表上运行此代码 这是我的代码 Sub run Range C C Sort Key1 Range C1 SortOn xlSortOnValues Order x
  • 如何在SSIS控制流任务中创建临时表,然后在数据流任务中使用它?

    我有一个控制流 我在其中使用 T SQL 命令创建临时数据库和表 当我添加数据流时 我想查询该表 但我不能 因为该表不存在可从中获取信息 当我尝试时 我收到有关登录的错误 因为数据库尚不存在 我有延迟验证为真 如果我手动创建数据库和表 然后
  • 使用mysqli_stmt_bind_result时在哪一行检查取数据是否成功?

    我需要向网站访问者表明 如果他对我的数据库进行查询在技术上失败 就会出现问题 想要让 php 代码回显 抱歉 出了问题 如果由于某种原因数据获取失败 以下是我试图实现这一目标的一些方法 3 个样品 它们会导致无休止的循环 从而使我的浏览器崩
  • 使用 Windows.Web.Http.HttpClient 类修补异步请求

    我需要做一个PATCH请求与Windows Web Http HttpClient类 并且没有关于如何执行此操作的官方文档 我怎样才能做到这一点 我找到了如何进行 定制 PATCH与上一个请求System Net Http HttpClie
  • 如何在更改属性后在设计时刷新 winform 自定义控件

    假设我创建了一个嵌入轨迹栏的自定义控件 我还为自定义控件创建了方向属性 当我将自定义控件放在窗体上时 默认情况下它将是水平的 然后我将其设置为垂直 轨迹栏应在设计时刷新为垂直 怎么办呢 我想你应该打电话Refresh 更改值后 public
  • Django cors 标头和服务器错误

    我正在尝试使用 django cors headers 将 COR 添加到我的服务器 但是当我加载页面时 我在服务器上收到此错误 ImproperlyConfigured Error importing module corsheaders
  • jqGrid 没有数据 - 如何设置更突出的“无数据”消息?

    默认情况下 当没有数据时 jqGrid显示消息 No records to view 在寻呼机内 我的网格使用顶部寻呼机 问题是 该消息很容易被错过 我想让网格在顶部标题下方显示消息 如果有任何数据 则在行显示的同一位置 在里面体层 如定义
  • 如何在heroku上为django应用程序安装ffmpeg?

    我想使用 ffmpeg 从视频中提取帧以将其用作海报 这是我第一次部署应用程序 更不用说在heroku上 所以我不知道如何在服务器上安装ffmpeg 我发现了这个 ffmpeg 版本并附有将其 供应商 到我的应用程序中的说明 然后调整我的应
  • Node.js 从网络获取图像并使用 Base64 进行编码

    我正在尝试从网络获取图像并使用 base64 对其进行编码 到目前为止我所拥有的是这样的 var request require request var BufferList require bufferlist BufferList bl
  • java arraylist 对所有元素求和

    如果我有 ArrayList
  • 属性“Id”是对象关键信息的一部分,无法修改

    我正在使用 Entity Framework 4 0 并且有一个我无法弄清楚的愚蠢问题 我有两张桌子 Contact Id 主键 Value ContactTypeId ContactType 的外键 联系人类型 ID 主键 类型 家庭 手
  • 如何使用 apps-script 覆盖内容超过 10MB 的文件?

    我有一个驱动器文件夹 其中有一些 g sheet 文件 每个文件都大于 100MB 我想用最新文件的内容覆盖最旧文件的内容 然后删除除最旧的文件之外的所有文件 我有两个问题 文件 代码 中出现异常 我的内容可能大于 10MB 难道是死路一条
  • Yii2 框架 facebook 和 google 使用 authclient 登录不起作用

    我已按照此处的说明进行操作http www yiiframework com doc 2 0 yii authclient authaction html 它对我不起作用 我正在使用 yii2 authclient 进行社交网站 faceb
  • 在电子表格的应用程序脚本中选择连续范围

    是否可以获取特定单元格周围的范围 类似于电子表格中的 Ctrl A 我有许多电子表格 其中的表格是由QUERY 功能 因此边界是灵活的 过去 我采用设置命名范围的方法 这些命名范围的大小是我预期的 QUERY 结果所需的最大大小 并将这些命
  • 如何在VS2008中针对3.5的项目中引用framework 4.0 dll

    我有一个使用 4 0 框架在 VS2010 中创建的 dll 是的 它是完整的 4 0 而不是客户端配置文件 我想在 VS2008 项目中引用它 这意味着即使我愿意 我也无法将引用项目重新定位到 4 0 并且无法将该项目升级到 VS2010
  • 编译,对于android 6.0,adb为“device-on-target”

    由于某种原因 在 android 6 0 上 device on target 的 adb 构建已从 Android mk 中删除 实际上 这非常有用 您可以看到 6 0 mk 和 5 0 mk 之间的差异 6 0 米克 https git
  • 用 lme4 数据绘制两个连续变量的交互作用

    我正在尝试绘制 R 中两个连续变量之间的交互作用 但是 我的数据是多级的 人们在几天内嵌套 因此在绘制图表时我需要考虑数据的嵌套结构 我使用 lme4 库分析数据以解释嵌套结构 但我很难弄清楚如何绘制它的图表 example data sp