我有大约 25 个不同组的数据。为了了解如果我有不同的样本量,每组的方差会如何变化,我正在尝试进行分层引导。例如,在样本大小为 5 时,它应该为每组生成 1000 个包含 5 个重采样点的集合。我喜欢在每组 5 到 30 个可能的范围内尽可能收集最小的样本量。
我遇到的问题是我必须对每个组进行子集化并在各个组上运行引导,然后将 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()
不适合我的情况。我已经摆弄了一点,但无济于事。我不确定如何编写函数,这也可能是我无法弄清楚的原因。