R中的Boxplot比较不同样本大小的95%置信区间的结果

问题描述 投票:0回答:1

我试图通过使用自举来显示伽马分布的样本大小对95%置信区间的界限的影响。现在,我需要在一个箱图中汇总4种不同样本量的结果。 R代码如下:

y <- rgamma(30,1,1) + rnorm(30,0,0.01)
y60 <- rgamma(60,1,1) + rnorm(60,0,0.01)
y100 <- rgamma(100,1,1) + rnorm(100,0,0.01)
y200 <- rgamma(200,1,1) + rnorm(200,0,0.01)
minusL <- function(params, data) {
-sum(log(dgamma(data, params[1], params[2])))
}
fit <- nlm(minusL, c(1,1), data=y)
fit
gammamedian<-function(data) {
fit <- nlm(minusL, c(1,1), data=data)
qgamma(.5, fit$estimate[1], fit$estimate[2])
}
gammamedian(y)
gammamedian(y60)
gammamedian(y100)
gammamedian(y200)
gengamma<- function(data, params){
rgamma(length(data), params[1], params[2])}
library(boot)
pbootresults<-boot(y, gammamedian, R=1000, sim="parametric",            
ran.gen=gengamma, mle=fit$estimate)
pbootresults
boot.ci(pbootresults, type=c("basic", "perc", "norm"))
pbootresults<-boot(y60, gammamedian, R=1000, sim="parametric",  
ran.gen=gengamma, mle=fit$estimate)
pbootresults
boot.ci(pbootresults, type=c("basic", "perc", "norm"))
pbootresults<-boot(y100, gammamedian, R=1000, sim="parametric",     
ran.gen=gengamma, mle=fit$estimate)
pbootresults
boot.ci(pbootresults, type=c("basic", "perc", "norm"))
pbootresults<-boot(y200, gammamedian, R=1000, sim="parametric",  
ran.gen=gengamma, mle=fit$estimate)
pbootresults
boot.ci(pbootresults, type=c("basic", "perc", "norm"))

 [An Excel image example ][1]


 [1]: https://i.stack.imgur.com/JXR6P.jpg
r boxplot confidence-interval gamma-distribution
1个回答
0
投票

你必须将minmax值存储在数据表中,然后使用geom_rect()

我给出了两个案例的简单例子,你可以为其他案例做类似的事情,也可以和aestetics一起玩,以获得更好的观点。

library(boot)
pbootresults<-boot(y, gammamedian, R=1000, sim="parametric",            
                   ran.gen=gengamma, mle=fit$estimate)
pbootresults
temp2 <-boot.ci(pbootresults, type=c("basic", "perc", "norm")) # store teh results
pbootresults<-boot(y60, gammamedian, R=1000, sim="parametric",  
                   ran.gen=gengamma, mle=fit$estimate)
pbootresults
boot.ci(pbootresults, type=c("basic", "perc", "norm"))
pbootresults<-boot(y100, gammamedian, R=1000, sim="parametric",     
                   ran.gen=gengamma, mle=fit$estimate)
pbootresults
 boot.ci(pbootresults, type=c("basic", "perc", "norm"))
pbootresults<-boot(y200, gammamedian, R=1000, sim="parametric",  
                   ran.gen=gengamma, mle=fit$estimate)
pbootresults
temp <- boot.ci(pbootresults, type=c("basic", "perc", "norm")) # store the results

datatable <- temp$percent %>% as.data.table()
datatable <- rbind(datatable, temp2$percent %>% as.data.table())
datatable[, group :=.I]

 ggplot(data = datatable) + geom_rect(mapping =  aes(xmin = group - 0.25, xmax = group+ 0.25, ymin = V4, ymax = V5))

enter image description here

© www.soinside.com 2019 - 2024. All rights reserved.