統計学勉強会

  第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]
                                         Jackknifeのmedianの標準誤差とBootstrapの
     M[i]<-median(y)
}                                        medianの標準誤差が大きく違う

Mbar<-mean(y)
print(sqrt((10-1)/10*sum((M-Mbar)^2)))
                                         何かおかしい!
[1] 38.54363

#標準誤差のブートストラップ推定量
Mb<-replicate(1000, expr={               Jackknifeが推定誤差を起こす!
     y<-sample(x, size=10, replace=T)
     median(y)}
)
print(sd(Mb))
[1] 11.94611
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はこのバイアス項を
         モデルの自由パラメータの数
    で近似したことが特徴!!

• 情報量基準AIC
      nは自由パラメータの数=最尤推定によって推定値を得たパラメーターの
                                     個数


• わりと知らないであろう事実1
  – 標本数が尐ないとき (情報が尐ないとき): より単純なモデルが選
    ばれる傾向がある
  – 標本数が多いとき (情報が多いとき): より複雑なモデルが選ばれ
    る傾向がある
AIC
• わりと知らないであろう事実2
 – AIC もまた観測データから推定される推定値であり,推定値には
   ばらつきあり
 – ということで,bootstrap 法などを適用して「あるモデルが比較
   対象の中で AIC 最小となる確率」を評価するとかやる人いるよ


• わりと知らないであろう事実3
 – 異なる分布を仮定したモデルの比較について
   • 離散分布 vs 離散分布の場合は OK
   • 連続分布 vs 連続分布の場合も OK
   • 離散分布 vs 連続分布の場合はダメ(理由: 対数尤度の計算方法が離散分布と
     連続分布で異なるため)
 – ただ大前提があるよ!
   • 同じデータセットを使って異なるモデルのもとで最大化対数尤度を計算す
     る
   • どのモデルでも最大化対数尤度がきちんと計算できる

第五回統計学勉強会@東大駒場

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