【问题标题】:Create a ggplot2 stat_ecdf plot with standard error shading使用标准错误着色创建 ggplot2 stat_ecdf 图
【发布时间】:2017-06-09 15:17:45
【问题描述】:

我有来自三个剂量治疗的数据,每个剂量重复三个:

df <- data.frame(dose=c(rep(1,300),rep(3,300),rep(5,300)),
replicate=rep(c(rep("X1",100),rep("X2",100),rep("X3",100)),3),
value=c(rnorm(300,1,1),rnorm(300,3,1),rnorm(300,5,1)),stringsAsFactors=F)

df$dose <- factor(df$dose,levels=c(1,3,5))

我想使用 cdf 图显示它。对于每个重复,我可以简单地绘制三个剂量的 cdfs:

for(r in c("X1","X2","X3")){
 ggplot(dplyr::filter(df,replicate==r),aes(x=value,color=dose))+
   stat_ecdf(geom="step")+ 
   theme_bw()+
   theme(panel.border=element_blank(),strip.background=element_blank())
}

但我正在寻找一种方法来在一个图中显示每个剂量的所有重复,在平均值周围使用标准误差阴影,类似于使用stat_smooth 实现的图。

这可以实现吗?

另外,对于这个或单个重复的图:

r <- "X1"
ggplot(dplyr::filter(df,replicate==r),aes(x=value,color=dose))+
  stat_ecdf(geom="step")+ 
  theme_bw()+
  theme(panel.border=element_blank(),strip.background=element_blank())

有没有办法计算每个 ecdfs 下的面积?

【问题讨论】:

  • 可以得到曲线下的面积;阅读此thread

标签: r ggplot2 standard-error ecdf


【解决方案1】:

您可以使用交互来根据两列对数据(ggplot)进行分组;

ggplot(df,aes(x=value,color = interaction(replicate, dose)
            , group=interaction(replicate, dose)))+
stat_ecdf(geom="step")+ 
theme_bw()+
theme(panel.border=element_blank(),strip.background=element_blank())

这将是你的阴谋;

因为有点模糊:

如果你想有dose 的行,那么你可以在交互中去掉replicate,或者在你的ddplyr::filter 中使用dose 而不是replicate

  ggplot(dplyr::filter(df,dose==1),aes(x=value,color = interaction(replicate, dose)
            , group=interaction(replicate, dose)))+
stat_ecdf(geom="step")+ 
theme_bw()+
theme(panel.border=element_blank(),strip.background=element_blank())

你会得到:

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2022-01-08
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-06-01
    • 1970-01-01
    相关资源
    最近更新 更多