R - block 重采样并将样本保存在列表中

标签 r resampling

我有一个向量,我想对其进行 block 重采样,以获得与该向量大小相同的 1000 个样本,然后将所有这些样本保存在列表中。

这是执行正常重采样的代码,即每次随机抽取一个观察值,并将结果保存在列表中:

myvector <- c(1:200)
mylist <- list()
for(i in 1:1000){
  mylist[[i]] <- sample(myvector, length(myvector), replace=TRUE)
}

我需要一个执行完全相同操作的代码,只不过不是绘制单个观测值,而是绘制观测值 block (让我们使用维度等于 5 的 block )。

我知道有一些包可以执行引导操作,但我不需要统计数据或置信区间或任何东西,只需要列表中的所有样本。重叠和非重叠 block 都可以,因此只需两个过程之一的代码就足够了。当然,如果您愿意给我这两个代码,我将不胜感激。感谢任何可以帮助我的人。

最佳答案

不确定您想要如何存储最终结构。

以下内容采用 block 尺寸,按该 block 大小对向量进行采样(例如, block 大小为 5 的 200 个元素向量给出了随机采样元素的 40 个观察值),并将这些 block 添加到最终列表的索引中。使用您的示例,最终结果是一个包含 1000 个条目的列表;每个条目包含 40 个随机抽样的观察结果。

myvector <- c(1:200)

rm(.Random.seed, envir=globalenv())

block_dimension <- 5

res = list()
for(i in 1:1000) {
    name <- paste('sample_', i, sep='')
    rep_num <- length(myvector) / block_dimension
    all_blocks <- replicate(rep_num, sample(myvector, block_dimension))
    tmp <- split(all_blocks, ceiling(seq_along(all_blocks)/block_dimension))
    res[[name]] <- tmp
    }

以下是第一个条目的前 6 个采样观测值:

enter image description here

关于R - block 重采样并将样本保存在列表中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48291253/

相关文章:

python - 每小时对有间隙的时间序列数据重新采样

dataframe - 在 Julia 中将 DataFrame 重新采样为每小时 15 分钟和 5 分钟

r - CRAN 要求用\donttest{} 替换\dontrun{} 后 R 包中的问题

R:巨大(> 20GB)文件的xmlEventParse期间的内存管理

r - 在 R 中,如何测试两个函数是否具有相同的定义?

python - 在 for 循环中附加数据框

pandas - 在时间序列中上采样并插值数据

r - 保留完全或部分在一个更大的多边形内的多边形,没有负缓冲区

r - 将值添加到 R 中 for 循环内的向量

python - Pandas 时间序列重新采样,分箱似乎关闭