我发现像这样使用boot
包
library(boot)
calculate_mean_1 <- function(.data, i){
mean(.data$mpg[i])
}
system.time(
samples_1 <- boot(mtcars, statistic = calculate_mean_1, R=10000)$t
)
与使用rsample
软件包相比,我创建引导程序样本的速度快10倍以上:
library(tidyverse)
library(rsample)
calculate_mean_2 <- function(.data) {
mean(analysis(.data)$mpg)
}
system.time(
samples_2 <- bootstraps(mtcars, times = 10000) %>%
mutate(m = map_dbl(splits, calculate_mean_2))
)
我想知道我是否在正确使用rsample
。
答案 0 :(得分:2)
看来您做得对。我假设不同之处在于rsample
使用列表而不是标准向量。 rsample
的优点是您可以在同一运行中计算多个统计信息,因此,这样做可能会花费一些时间(并使代码更易于阅读)。
答案 1 :(得分:0)
要缩小性能差距,请考虑从数据帧的子集中绘制引导样本。
system.time(
samples_3 <- bootstraps(mtcars %>% dplyr::select(mpg), times = 10000) %>%
mutate(m = map_dbl(splits, calculate_mean_2))
)