在同一ggplot上绘制多个模型规格

Beddotcom

我正在使用线性模型,我想使用条件之间均值差异的单点范围图来显示效果对不同规格的鲁棒性。据我所知(下文MWE)。

我有三个重要的虚拟治疗指标,以及五个协变量。

我现在想做的是用五个其他模型的图叠加该图中三种处理的估计,每个模型都包含不同的协变量,然后添加图例/形状/颜色以区分它们。我假设我可以group_by()do()五个单独的模型一起使用,但是置信区间名称被替换了,而且我不确定如何让ggplot读取多个模型(尤其是在tidyverse中,这对我来说是陌生的)。

我无法弄清楚或找不到任何可以解决此类问题的现有线程。能做到吗?感谢您的提示!

具有示例数据的MWE:

treatment1 = rep(seq(0, 1, 1), 300)
treatment2 = sample(seq(from = 0, to = 1, by = 1), size = 300, replace = TRUE)
treatment3 = rep(seq(0, 1, 1), each=300)
response = rnorm(n = 300, mean = 3, sd = 1)
cov1 = rnorm(n = 300, mean = 0, sd = 1)*response
cov2 = rnorm(n = 300, mean = 0, sd = 1)/response
cov3 = rnorm(n = 300, mean = 0, sd = 1)-response
cov4 = rnorm(n = 300, mean = 0, sd = 1)+response
cov5 = rnorm(n = 300, mean = 0, sd = 1)*log(response)
df <- data.frame(treatment1,treatment2,treatment3,
           response,cov1,cov2,cov3,cov4,cov5)

model <- df %>% group_by(treatment1, treatment2,treatment3) %>% 
  do(data.frame(tidy(lm(response ~ treatment1*treatment2*treatment3, data = .),conf.int=T, conf.level = 0.95 )))

facet.labs <- c("T1=0", "T1=1")
names(facet.labs) <- c("0", "1")


model$treatment3 <-factor(model$treatment3, labels = c("T3=1","T3=0"))
model$treatment3 <-factor(model$treatment3, levels = c("T3=1","T3=0"))

ggplot(model, aes(x=estimate, y=treatment2, shape = treatment3)) +
  geom_pointrange(position = position_dodge(width = 1), aes(xmin=conf.low, xmax=conf.high), size=.75) +
  theme(panel.grid.major = element_blank(), 
        panel.grid.minor = element_blank(), 
        panel.background = element_blank(),
        axis.line = element_line(colour = "black"),
        panel.border = element_rect(colour = "black", fill=NA, size=.8)) +
  scale_y_continuous(name ="", breaks = c(.1,1.22), labels=c("T2=0","T2=1")) +
geom_vline(xintercept=0, linetype="dotted") +
  labs(title="") + xlab("")  +
  labs(shape="")+ theme(axis.ticks = element_blank()) +
  theme(axis.text.y = element_text(angle = 90, vjust = 0.5, hjust=1)) +#,col="Treatment 1")+
  guides(fill = guide_legend(override.aes = list(linetype = 0,fill=NA)))+
  facet_wrap(~treatment1, labeller = labeller(treatment1 = facet.labs)) +
  guides(shape = guide_legend(reverse=T))

YBS

也许这符合您的需求。请注意,我只包括3个型号。您可以添加更多。

library(broom)

treatment1 = rep(seq(0, 1, 1), 300)
treatment2 = sample(seq(from = 0, to = 1, by = 1), size = 300, replace = TRUE)
treatment3 = rep(seq(0, 1, 1), each=300)
response = rnorm(n = 300, mean = 3, sd = 1)
cov1 = rnorm(n = 300, mean = 0, sd = 1)*response
cov2 = rnorm(n = 300, mean = 0, sd = 1)/response
cov3 = rnorm(n = 300, mean = 0, sd = 1)-response
cov4 = rnorm(n = 300, mean = 0, sd = 1)+response
cov5 = rnorm(n = 300, mean = 0, sd = 1)*log(response)
df1 <- data.frame(treatment1,treatment2,treatment3,
                 response,cov1,cov2,cov3,cov4,cov5)

facet.labs <- c("T1=0", "T1=1")
names(facet.labs) <- c("0", "1")

model1 <- df1 %>% group_by(treatment1, treatment2,treatment3) %>% 
  do(data.frame(tidy(lm(response ~ treatment1*treatment2*treatment3, data = .),conf.int=T, conf.level = 0.95 )))

