No.21600 Re: 再標本化 【青木繁伸】 2015/04/14(Tue) 22:06
ブートストラップで解決しなくても,単純に各標本の抽出比率(均等なら均等)で解決のつくことではないでしょうか?
No.21601 Re: 再標本化 【赤岳】 2015/04/15(Wed) 00:29
青木先生,いつもご指導ありがとうございます。
先生の言われる抽出比率とは,
たとえば,
論文A:n=10,平均=20,SD=10
論文B:n=15,平均=25,SD=15
としたとき,
> (10*20+15*25)/(10+15) #平均
[1] 23
> (10*10+15*15)/(10+15) #SD
[1] 13
ということでしょうか。
勉強のため,ブートストラップ法(こういう方法をブートストラップ法というのかよくわかりませんが)でも試してみました。
> poolmean<- numeric(0)
> poolsd<-numeric(0)
> for(i in 1:1000){
+ y1<- rnorm(10,mean=20, sd=10)
+ y2<- rnorm(15, mean=25, sd=15)
+ poolmean[i]<-mean(c(y1, y2))
+ poolsd[i]<-sd(c(y1, y2))
+ }
> mean(poolmean) #平均
[1] 22.97827
> mean(poolsd) #SD
[1] 13.29927
確かに,ほとんど同じ結果ですね。
逆にどのようなケースでブートストラップ法がよく使われるのでしょうか。
ほとんど使い道がないように思えます。
No.21602 Re: 再標本化 【青木繁伸】 2015/04/15(Wed) 11:02
プールされた SD の理論値は 13.22876 になるはずです。
http://aoki2.si.gunma-u.ac.jp/lecture/Univariate/combine.html
なお,poolmean<- numeric(0) ではなく,poolmean<- numeric(1000) のようにすべきですね。
> 逆にどのようなケースでブートストラップ法がよく使われるのでしょうか。
> ほとんど使い道がないように思えます。
これはブートストラップではなくシミュレーションですね。
計算で求められない(計算で求めるのが難しい)ような場合には,シミュレーションに頼るのがお勧め。
確かに,今回の場合も,赤岳さんは SD = 13 という理論値を出したのですが,シミュレーションでは 13.29927 となっており,「ほとんど同じ結果ですね」と納得されたようですが,シミュレーション回数を増やしても,その差は縮まらないことが確認できるでしょう。そうすると,理論値の計算が間違えているのか?と見直すきっかけになったでしょう。
実際,このシミュレーションプログラムを動かすと「SD は 13.3 くらいじゃないの?」という結果が出ます。なぜでしょう...
そういうところが,シミュレーションを行う意義ですね。
No.21603 Re: 再標本化 【赤岳】 2015/04/15(Wed) 19:36
青木先生,図星です。おっしゃるとおりでした。
昨夜,シミュレーション回数を10万回にしてみましたが,SD=13には近づきませんでした。その以降,深く追求しなかったのですが,単純に不偏分散を上記私の計算式のように計算するだけではだめかと思いました。
先生のすぐ上のレスでご紹介いただいたサイトを見て,理解しました。
「ブートストラップではなく,シミュレーション」ということですが,違いがよくわかりません。この点だけご教示いただけませんでしょうか。
No.21604 Re: 再標本化 【青木繁伸】 2015/04/15(Wed) 21:56
ブートストラップは,観察されたデータからサンプリングを繰り返す
シミュレーションでは,理論に基づいてデータを再生産する
No.21605 Re: 再標本化 【赤岳】 2015/04/15(Wed) 22:10
青木先生,
こういうことは,物の本や資料をみても書いていないか,よほど注意深く読まないと初心者にはわかりませんね。私だけかも。
本当にありがとうございました。
● 「統計学関連なんでもあり」の過去ログ--- 047 の目次へジャンプ
● 「統計学関連なんでもあり」の目次へジャンプ
● 直前のページへ戻る