在R上引导-分层样本的重采样

时间:2018-10-26 11:34:45

标签: r statistics sampling resampling

我有一个调查数据集,并希望在R上自举,以便以代表整个总体中各阶层大小的概率选择每个阶层的值。我已经在boot()包上尝试了各种方法,但不确定是否要得到想要的结果。例如,在定义每个分层权重之后使用weights参数时,我相信这只是为我的引导程序创建加权平均值,而不是分层重采样。我不确定我需要哪个sim()选项或strata()选项需要做什么。请帮忙!

sample_mean = function(value,indices){return(mean(value[indices]))}
> results=boot(value,sample_mean,1000,weights = Weight)

1 个答案:

答案 0 :(得分:0)

比方说,为了可重复性,您拥有

my_df <- data.frame(x=1:9, stratum=rep(1:3, each=3))
my_df
#   x stratum
# 1 1       1
# 2 2       1
# 3 3       1
# 4 4       2
# 5 5       2
# 6 6       2
# 7 7       3
# 8 8       3
# 9 9       3

您拥有与阶层wts <- c(4,2,1)相关的权重-注意,这些权重不一定需要加到1。

您可以通过类似的呼叫“手动”引导

N_boot <- 10000
boot_mns <- rep(NA, N_boot)
for(i in 1:N_boot) {
   B <- sample(my_df$x, prob=wts[my_df$stratum])  
                 # or prob=wts[as.numeric(as.factor(my_df$stratum))] as needed
   boot_mns[i] <- mean(B)
}

使用boot软件包可能更好的形式,但这在正在发生的事情中非常明显。