是否有一种方法可以覆盖调用geom_boxplot(notch=T)
时使用的默认中值陷波间隔?由于我的模型不符合中央限制要求,特别是不符合独立性和i.i.d假设,因此我想插入无要求的自举CI(BCa)。因此,我预先计算了中位数的BCa(我的集合也偏斜了),并使用它代替了使用geom_boxplot(notch=T)
时生成的95%CI。
有办法吗?
答案 0 :(得分:1)
我认为一种解决方法是将stat_summary
与geom="boxplot"
一起使用。唯一的事情是您需要在函数内部重新定义BCa:
newbox = function(values){
#usual quantile values
df = data.frame(t(boxplot(values,plot=FALSE)$stats))
colnames(df) = c("ymin","lower","middle","upper","ymax")
# bootstrap and get lower+upper notch
BOOT=boot(values,statistic=function(x,inds)median(x[inds]),R=1000)
CI=boot.ci(BOOT,type="bca")
df$notchlower = CI$bca[4]
df$notchupper = CI$bca[5]
df
}
还有一个定义异常值的函数:
newOutlier = function(values){
boxplot(values,plot=FALSE)$out
}
现在我们模拟一些数据并绘制:
library(ggplot2)
library(gridExtra)
library(boot)
set.seed(111)
da = data.frame(x=rep(letters[1:2],each=300),
y=rgamma(600,shape=2,scale=10))
g1 = ggplot(da, aes(x, y)) +
stat_summary(fun.data = newbox, geom = "boxplot",notch=TRUE) +
stat_summary(fun.y = newOutlier, geom = "point")
g2 = ggplot(da, aes(x, y)) +
geom_boxplot(notch=TRUE)
grid.arrange(g1,g2,ncol=2)