如何 Bootstrap 在 R 中重新采样计数数据

How to Bootstrap Resample Count Data in R

我有一个计数向量,我想用 R 中的替换重新采样:

X350277  128
X193233  301
X514940 3715
X535375  760
X953855   50
X357046  236
X196664  460
X589071  898
X583656  670
X583117 1614

(注意第二列是计数,第一列是计数代表的对象)

通过阅读各种文档,似乎很容易对数据重新采样,其中每行或每列代表一个观察值。但是,当每一行代表多个观察值加在一起时(如 table 计数),我该怎么做?

可以使用加权采样(评论中也提到了user20650):

sample_weights <- dat$count/sum(dat$count)
mysample <- dat[sample(1:nrow(dat),1000,replace=T,prob=sample_weights),]

一种效率较低的方法 - 可能有其用途取决于你想做什么 - 是将你的数据再次转换为 'long':

dat_large <- dat[rep(1:nrow(dat),dat$count),]

#then sampling is easy
mysample <- dat_large[sample(1:nrow(dat_large),1000,replace=T),]