#model1$treatment3 <-factor(model1$treatment3, labels= c("T3=1","T3=0"), levels = c("T3=1","T3=0"))

model11 <- data.frame(model1,model=1)

treatment1 = rep(seq(0, 1, 1), 300)
treatment2 = sample(seq(from = 0, to = 1, by = 1), size = 300, replace = TRUE)
treatment3 = rep(seq(0, 1, 1), each=300)
response = rnorm(n = 300, mean = 4, sd = 1)
cov1 = rnorm(n = 300, mean = 0, sd = 1)*response*2
cov2 = rnorm(n = 300, mean = 0, sd = 1)/response
cov3 = rnorm(n = 300, mean = 0, sd = 1)-response
cov4 = rnorm(n = 300, mean = 0, sd = 1)+response
cov5 = rnorm(n = 300, mean = 0, sd = 1)*log2(response)
df2 <- data.frame(treatment1,treatment2,treatment3,
                  response,cov1,cov2,cov3,cov4,cov5)

model2 <- df2 %>% group_by(treatment1, treatment2, treatment3) %>% 
  do(data.frame(tidy(lm(response ~ treatment1*treatment2*treatment3, data = .),conf.int=T, conf.level = 0.95 )))

#model2$treatment3 <-factor(model2$treatment3, labels = c("T3=1","T3=0"), levels = c("T3=1","T3=0"))

model22 <- data.frame(model2,model=2)

cov1 = rnorm(n = 300, mean = 0, sd = 1)*response*0.5
cov5 = rnorm(n = 300, mean = 0, sd = 1)*log10(response)
df3 <- data.frame(treatment1,treatment2,treatment3,
                  response,cov1,cov2,cov3,cov4,cov5)

model3 <- df3 %>% group_by(treatment1, treatment2, treatment3) %>% 
  do(data.frame(tidy(lm(response ~ treatment1*treatment2*treatment3, data = .),conf.int=T, conf.level = 0.95 )))

#model3$treatment3 <-factor(model2$treatment3, labels = c("T3=1","T3=0"), levels = c("T3=1","T3=0"))

model33 <- data.frame(model3,model=3)

model <- rbind(model11,model22,model33)

myshapes <- c(15, 17)
mycolors <- c("blue","orange")
mygroup <- c("T3=1","T3=0")

modelb <- transform(model,trt2_model = paste0("model ",model, " - trt2 ", treatment2))

ggplot(modelb, aes(x=estimate, y=trt2_model, xmin=conf.low, xmax=conf.high, 
                  shape = factor(treatment3), color=factor(treatment3) )) + 
  geom_pointrange(position = position_dodge(width = 1), aes(xmin=conf.low, xmax=conf.high), size=.75) +
  theme(panel.grid.major = element_blank(), 
        panel.grid.minor = element_blank(), 
        panel.background = element_blank(),
        legend.key = element_rect(fill = "white", colour = "white"),
        axis.ticks = element_blank(),
        axis.line = element_line(colour = "black"),
        #axis.text.y = element_text(angle = 90, vjust = 1, hjust=0.5),
        panel.border = element_rect(colour = "blue", fill=NA, size=.8)) +
  #scale_y_continuous(name ="", breaks = c(.1,1.22), labels=c("T2=0","T2=1")) +
  geom_vline(xintercept=0, linetype="dotted", lwd=1, color="red") +
  labs(shape="", x="", y="", title="")+ 
  scale_shape_manual(name = " ",
                     labels = mygroup,
                     values = myshapes) +  ## choice of shapes
  scale_color_manual(name = " ",
                     labels = mygroup,
                     values = mycolors ) +  ## colors of your choice
  
  guides(color='none', fill = guide_legend(override.aes = list(linetype = 0,fill=NA)))+
  facet_wrap(~treatment1, labeller = labeller(treatment1 = facet.labs)) +
  guides(shape = guide_legend(override.aes=list(col=mycolors, lty=0, pt.cex=1.5, reverse=T)) ) +
  theme_bw()

输出

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

在同一ggplot上绘制多个时间序列

来自分类Dev

使用ggplot()在同一图上绘制多个时间序列

来自分类Dev

在同一图形熊猫上绘制多个数据框

来自分类Dev

Django在与同一模型相关的多个字段上注释

来自分类Dev

Rails中同一模型上的多个多态关联

