如何在 ggplot2 R 中绘制多因素数据的 95% 置信区间?

问题描述 投票:0回答:1
df <- data.frame (yaxis = rnorm(120,5,1),
                  xaxis = rep(c("A","B","C","D","E", "F"), times = 20),
                  factor = rep(c("1","2","3","4","5", "6"), each = 20))

df$xaxis <- as.factor(df$xaxis)
df$factor <- as.factor(df$factor )

library(lmerTest)
mod <- lmer(yaxis ~  xaxis + (1|factor), df)
mod.fit <- predictInterval(mod, df) 
df.fit <- cbind(df, mod.fit)

ggplot(df.fit, aes(x = xaxis, y  = yaxis, color = xaxis, group = xaxis)) + 
 geom_point() + 
 theme_classic() + 
 geom_errorbar(aes(min = lwr, max = upr), color = "black", width = 0.3)  + 
 geom_point(aes(y = mean(fit), x = xaxis), position = position_dodge(width = 0.25), color = "black",size = 5) 

我想用预测的 95% CI 和均值绘制原始数据。我尝试了上面的方法,但我得到了拟合数据的多个置信区间。我该如何纠正它?

r ggplot2 mixed-models confidence-interval
1个回答
0
投票

您可以使用

summary(mod)$coefficients
从模型中提取固定效应。这允许您获得每个 x 轴值的预测,并使用简单的算术计算该预测的 95% 置信区间。

library(tidyverse)
library(lme4)

mod <- lmer(yaxis ~  xaxis + (1|factor) + 0, df)

summary_df <- summary(mod)$coefficients %>% 
  as_tibble() %>% 
  mutate(xaxis = LETTERS[1:6]) %>%
  rename(yaxis = Estimate) %>%
  mutate(ymin = yaxis - 1.96 * `Std. Error`,
         ymax = yaxis + 1.96 * `Std. Error`)

ggplot(df, aes(x = xaxis, y  = yaxis, color = xaxis, group = xaxis)) + 
  geom_jitter(width = 0.1) +
  geom_errorbar(aes(ymin = ymin, ymax = ymax), data = summary_df,
                width = 0.4, linewidth = 1, alpha = 0.4) +
  geom_point(color = 'black', size = 2, data = summary_df) +
  theme_classic() +
  scale_color_brewer(palette = 'Dark2')

© www.soinside.com 2019 - 2024. All rights reserved.