此问题的答案底部(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.ci
从boot.out
获取现有的重复项进行计算,因此运行它似乎不需要花费比boot
更长的时间(通过此示例中为Boot
。