来自分类Dev

同一ActiveForm yii2上的多个模型

来自分类Dev

使用ggplot在一页上绘制多个图

来自分类Dev

具有与同一模型的多个关系的模型上的createRecord给出多个可能的逆关系错误

来自分类Dev

如何在同一张图上绘制来自不同模型的多个学习曲线?

来自分类Dev

是否可以在Coral开发板上并行运行同一模型的多个模型?

来自分类Dev

使用ggplot绘制具有多个预测变量的模型的一个预测变量

来自分类Dev

使用ggplot绘制具有多个预测变量的模型的一个预测变量

来自分类Dev

在同一图ggplot上绘制两个回归方程(或更多)

来自分类Dev

R :: ggplot2在Y的向量上循环以在一页上绘制多个图

来自分类Dev

使用gnuplot在同一页面上绘制多个图;试图避免情节上的文字

来自分类Dev

可以在同一个XYPlot上设置多个绘制吗?

来自分类Dev

在具有多个图形的同一图形上绘制多组数据框

来自分类Dev

我如何使用熊猫从Excel工作表在同一图形上绘制多个数据框?

来自分类Dev

在同一图形上绘制多个图时,图例无法完全打印

来自分类Dev

在python中使用不同的时间索引在同一x轴上绘制多个直方图

来自分类Dev

谷歌图表:在同一个“X”值上绘制多个“Y”值

来自分类Dev

在同一轴上绘制不同的面色

来自分类Dev

Yii2 - 在同一个 activeform 上使用同一个类的多个模型

来自分类常见问题

R ggplot2-在同一图中绘制年份变量一个在另一个上

来自分类Dev

R ggplot2-在同一图中绘制年份变量一个在另一个上

来自分类Dev

Django-同一表单上的多个自定义模型

来自分类Dev

在同一模型上具有多个字段名称的has_many关系

来自分类Dev

如何使用ggplot在一个图形上绘制多个箱形图

来自分类Dev

我可以在Cloudwatch仪表板的同一轴上绘制一个指标的多个统计信息吗?

Related 相关文章

  1. 1

    在同一ggplot上绘制多个时间序列

  2. 2

    使用ggplot()在同一图上绘制多个时间序列

  3. 3

    在同一图形熊猫上绘制多个数据框

  4. 4

    Django在与同一模型相关的多个字段上注释

  5. 5

    Rails中同一模型上的多个多态关联

  6. 6

    同一ActiveForm yii2上的多个模型

  7. 7

    使用ggplot在一页上绘制多个图

  8. 8

    具有与同一模型的多个关系的模型上的createRecord给出多个可能的逆关系错误

  9. 9

    如何在同一张图上绘制来自不同模型的多个学习曲线?

  10. 10

    是否可以在Coral开发板上并行运行同一模型的多个模型?

  11. 11

    使用ggplot绘制具有多个预测变量的模型的一个预测变量

  12. 12

    使用ggplot绘制具有多个预测变量的模型的一个预测变量

  13. 13

    在同一图ggplot上绘制两个回归方程(或更多)

  14. 14

    R :: ggplot2在Y的向量上循环以在一页上绘制多个图

  15. 15

    使用gnuplot在同一页面上绘制多个图;试图避免情节上的文字

  16. 16

    可以在同一个XYPlot上设置多个绘制吗?

  17. 17

    在具有多个图形的同一图形上绘制多组数据框

  18. 18

    我如何使用熊猫从Excel工作表在同一图形上绘制多个数据框?

  19. 19

    在同一图形上绘制多个图时,图例无法完全打印

  20. 20

    在python中使用不同的时间索引在同一x轴上绘制多个直方图

  21. 21

    谷歌图表:在同一个“X”值上绘制多个“Y”值

  22. 22

    在同一轴上绘制不同的面色

  23. 23

    Yii2 - 在同一个 activeform 上使用同一个类的多个模型

  24. 24

    R ggplot2-在同一图中绘制年份变量一个在另一个上

  25. 25

    R ggplot2-在同一图中绘制年份变量一个在另一个上

  26. 26

    Django-同一表单上的多个自定义模型

  27. 27

    在同一模型上具有多个字段名称的has_many关系

  28. 28

    如何使用ggplot在一个图形上绘制多个箱形图

  29. 29

    我可以在Cloudwatch仪表板的同一轴上绘制一个指标的多个统计信息吗?

热门标签

归档