How to calculate confidence interval using the “bootstrap function” in R

前端 未结 2 735
时光取名叫无心
时光取名叫无心 2021-01-07 10:57

I am trying to calculate the confidence interval in R. Due to some special reasons, I have to do it with the functions in \"bootstrap\" package.(which means I can\'t use th

2条回答
  •  佛祖请我去吃肉
    2021-01-07 11:18

    You could do this by hand.

    library(bootstrap) 
    data('law')
    names(law) <- tolower(names(law))
    
    set.seed(1)
    theta <- function(ind) cor(law[ind, 1], law[ind, 2], method = "pearson")
    law.boot <- bootstrap(1:15, 1000, theta) 
    
    ci1 <- qnorm(p=c(.025, .975), 
                mean=mean(law.boot$thetastar), 
                sd=sd(law.boot$thetastar))
    

    Gives:

    > ci1
    [1] 0.5055894 1.0268053
    

    Compared to bootstrap from the scratch:

    set.seed(1)
    FX <- function(x) with(x, cor(lsat, gpa))
    boot <- replicate(1000, FX(law[sample(nrow(law), round(nrow(law)), 
                                         replace=TRUE), ]))
    
    ci2 <- qnorm(p=c(.025, .975), 
                mean=mean(boot), 
                sd=sd(boot))
    

    Gives:

    > ci2
    [1] 0.5065656 1.0298412
    

    Thus ci1 and ci2 seem to be similar.

    However, note: I've adapted the bootstrap to 1,000 repetitions. With just 100 repetitions the difference is naturally somewhat larger.

    Note 2: My answer considers CIs as asked. However, probably it's more appropriate to use the percentiles. See the thothal's answer how to obtain them.

提交回复
热议问题