2016-08-06 1 views
0

Im ищет быстрый способ для сравнения случайных выборок с использованием методы самонастройкиСравнения случайных выборок с использованием самонастройки (для определения минимального размера выборки)

На данный момент мой код принимает размер выборки, то берет 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) 
} 
} 

Trouble это занимает 15 минут, чтобы бежать с набором данных I я использую - есть ли более быстрый способ, который мне не хватает?

ответ

0

Возможно, вы захотите рассмотреть возможность его распараллеливания. Например.

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) 
Смежные вопросы