使用自举比较随机样本(以确定最小样本量)
Comparing random samples using bootstrapping (to determine minimum sample size)
我正在寻找一种使用引导方法比较随机样本的更快方法
目前我的代码采用样本大小,然后采用 100 个不同的随机样本。它记录了每个人的平均值。然后它需要稍大的样本量,并做同样的事情。等等。
这样做的目的是找到准确代表我的人口所需的最小样本量
我目前的代码:
set.seed(124)
mydata <- rnorm(10000, 1, 100)
Summary_Table <- data.frame(0:0)
#generate list of sample sizes
Sample.sizes <- seq(1, length(mydata), by = 100)
#take 100 random samples of each size and record summary stats
for(i in 1:100) {
for(j in 1:length(Sample.sizes)) {
Random.Sample <- mydata[sample(1:length(mydata), Sample.sizes[j], replace=FALSE)]
Summary_Table[j,i] <- mean(Random.Sample) # - median(Random.Sample)) / sd(Random.Sample)
}
}
问题是这需要 15 分钟才能 运行 使用我正在使用的数据集 - 有没有我缺少的更快的方法?
您可能要考虑将其并行化。例如
getSumStat <- function(size) {
mean(mydata[sample(1:length(mydata), size, replace=FALSE)])
}
library(parallel)
cl <- makeCluster(getOption("cl.cores", 3))
clusterExport(cl, varlist=c("getSumStat", "mydata"))
out <- parSapply(cl, Sample.sizes, function(j) replicate(100, getSumStat(j)))
stopCluster(cl)
我正在寻找一种使用引导方法比较随机样本的更快方法
目前我的代码采用样本大小,然后采用 100 个不同的随机样本。它记录了每个人的平均值。然后它需要稍大的样本量,并做同样的事情。等等。
这样做的目的是找到准确代表我的人口所需的最小样本量
我目前的代码:
set.seed(124)
mydata <- rnorm(10000, 1, 100)
Summary_Table <- data.frame(0:0)
#generate list of sample sizes
Sample.sizes <- seq(1, length(mydata), by = 100)
#take 100 random samples of each size and record summary stats
for(i in 1:100) {
for(j in 1:length(Sample.sizes)) {
Random.Sample <- mydata[sample(1:length(mydata), Sample.sizes[j], replace=FALSE)]
Summary_Table[j,i] <- mean(Random.Sample) # - median(Random.Sample)) / sd(Random.Sample)
}
}
问题是这需要 15 分钟才能 运行 使用我正在使用的数据集 - 有没有我缺少的更快的方法?
您可能要考虑将其并行化。例如
getSumStat <- function(size) {
mean(mydata[sample(1:length(mydata), size, replace=FALSE)])
}
library(parallel)
cl <- makeCluster(getOption("cl.cores", 3))
clusterExport(cl, varlist=c("getSumStat", "mydata"))
out <- parSapply(cl, Sample.sizes, function(j) replicate(100, getSumStat(j)))
stopCluster(cl)