为什么不使用boot.ci并行加速以获得BCa置信区间?

时间:2016-06-15 21:08:16

标签: r parallel-processing statistics-bootstrap

此问题的答案底部(Calculating CIs of fixed effects using confint in R)表明应该看到user时间>并行工作的elapsed时间。尽管在运行parallel = "multicore", ncpus = 4时指定了boot.ci,但我没有看到结果。另外,我在Mac的Activity Monitor中只看到大约30%的CPU负载。这是否意味着我不能与我的4核iMac并行处理?如果没有,有任何关于让它发挥作用的建议吗?

以下是一个例子:

library(car)
library(boot)
set.seed(47)

 y <- rgamma(2000, 2)
 x1 <- 3 * y + rnorm(2000)
 x2 <- y^2 + rnorm(2000)
 x3 <- rnorm(2000)
 MyData <- data.frame(c(y, x1, x2, x3))
 MyModel <- lm(y ~ x1 + x2 + x3, data = MyData)
# Boot doesn't have a parallel option that I know of
 system.time(BootModel <- Boot(MyModel, R = 3000))
#-----------------------
   user  system elapsed 
 10.164   1.086  11.263 
#-----------------------

# calculate CIs for a single coefficient
# boot.ci has a parallel option, but the sys.time results are the same
system.time(ConfBoot <- boot.ci(BootModel, level = c(.90, .95, .99), type = "bca", 
            index = 2, parallel = "multicore", ncpus = 4))
#-----------------------
   user  system elapsed 
 19.698   0.367  20.162 

在相关的说明中,为什么boot.ci需要这么长时间来计算BCa置信区间?我对代码的解读是bca.ciboot.out获取现有的重复项进行计算,因此运行它似乎不需要花费比boot更长的时间(通过此示例中为Boot

0 个答案:

没有答案