我有大约25个不同组的数据。为了看看如果我有不同的样本量,每个组的方差会如何变化,我正在尝试进行分层自助法。例如,在样本量为5的情况下,它应该为每个组产生1000个包含5个重新抽样点的集合。我希望在可能的范围内收集最小的样本大小,每组为5到30。
我遇到的问题是我必须对每个组进行子集,并在单独的组上运行自助法,然后将R输出复制并粘贴到Excel中。(我对R和编码相当新手)。这需要太长时间。我需要自动化自助法以识别组,并以某种方式将1000组的统计信息保存到数据框中。这有意义吗?
以下是我目前的代码:...
这个方法可行,但是需要大量复制和粘贴。我认为我需要使用for循环按组进行引导抽样,或者想出其他办法。我确实找到了一种方法可以单独进行分层抽样而不进行引导抽样。所以也许我可以想出如何重复执行1000次...
使用
我遇到的问题是我必须对每个组进行子集,并在单独的组上运行自助法,然后将R输出复制并粘贴到Excel中。(我对R和编码相当新手)。这需要太长时间。我需要自动化自助法以识别组,并以某种方式将1000组的统计信息保存到数据框中。这有意义吗?
以下是我目前的代码:...
#sample data
set.seed(1234)
df <- data.frame(g.name = as.factor(sample(c(LETTERS),100, replace = T)),
C.H = as.numeric(sample(c(1:9),100, replace=T)))
#subset data by group... here only a three examples
Agroup=subset(df,C.H=='A')
Bgroup=subset(df,C.H=='B')
Cgroup=subset(df,C.H=='C')
#Bootstrap selecting a sample size of "i", "B" number of times. i.e. I am
selecting sample sizes from 5 to 30, 1000 times each. I then apply var() to
the sample, and take the multiple variances(or the variance of the
variances). C.H is the measurement ranging from 1 to 9.
B=1000
cult.var=(NULL)
for (i in 5:30){
boot.samples=matrix(sample(Agroup$C.H,size=B*i,
replace=TRUE),B,i)
cult.var[i]=var(apply(boot.samples,1,var))
}
print(cult.var)
这个方法可行,但是需要大量复制和粘贴。我认为我需要使用for循环按组进行引导抽样,或者想出其他办法。我确实找到了一种方法可以单独进行分层抽样而不进行引导抽样。所以也许我可以想出如何重复执行1000次...
使用
boot()
函数的示例并不适用于我的情况。我已经尝试过一些调整,但基本没有效果。我不确定如何编写函数,这也可能是我无法解决问题的原因。
function(x)
是什么?我认为这不是对五个样本进行1000次采样。我认为你的所有代码只是针对每个分层采取了1000个样本,这很好,但是我需要对五个样本进行1000次采样,然后对六个样本进行1000次采样,一直到三十个样本。随着样本量的增加,方差的方差(你的sapply()
)应该会降低。 - andemexoax