【发布时间】:2021-05-18 19:23:34
【问题描述】:
我试图理解为什么rsample::bootstraps 函数显然存储了每个引导样本的整个数据集。我期待该函数只存储一次数据集,以及每个重新采样的引导索引。在下面您可以看到基本结构,每个重采样都会重复该结构:
> set.seed(1)
> test <- rsample::bootstraps(mtcars[, 1:3], times = 2)
> str(test)
bootstraps [2 × 2] (S3: bootstraps/rset/tbl_df/tbl/data.frame)
$ splits:List of 2
..$ :List of 4
.. ..$ data :'data.frame': 32 obs. of 3 variables:
.. .. ..$ mpg : num [1:32] 21 21 22.8 21.4 18.7 18.1 14.3 24.4 22.8 19.2 ...
.. .. ..$ cyl : num [1:32] 6 6 4 6 8 6 8 4 4 6 ...
.. .. ..$ disp: num [1:32] 160 160 108 258 360 ...
.. ..$ in_id : int [1:32] 25 4 7 1 2 29 23 11 14 18 ...
.. ..$ out_id: logi NA
.. ..$ id : tibble [1 × 1] (S3: tbl_df/tbl/data.frame)
.. .. ..$ id: chr "Bootstrap1"
.. ..- attr(*, "class")= chr [1:2] "rsplit" "boot_split"
..$ :List of 4
.. ..$ data :'data.frame': 32 obs. of 3 variables:
.. .. ..$ mpg : num [1:32] 21 21 22.8 21.4 18.7 18.1 14.3 24.4 22.8 19.2 ...
.. .. ..$ cyl : num [1:32] 6 6 4 6 8 6 8 4 4 6 ...
.. .. ..$ disp: num [1:32] 160 160 108 258 360 ...
.. ..$ in_id : int [1:32] 25 12 15 1 20 3 6 10 10 6 ...
.. ..$ out_id: logi NA
.. ..$ id : tibble [1 × 1] (S3: tbl_df/tbl/data.frame)
.. .. ..$ id: chr "Bootstrap2"
.. ..- attr(*, "class")= chr [1:2] "rsplit" "boot_split"
$ id : chr [1:2] "Bootstrap1" "Bootstrap2"
- attr(*, "times")= num 2
- attr(*, "apparent")= logi FALSE
- attr(*, "strata")= logi FALSEbootstraps [1 × 2] (S3:
$data 项目似乎重复进行了额外的重采样,并且变化的重采样索引存储在 in_id 中。明显的代价是对象的大小与数据大小乘以重采样数成正比增长。 object.size(test) 的单个重采样大小为 7800 字节。对于 200 次重采样,它是 1236824 字节。
【问题讨论】:
标签: r tidymodels rsample