在 ggplot2 中绘制一个 nlme 对象

Plotting an nlme object in ggplot2

我使用 nlme 包计算了一个线性混合模型。我正在评估心理治疗,并使用治疗条件和测量点作为预测指标。我使用 emmans 包进行了 post-hoc 比较。到目前为止一切顺利,我期待着完成我的论文。只剩下一个问题了。我真的很不擅长策划。我想为每组的四个测量点绘制均值。 emmeans 中的 emmip 函数执行此操作,但我对结果不太满意。我使用以下代码生成结果:

emmip(HLM_IPANAT_pos, Gruppe~TP, CIs=TRUE) + theme_bw() + labs(x = "Zeit", y = "IPANAT-PA")

我不喜欢置信区间的呈现方式。我更喜欢带有 "normal" 置信条的线条,如下图所示,取自 Ireland 等人。 (2017)。我尝试在 excel 中这样做,但没有找到如何为每一行整合单独的置信区间。所以我想知道是否有可能使用 ggplot2 来做到这一点。但是,我不知道如何在 ggplot 中整合使用 emmeans 获得的值。正如我所说,我真的不知道密谋。有人知道怎么做吗?

我认为这是可能的。您可以使用 emmeans 获取 ggplot2 的值,而不是使用 emmip 来创建绘图。使用 ggplot2 和数据,您可能能够更好地控制绘图的格式。由于我没有你的数据,我只能建议几个步骤。
首先,在拟合模型 HLM_IPANAT_pos 后,使用 emmeans 获取值。二、broom::tidy这个对象。三、ggplot上面的broom::tidy对象。

mtcars数据为例:

library(emmeans)
# mtcars data
mtcars$cyl = as.factor(mtcars$cyl)
# Model
mymodel <- lm(mpg ~ cyl * am, data = mtcars)

# using ggplot2 
library(tidyverse)
broom::tidy(emmeans(mymodel,  ~ am | cyl)) %>% 
  mutate(cyl_x = as.numeric(as.character(cyl)) + 0.1*am) %>% 
  ggplot(aes(x = cyl_x, y = estimate, color = as.factor(am))) + 
  geom_point() + 
  geom_line() +
  geom_errorbar(aes(ymin = conf.low, ymax = conf.high), width = 0.1)

reprex package (v0.3.0)

于 2019-12-29 创建