如何 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),]
我有一个计数向量,我想用 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),]