2

多くの値のリストを含むファイルからサンプリングしています。例:

312313.34
243444
12334.92
321312
353532

Rを使用して、このリストからランダムにサンプリングします。

list = read.table("data")
out <-sample(list,50,replace=TRUE)
out.mean<-mean(out)
out.mean

誰かがこれをループに入れる方法を教えてもらえますか?そうすれば、この手順を1000回実行して、1000の平均をとることができます。

事前にどうもありがとうございました!

ルバル

4

2 に答える 2

8

別の解決策は次のとおりです(@Tyler Rinkerが言ったことを覚えておいてくださいreplicate

Data <- read.table(text='
312313.34
243444
12334.92
321312
353532', header=FALSE)

Data <- as.numeric(as.matrix((Data))) 

set.seed(007)
Means <- replicate(1000, mean(sample(Data,50,replace=TRUE))) 

平均は、サイズ 50 のサブサンプルごとに 1000 の平均で構成されます。平均の平均が必要な場合は、次のようにします。

mean(Means) 

あなたがやろうとしていることは、ブートストラップまたはバイアス削減のためのリサンプル手法に似たもののように聞こえます(私は推測します)。

于 2012-08-26T12:55:41.123 に答える
5

サンプリングから関数を作成し、それを何度も繰り返しlapplyます(ただしreplicate、これははるかに遅いという経験がありましたが、うまくいく可能性もあります)

listこれは重要な関数であるため、という名前のオブジェクトに書き込まないことをお勧めします。

したがって、次のようになります。

#make a data set that may look like yours
LIST <- rnorm(1000)

#take your code and make a function   
mean.find <- function(dat) {
    out <-sample(dat, 50,replace=TRUE)
    mean(out)
}

#a single use yo check it out 
mean.find(LIST)

#repeat it 1000 times with lapply
reps <- unlist(lapply(seq_len(1000), mean.find))

#take the mean of that
mean(reps)
于 2012-08-26T12:40:59.610 に答える