使用rsample软件包进行引导比使用引导软件包慢得多

时间:2020-03-03 10:39:10

标签: r tidyverse tidymodels

我发现像这样使用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

2 个答案:

答案 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))
)