使用标准错误着色创建ggplot2 stat_ecdf图

时间:2017-06-09 15:17:46

标签: r ggplot2 standard-error ecdf

我有三剂治疗的数据,每次剂量重复三次:

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())

enter image description here

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

1 个答案:

答案 0 :(得分:0)

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

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())

这将是你的情节; enter image description here

由于有点模糊,如果您只想根据剂量对数据进行分组,那么您可以在交互中删除replicate或使用dose代替replicate你的ddplyr::filter;

  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())

你会得到:

enter image description here