所以我有一个三列数据框,其中包含 Trials、Ind. Variable、Observation。就像是:
df1<- data.frame(Trial=rep(1:10,5), Variable=rep(1:5, each=10), Observation=rnorm(1:50))
我正在尝试绘制 95% 的 conf。使用以下效率相当低的方法对每个试验的平均值进行间隔:
b<-NULL
b$mean<- aggregate(Observation~Variable, data=df1,mean)[,2]
b$sd <- aggregate(Observation~Variable, data=df1,sd)[,2]
b$Variable<- df1$Variable
b$Observation <- df1$Observation
b$ucl <- rep(qnorm(.975, mean=b$mean, sd=b$sd), each=10)
b$lcl <- rep(qnorm(.025, mean=b$mean, sd=b$sd), each=10)
b<- as.data.frame(b)
c <- ggplot(b, aes(Variable, Observation))
c + geom_point(color="red") +
geom_smooth(aes(ymin = lcl, ymax = ucl), data=b, stat="summary", fun.y="mean")
这是低效的,因为它重复了 ymin、ymax 的值。我已经看过 geom_ribbon 方法,但我仍然需要复制。但是,如果我使用任何类型的平滑,例如 glm,代码会简单得多,没有重复。有没有更好的方法来做到这一点?
参考: 1. R 用 ggplot 绘制置信带 2.用 ggplot2 手动着色置信区间 3. http://docs.ggplot2.org/current/geom_smooth.html