Upload
daisuke-yoneoka
View
1.717
Download
5
Embed Size (px)
Citation preview
統計学勉強会
第5回
@kingqwert
Bootstrap編
資料は学内資料向けなのでちょっと数式多いですが端折っていきま
す。
複雑な問題
• 統計量の正確な標本分布の導出は困難
• 漸近理論の発展– 最尤法
• 一致性、漸近正規性• 漸近分散:Fisher情報量の逆数
• 統計量の関数の分布に関してはデルタ法
• 以下の様な統計量においては結構難しい– トリム平均、Median → 分位点に関する理論の発展が必
要
Bootstrap法(ブーツの紐法)
• 1979年 スタンフォード大のBradley Efronにより開発
• 「ほら吹き男爵」の「ブーツの紐を引っ張って湖の底から脱出する」という話
• 教科書
Bootstrap法概説
• リサンプリングすることで母集団の分布を経験分布で代用。ノンパラメトリックなモンテカルロ法の一種
• リサンプリング法では観測された標本を有限母集団として扱う
• 標本=擬似母集団からの無作為標本
抽出方法
• 復元抽出 sampling with replacement– 同じ要素の抽出を許す– Rコード: sample()関数
• Ex. sample(data, 100, replace =True)
• 非復元抽出 sampling without replacement– 同じ要素の抽出を許さない– Rコード: sample()関数
• Ex. sample(data, 100, replace =False)
経験分布Empirical distribution
• データそのものから導かれる分布のこと– イメージ的には、ヒストグラム– N個の標本(y1,y2,,,,,yn)の各点に関して1/nの確率を割り当てる離
散型確率分布
• 未知の母集団分布F(y)– 経験分布関数 はF(y)に分布収束する。
差込原理
• Plug-in estimator
• を利用してパラメーターを推定する方法– Bootstrap法はこの原理に基づいて計算される。
• Ex. 平均
ごちゃごちゃしたこたぁいいんだよ!
men.h <- c(26.6,37.2,37.9,36.6,35.6,37.1,40.1,37.4,37.8,36.6)
mean.boot <- numeric(2000)
set.seed(314)
for (b in 1:2000){
i <- sample(1:10, replace=TRUE) # 1から10までの整数を10回無作為に抽出
men.boot <- men.h[i] # b回目のブートストラップ標本
mean.boot[b] <- mean(men.boot) # b回目のブートストラップ標本平均
}
hist(mean.boot, freq=F, xlab="bootstrap mean", main="") # 平均のヒストグラム
# 両側95%信頼区間
sort(mean.boot)[c(0.025*2000,0.975*2000)]
ブートストラップ誤差
• 統計的誤差– 差込原理より として近似したことからくる誤差– どうしようもないから諦めよう!(提案)– でも、nは大きくしようね!
• モンテカルロ誤差– シミュレーションに基づく誤差– 何回反復させるかに依存しているので、十分回数やろう!– で、結局何回くらいが適当なの?
• nが大きい場合、反復回数を増やす• 中央値のような標本の滑らかなでない関数の場合反復回数を増やす
– Efron and Tibshirani(1993) によると、分散や標準誤差のブートストラップ推定の場合は25-300回程度十分らしい!
Jackknife法
• もう一つのリサンプリング法– 重複を許さないリサンプリング法– 狭義にはこんなかんじで1つだけサンプルを抜いてリサンプリン
グ
– イメージ的にはCross validationによく似ている。
• どうでもいいけど、語源は「キャンプ場ですげー便利」
• 利点– Bootstrapよりちょっと早い
• 欠点– 統計量が平滑でない値の場合、失敗する場合がある。(ex.
Median)– 平滑性=データの変化がどれくらい統計量を変化させるか
Jackknifeの失敗x<-sample(1:100, size=10)
#標準誤差のジャックナイフ推定量
M<-numeric(10)
for (i in 1:10){
y<-x[-i]
M[i]<-median(y)
}
Mbar<-mean(y)
print(sqrt((10-1)/10*sum((M-Mbar)^2)))
[1] 38.54363
#標準誤差のブートストラップ推定量
Mb<-replicate(1000, expr={
y<-sample(x, size=10, replace=T)
median(y)}
)
print(sd(Mb))
[1] 11.94611
Jackknifeのmedianの標準誤差とBootstrapのmedianの標準誤差が大きく違う
何かおかしい!
Jackknifeが推定誤差を起こす!
Bootstrap信頼区間
• 標準正規Bootstrap CI
• 基本Bootstrap CI
• Percentile Bootstrap CI
• Bootstrap T CI
• BCa法 (Bias corrected and accelerated method)
– 性能や特性など詳しくは、A.C. Davison et al(1997)
Bootstrap T CI
• 基本Bootstrap CIの場合、 としているので、分布のずれがある場合うまく行かない!– 一次の正確度しかないから
• 一次の正確度:• Cは被覆誤差• C→0 (n→∞)がであってほしい
• それじゃ、二次のモーメント(分散)まで考えてみればいいじゃない!”t型”統計量の標本分布をリサンプリングで作成
• 信頼区間
– は、 のα/2番目に小さい値
上側信頼限界
Bootstrap T CI
• 信頼区間
– は、 のα/2番目に小さい値
• 長所– 二次の正確性を持つ:
• 短所– σの推定が不可欠→ブートストラップ標本ごとにσを計算し
なけれならないので、計算負荷が大きい(つまり、ブートストラップのなかにブートストラップの入れ子構造)
Percentile CI
• みんな考えつく方法
• の分布で近似して、α/2番目に大きい値と(1-α)/2番目に大きい値を信頼区間とする
• 信頼区間
• 欠点:一次の正確度しか持ってないけどね!
Percentile法の正確度
• Percentile CIの方が標準正規CIより良い被覆率
• 変換後に左右対称となる の単調増加関数 が存在するか否かに正確度が依存する。– 多くの場合、そんな なんて存在しないよ!
• Efron and Tibshirani;1993• 汪、桜井;2011
• ちょっと改善しましょ!→ BCa法
BCa法
• Percentile法を改善したもの
• 分位点における、偏りに対する補正 & 歪度(加速度)に対する補正
• 変換後に以下を満たす単調増加関数 の存在を仮定– b: 偏り修正定数– a: 歪度(加速度)補正定数
• これで、分位点を補正!
BCa法
• 偏り補正定数= のMedianの偏りを補正
• 歪度(加速度)の補正定数
– ちなみに、加速度=目標母数 に関して、 の標準誤差の変化率を推定する意味
• 二次の正確度を持つ!=被覆誤差が で0に。
で、CI求めるのってどれがいいの& 何回反復すりゃいいの?
• うーん。Bootstrap-TかBCaかな? Byung-Jin Ahn et al; 2009
• CIの計算には分散の計算時よりも大きい反復回数が必要– 90-95% CIの場合は反復回数1000-2000回は必要だよ!
• Efron and Tibshirani;1993
モデル構築&評価基準編
Stepwise法の準備
• まぁちょっと古い感じ
• まずは回帰分析におけるF検定
– こんな仮説を検定する
– H0の残差をu、H1の残差をvとする。
Stepwise法2
1. 初期モデルで回帰式を計算。(普通は、切片だけがスタート)
2. 現在のモデルに含まれていない変数の中から、一つ変数を追加した場合に、追加後のその変数のF値(またはP値)が最大となる変数を探す。
3. 設定した閾値をF値が超えると終了1. F値の代わりにP値を使用することも可能
2. Rだと簡単で、step()関数に入れるだけ
誤り率
• 超簡単
• 要は対角線部分
1 2 3
1
2
3
予測値
実測値
誤り率のクソさ
• サンプルの偏りに全く反応できないというクソっぷり
• 具体的には– 患者の1%しかかからない病気に対して
– 全員陽性である!と主張しても
– 正答率99%!
• これアレだね。なんか他の考えよう。
Cross validation (交差検証法)
• 全体を K 等分し、 (k-hold)
– そのうち K-1 個を訓練用に
– 1個を評価用に使う
を K 回繰り返し、その平均的な性能を測る
• 、性能を測る指標として、具体的いか
– 教師無し学習
• (テスト)対数尤度
– 教師付き学習
• 正解率、AUC
情報量基準
• Kullback–Leibler divergence(カルバック・ライブラー情報量)– 相対エントロピー、カルバックライブラー擬距離とも呼ばれる
– 感覚的には、離散モデルだと、まず点z_iでのg(z_i)とf(z_i|θ^)との違いをlog()の部分で測り、次にその点がz_iが出現する確率g(z_i)をウェイト付けして分布間の違いを測っている
• Logの分子は個々のモデルに依らず常に一定
• 情報量基準の議論はlogの分母の推定量を求めることに帰着
AIC
• これ は、未知の確率分布g(z)に依存– 経験分布 で推定してみる。結果として、
– これは、対数尤度関数に最尤推定値を代入したもの
– But, 当然経験分布で代用したんだからBiasでるよね。
– とりあえず、統計モデルの対数尤度からこのバイアスを引いたものを情報量基準ICと呼んでおこう。
AIC
• AICはこのバイアス項を
モデルの自由パラメータの数
で近似したことが特徴!!
• 情報量基準AICnは自由パラメータの数=最尤推定によって推定値を得たパラメーターの
個数
• わりと知らないであろう事実1– 標本数が尐ないとき (情報が尐ないとき): より単純なモデルが選
ばれる傾向がある
– 標本数が多いとき (情報が多いとき): より複雑なモデルが選ばれる傾向がある
AIC
• わりと知らないであろう事実2– AIC もまた観測データから推定される推定値であり,推定値には
ばらつきあり
– ということで,bootstrap 法などを適用して「あるモデルが比較対象の中で AIC 最小となる確率」を評価するとかやる人いるよ
• わりと知らないであろう事実3– 異なる分布を仮定したモデルの比較について
• 離散分布 vs 離散分布の場合は OK
• 連続分布 vs 連続分布の場合も OK
• 離散分布 vs 連続分布の場合はダメ(理由: 対数尤度の計算方法が離散分布と連続分布で異なるため)
– ただ大前提があるよ!• 同じデータセットを使って異なるモデルのもとで最大化対数尤度を計算す
る
• どのモデルでも最大化対数尤度がきちんと計算できる