3

約 25 の異なるグループのデータがあります。サンプルサイズが異なる場合に各グループの分散がどのように変化するかを確認するために、階層化されたブートストラップを実行しようとしています。たとえば、サンプル サイズが 5 の場合、グループごとに 5 つのリサンプリング ポイントのコレクションを 1000 個生成する必要があります。必要に応じて、グループごとに 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()は、私の状況には合いません。私はそれを少しいじりましたが、役に立ちませんでした。関数の書き方がわからないので、わからないのかもしれません。

4

1 に答える 1