『Rによる統計的学習入門』解答(5.4 演習問題-理論編)
『Rによる統計的学習入門』の解答例・解答上のポイントを載せます。
解答の目次、他の方の解答は以下の記事にまとめてあります。
intrinsic-motivation.hatenablog.com
5.4 演習問題
理論編
(1)
上記リンク先の参考サイト参照
(2)
(a)
1-(1/n) #1-(最初のデータが元の標本のj番目のデータである確率)
(b)
1-(1/n) #ブートストラップは重複を許すので(a)と同様に考えて良い
(c)
1-(1/n)をn回繰り返すので、(1-(1/n))^n
(d)
n=5 d <- 1-(1-(1/n))^n #含まれる確率 なので1から引く d [1] 0.67232
(e)
n=100 e <- 1-(1-(1/n))^n #含まれる確率 なので1から引く e [1] 0.6339677
(f)
n=10000 f <- 1-(1-(1/n))^n #含まれる確率 なので1から引く f [1] 0.632139
(g)
x <- 1:10000 #1〜10000の値を取る時の整数nをxとおく plot(x, 1-(1-(1/x))^x)
→すぐに確率63%程度に近づいて、あとはほぼ一定
(h)
store=rep(NA, 10000) for(i in 1:10000){ store[i]=sum(sample(1:100, rep=TRUE)==4)>0 #rep:replace 重複アリという事 } mean(store) [1] 0.6336
→4番目のデータがある確率は、(e)で求めた値(63.4%)に近い
(3)
上記リンク先の参考サイト参照
(4)
日本語版では「予測の標準誤差」とありますが、英語版では「the standard deviation」と書かれているので、「予測の標準偏差」と訳すのが自然です。標準偏差であれば母集団からランダムに抽出した標本(例えばn=1000)のばらつきを指しますが、標準誤差であればその標本が複数ある(例えばn=1000×1000群)として、各群の平均値のばらつきを指します。ここではブートストラップ法を使いたいので、「予測の標準誤差」の方を採用して、解答を記します。
方針:p177の式(5.8)について説明するだけ
①ブートストラップ法を用いて、例えばn=1000のブートストラップ標本を用意する。
②①の標本を使って統計的学習法を適用し、モデルを作成する。
③②で作成したモデルに対してある1つのブートストラップ標本を入れて、パラメータの推定値を得る(日本語版p177でいうαハット*r)。
④①〜③を1000回繰り返して、n=1000のブートストラップ標本×1000とそれぞれに対応するパラメータの推定値×1000を得る。
⑤④で得られたパラメータの推定値×1000の平均を算出する。(日本語版p177でいう1/B〜の部分)
⑥④で得られたパラメータの推定値と、⑤で得られた平均値を使って標準偏差を出す…これが予測の標準誤差となる。
※1000個の標本を抽出するプロセスを1000回繰り返して、それぞれの群の平均値のばらつきを求めているので、最終的に算出されるものが標準偏差ではなく標準誤差になるという理解です。