SlideShare a Scribd company logo
1 of 23
計算統計学
〜Bootstrap法とその周辺〜

      @ kingqwert
複雑な問題
• 統計量の正確な標本分布の導出は困難

• 漸近理論の発展
 o 最尤法
    • 一致性、漸近正規性
    • 漸近分散:Fisher情報量の逆数


• 統計量の関数の分布に関してはデルタ法

• 以下の様な統計量においては結構難しい
 o トリム平均、Median →   分位点に関する理論の発展が必要
Bootstrap法(ブーツの紐法)
• 1979年 スタンフォード大のBradley Efronにより開発
• 「ほら吹き男爵」の「ブーツの紐を引っ張って湖の底か
  ら脱出する」という話

• 教科書
Bootstrap法概説
• リサンプリングすることで母集団の分布を経験分布で代
  用。ノンパラメトリックなモンテカルロ法の一種

• リサンプリング法では観測された標本を有限母集団とし
  て扱う

• 標本=擬似母集団からの無作為標本
経験分布
  Empirical distribution
• データそのものから導かれる分布のこと
 o イメージ的には、ヒストグラム
 o N個の標本(y1,y2,,,,,yn)の各点に関して1/nの確率を割り当てる離散型確率分布




• 未知の母集団分布F(y)
 o 経験分布関数   はF(y)に分布収束する。
差込原理
• Plug-in estimator

•               を利用してパラメーターを推定する方法
    o Bootstrap法はこの原理に基づいて計算される。



• Ex.   平均
抽出方法
• 復元抽出 sampling with replacement
  o 同じ要素の抽出を許す
  o Rコード: sample()関数
     • Ex. sample(data, 100, replace =True)



• 非復元抽出 sampling without replacement
  o 同じ要素の抽出を許さない
  o Rコード: sample()関数
     • Ex. sample(data, 100, replace =False)
ごちゃごちゃしたこたぁ
      いいんだよ!
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)]
Cramér-Raoの下限と効率
• Fisher情報量(I(θ))の復習
    o f(Y;θ)は尤度関数
    o 意味:1回微分の分散か2回微分の期待値


• いくつかの正則条件のもとで
    o クラメール・ラオの下限   (ただし、   )




•    の分散がクラメール・ラオの下限を達成するときに、
    を有効推定量(Efficient estimator)
    o 最尤推定量が有効推定量であることは稀。通常は漸近的に達成(漸近有効)
ブートストラップ誤差
• 統計的誤差
 o 差込原理より      として近似したことからくる誤差
 o どうしようもないから諦めよう!(提案)
 o でも、nは大きくしようね!


• モンテカルロ誤差
 o シミュレーションに基づく誤差
 o 何回反復させるかに依存しているので、十分回数やろう!
 o で、結局何回くらいが適当なの?
    • nが大きい場合、反復回数を増やす
    • 中央値のような標本の滑らかなでない関数の場合反復回数を増やす

 o Efron and Tibshirani(1993) によると、分散や標準誤差のブートストラップ推定
   の場合は25-300回程度十分らしい!
Jackknife法
• もう一つのリサンプリング法
 o 重複を許さないリサンプリング法
 o 狭義にはこんなかんじで1つだけサンプルを抜いてリサンプリング

 o イメージ的にはCross validationによく似ている。


• どうでもいいけど、語源は「キャンプ場ですげー便利」

• 利点
 o Bootstrapよりちょっと早い
• 欠点
 o 統計量が平滑でない値の場合、失敗する場合がある。(ex. Median)
 o 平滑性=データの変化がどれくらい統計量を変化させるか
Jackknifeの失敗
x<-sample(1:100, size=10)


#標準誤差のジャックナイフ推定量
                                               Jackknifeのmedianの標準誤差とBootstrap
M<-numeric(10)                                 のmedianの標準誤差が大きく違う
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

#標準誤差のブートストラップ推定量                              Jackknifeが推定誤差を起こす!
Mb<-replicate(1000, expr={
            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)

                    o 性能や特性など詳しくは、A.C. Davison et al(1997)
標準正規/基本 B-CI
• 標準正規CI
  o まぁ想像通りです。
  o 仮定が強い
     • の分布が正規分布 or
     • が標本平均 and サンプルサイズが大きい(中心極限定理)



• 基本CI
  o Bootstrap近似に基づく。
     •             と近似(この分位点を計算)→誤差が大きいかも
  o ただし、 の経験累積分布から標本のα分位点
Bootstrap T CI
• 基本Bootstrap CIの場合、         としているので、
  分布のずれがある場合うまく行かない!
 o 一次の正確度しかないから
    • 一次の正確度:
    • Cは被覆誤差
    • C→0 (n→∞)がであってほしい
                    上側信頼限界

• それじゃ、二次のモーメント(分散)まで考えてみればいい
  じゃない!”t型”統計量の標本分布をリサンプリングで作成

• 信頼区間

 o    は、    のα/2番目に小さい値
Bootstrap T CI
• 信頼区間
    o    は、    のα/2番目に小さい値



• 長所
    o 二次の正確性を持つ:


•   短所
    o σの推定が不可欠→ブートストラップ標本ごとにσを計算しなけれならないので、
      計算負荷が大きい(つまり、ブートストラップのなかにブートストラップの入
      れ子構造)
Percentile CI

• みんな考えつく方法

•            の分布で近似して、α/2番目に大きい値と
    (1-α)/2番目に大きい値を信頼区間とする

• 信頼区間

• 欠点:一次の正確度しか持ってないけどね!
Percentile法の正確度

• Percentile CIの方が標準正規CIより良い被覆率

• 変換後に左右対称となる の単調増加関数                   が存在す
  るか否かに正確度が依存する。
  o 多くの場合、そんな   なんて存在しないよ!
                             • Efron and Tibshirani;1993
                                       • 汪、桜井;2011




• ちょっと改善しましょ!→ BCa法
Bca法
• Percentile法を改善したもの

• 分位点における、偏りに対する補正 & 歪度(加速度)に対す
  る補正

• 変換後に以下を満たす単調増加関数          の存在を仮定
  o b: 偏り修正定数
  o a: 歪度(加速度)補正定数




• これで、分位点を補正!
BCa法
• 偏り補正定数=    のMedianの偏りを補正




• 歪度(加速度)の補正定数



 o ちなみに、加速度=目標母数   に関して、 の標準誤差の変化率を推定する意味


• 二次の正確度を持つ!=被覆誤差が               で0に。
で、CI求めるのってどれがいいの
 & 何回反復すりゃいいの?
• うーん。Bootstrap-TかBCaかな? Byung-Jin Ahn et al; 2009




• CIの計算には分散の計算時よりも大きい反復回数が必要
  o 90-95% CIの場合は反復回数1000-2000回は必要だよ!
                                        • Efron and Tibshirani;1993
回帰分析に応用
•   こんなかんじのコンプライアンスとコレステロール値の散布図と3次の回帰直線

# データセットづくり
library(bootstrap)

# z の値を大きさの順でデータを並べ替える
zz <- sort(cholost$z)
yy <- cholost$y[order(cholost$z)]

# 拡大データフレームを作る
mydata <- data.frame(z1=zz, z2=zz^2, z3=zz^3, yy)
# データの散布図
plot(mydata$z1, mydata$yy,
  xlab="compliance", ylab="decrease in cholesterol level")

# 最小2乗法による3次関数のあてはめ
cubic <- lm(yy~., data=mydata)
# 推定された回帰曲線を描く
lines(zz, predict(cubic), lty=2)
# データの散布図
plot(mydata$z1, mydata$yy, xlab=“compliance”, ylab=“decrease in cholesterol level”)
set.seed(314159)                     # 乱数の種を固定する
B <- 100                             # ブートストラップ反復回数
n <- length(cholost$z)               # 標本の大きさ
r60 <- numeric(B)                    # ブートストラップ回帰平均値
r100 <- numeric(B)                   # ブートストラップ回帰平均値
for (b in 1:100){                    # ブートストラップ反復開始
  bt <- sample(1:n, replace=TRUE)    # ブートストラップ標本番号
  mydata <- cholost[bt,]             # ブートストラップ標本
  zz <- sort(mydata$z)               # zの値の並べ替え
  yy <- mydata$y[order(mydata$z)]    # zの大きさの順にyを並べ替える
  mydata <- data.frame(z1=zz, z2=zz^2, z3=zz^3, yy) # データフレームを作る
  cubic <- lm(yy~., data=mydata)     # 最小2乗法による3次関数のあてはめ
  lines(zz, predict(cubic))          # 求めた最小2乗曲線を描く
  # z=60, 100 のときのブートストラップ回帰予測値
  dumy <- predict(cubic, data.frame(z1=c(60, 100),
    z2=c(60, 100)^2, z3=c(60, 100)^3))
  r60[b] <- dumy[1]
  r100[b] <- dumy[2]
}

More Related Content

What's hot

ロジスティック回帰分析の入門 -予測モデル構築-
ロジスティック回帰分析の入門 -予測モデル構築-ロジスティック回帰分析の入門 -予測モデル構築-
ロジスティック回帰分析の入門 -予測モデル構築-
Koichiro Gibo
 

What's hot (20)

DARM勉強会第3回 (missing data analysis)
DARM勉強会第3回 (missing data analysis)DARM勉強会第3回 (missing data analysis)
DARM勉強会第3回 (missing data analysis)
 
Stanコードの書き方 中級編
Stanコードの書き方 中級編Stanコードの書き方 中級編
Stanコードの書き方 中級編
 
重回帰分析で交互作用効果
重回帰分析で交互作用効果重回帰分析で交互作用効果
重回帰分析で交互作用効果
 
これからの仮説検証・モデル評価
これからの仮説検証・モデル評価これからの仮説検証・モデル評価
これからの仮説検証・モデル評価
 
マルチレベルモデル講習会 理論編
マルチレベルモデル講習会 理論編マルチレベルモデル講習会 理論編
マルチレベルモデル講習会 理論編
 
ベイズ主義による研究の報告方法
ベイズ主義による研究の報告方法ベイズ主義による研究の報告方法
ベイズ主義による研究の報告方法
 
Imputation of Missing Values using Random Forest
Imputation of Missing Values using  Random ForestImputation of Missing Values using  Random Forest
Imputation of Missing Values using Random Forest
 
Cmdstanr入門とreduce_sum()解説
Cmdstanr入門とreduce_sum()解説Cmdstanr入門とreduce_sum()解説
Cmdstanr入門とreduce_sum()解説
 
ロジスティック回帰分析の入門 -予測モデル構築-
ロジスティック回帰分析の入門 -予測モデル構築-ロジスティック回帰分析の入門 -予測モデル構築-
ロジスティック回帰分析の入門 -予測モデル構築-
 
一般化線形モデル (GLM) & 一般化加法モデル(GAM)
一般化線形モデル (GLM) & 一般化加法モデル(GAM) 一般化線形モデル (GLM) & 一般化加法モデル(GAM)
一般化線形モデル (GLM) & 一般化加法モデル(GAM)
 
一般化線形混合モデル入門の入門
一般化線形混合モデル入門の入門一般化線形混合モデル入門の入門
一般化線形混合モデル入門の入門
 
ベイズファクターとモデル選択
ベイズファクターとモデル選択ベイズファクターとモデル選択
ベイズファクターとモデル選択
 
社会心理学とGlmm
社会心理学とGlmm社会心理学とGlmm
社会心理学とGlmm
 
ノンパラベイズ入門の入門
ノンパラベイズ入門の入門ノンパラベイズ入門の入門
ノンパラベイズ入門の入門
 
機械学習による統計的実験計画(ベイズ最適化を中心に)
機械学習による統計的実験計画(ベイズ最適化を中心に)機械学習による統計的実験計画(ベイズ最適化を中心に)
機械学習による統計的実験計画(ベイズ最適化を中心に)
 
『バックドア基準の入門』@統数研研究集会
『バックドア基準の入門』@統数研研究集会『バックドア基準の入門』@統数研研究集会
『バックドア基準の入門』@統数研研究集会
 
MCMCと正規分布の推測
MCMCと正規分布の推測MCMCと正規分布の推測
MCMCと正規分布の推測
 
(実験心理学徒だけど)一般化線形混合モデルを使ってみた
(実験心理学徒だけど)一般化線形混合モデルを使ってみた(実験心理学徒だけど)一般化線形混合モデルを使ってみた
(実験心理学徒だけど)一般化線形混合モデルを使ってみた
 
Visualizing Data Using t-SNE
Visualizing Data Using t-SNEVisualizing Data Using t-SNE
Visualizing Data Using t-SNE
 
Rで架空データの発生
Rで架空データの発生Rで架空データの発生
Rで架空データの発生
 

Similar to ブートストラップ法とその周辺とR

Big Data Bootstrap (ICML読み会)
Big Data Bootstrap (ICML読み会)Big Data Bootstrap (ICML読み会)
Big Data Bootstrap (ICML読み会)
正志 坪坂
 
K070 点推定
K070 点推定K070 点推定
K070 点推定
t2tarumi
 
2011年11月11日
2011年11月11日2011年11月11日
2011年11月11日
nukaemon
 
Approximate Scalable Bounded Space Sketch for Large Data NLP
Approximate Scalable Bounded Space Sketch for Large Data NLPApproximate Scalable Bounded Space Sketch for Large Data NLP
Approximate Scalable Bounded Space Sketch for Large Data NLP
Koji Matsuda
 

Similar to ブートストラップ法とその周辺とR (20)

Big Data Bootstrap (ICML読み会)
Big Data Bootstrap (ICML読み会)Big Data Bootstrap (ICML読み会)
Big Data Bootstrap (ICML読み会)
 
20130716 はじパタ3章前半 ベイズの識別規則
20130716 はじパタ3章前半 ベイズの識別規則20130716 はじパタ3章前半 ベイズの識別規則
20130716 はじパタ3章前半 ベイズの識別規則
 
K070 点推定
K070 点推定K070 点推定
K070 点推定
 
Paper reading - Dropout as a Bayesian Approximation: Representing Model Uncer...
Paper reading - Dropout as a Bayesian Approximation: Representing Model Uncer...Paper reading - Dropout as a Bayesian Approximation: Representing Model Uncer...
Paper reading - Dropout as a Bayesian Approximation: Representing Model Uncer...
 
マルコフ連鎖モンテカルロ法と多重代入法
マルコフ連鎖モンテカルロ法と多重代入法マルコフ連鎖モンテカルロ法と多重代入法
マルコフ連鎖モンテカルロ法と多重代入法
 
ABテスト・LPOのための統計学【社内向けサディスティックエディション】データアーティスト株式会社
ABテスト・LPOのための統計学【社内向けサディスティックエディション】データアーティスト株式会社ABテスト・LPOのための統計学【社内向けサディスティックエディション】データアーティスト株式会社
ABテスト・LPOのための統計学【社内向けサディスティックエディション】データアーティスト株式会社
 
[The Elements of Statistical Learning]Chapter8: Model Inferennce and Averaging
[The Elements of Statistical Learning]Chapter8: Model Inferennce and Averaging[The Elements of Statistical Learning]Chapter8: Model Inferennce and Averaging
[The Elements of Statistical Learning]Chapter8: Model Inferennce and Averaging
 
モンテカルロサンプリング
モンテカルロサンプリングモンテカルロサンプリング
モンテカルロサンプリング
 
Introduction to programming
Introduction to programmingIntroduction to programming
Introduction to programming
 
Rubinの論文(の行間)を読んでみる-傾向スコアの理論-
Rubinの論文(の行間)を読んでみる-傾向スコアの理論-Rubinの論文(の行間)を読んでみる-傾向スコアの理論-
Rubinの論文(の行間)を読んでみる-傾向スコアの理論-
 
2011年11月11日
2011年11月11日2011年11月11日
2011年11月11日
 
Rで学ぶロバスト推定
Rで学ぶロバスト推定Rで学ぶロバスト推定
Rで学ぶロバスト推定
 
Approximate Scalable Bounded Space Sketch for Large Data NLP
Approximate Scalable Bounded Space Sketch for Large Data NLPApproximate Scalable Bounded Space Sketch for Large Data NLP
Approximate Scalable Bounded Space Sketch for Large Data NLP
 
Paper reading - Dropout as a Bayesian Approximation: Representing Model Uncer...
Paper reading - Dropout as a Bayesian Approximation: Representing Model Uncer...Paper reading - Dropout as a Bayesian Approximation: Representing Model Uncer...
Paper reading - Dropout as a Bayesian Approximation: Representing Model Uncer...
 
Chisq 01
Chisq 01Chisq 01
Chisq 01
 
Deep learningbook chap7
Deep learningbook chap7Deep learningbook chap7
Deep learningbook chap7
 
研究説明(学部生向け)
研究説明(学部生向け)研究説明(学部生向け)
研究説明(学部生向け)
 
プログラムを高速化する話
プログラムを高速化する話プログラムを高速化する話
プログラムを高速化する話
 
「全ての確率はコイン投げに通ず」 Japan.R 発表資料
「全ての確率はコイン投げに通ず」 Japan.R 発表資料「全ての確率はコイン投げに通ず」 Japan.R 発表資料
「全ての確率はコイン投げに通ず」 Japan.R 発表資料
 
充足可能性問題のいろいろ
充足可能性問題のいろいろ充足可能性問題のいろいろ
充足可能性問題のいろいろ
 

More from Daisuke Yoneoka

第七回統計学勉強会@東大駒場
第七回統計学勉強会@東大駒場第七回統計学勉強会@東大駒場
第七回統計学勉強会@東大駒場
Daisuke Yoneoka
 
第二回統計学勉強会@東大駒場
第二回統計学勉強会@東大駒場第二回統計学勉強会@東大駒場
第二回統計学勉強会@東大駒場
Daisuke Yoneoka
 
第四回統計学勉強会@東大駒場
第四回統計学勉強会@東大駒場第四回統計学勉強会@東大駒場
第四回統計学勉強会@東大駒場
Daisuke Yoneoka
 
第三回統計学勉強会@東大駒場
第三回統計学勉強会@東大駒場第三回統計学勉強会@東大駒場
第三回統計学勉強会@東大駒場
Daisuke Yoneoka
 
Rで学ぶデータサイエンス第13章(ミニマックス確率マシン)
Rで学ぶデータサイエンス第13章(ミニマックス確率マシン)Rで学ぶデータサイエンス第13章(ミニマックス確率マシン)
Rで学ぶデータサイエンス第13章(ミニマックス確率マシン)
Daisuke Yoneoka
 
Rで学ぶデータサイエンス第1章(判別能力の評価)
Rで学ぶデータサイエンス第1章(判別能力の評価)Rで学ぶデータサイエンス第1章(判別能力の評価)
Rで学ぶデータサイエンス第1章(判別能力の評価)
Daisuke Yoneoka
 

More from Daisuke Yoneoka (18)

MCMC法
MCMC法MCMC法
MCMC法
 
PCA on graph/network
PCA on graph/networkPCA on graph/network
PCA on graph/network
 
Sequential Kernel Association Test (SKAT) for rare and common variants
Sequential Kernel Association Test (SKAT) for rare and common variantsSequential Kernel Association Test (SKAT) for rare and common variants
Sequential Kernel Association Test (SKAT) for rare and common variants
 
Higher criticism, SKAT and SKAT-o for whole genome studies
Higher criticism, SKAT and SKAT-o for whole genome studiesHigher criticism, SKAT and SKAT-o for whole genome studies
Higher criticism, SKAT and SKAT-o for whole genome studies
 
Deep directed generative models with energy-based probability estimation
Deep directed generative models with energy-based probability estimationDeep directed generative models with energy-based probability estimation
Deep directed generative models with energy-based probability estimation
 
独立成分分析 ICA
独立成分分析 ICA独立成分分析 ICA
独立成分分析 ICA
 
Supervised PCAとその周辺
Supervised PCAとその周辺Supervised PCAとその周辺
Supervised PCAとその周辺
 
Sparse models
Sparse modelsSparse models
Sparse models
 
ML: Sparse regression CH.13
 ML: Sparse regression CH.13 ML: Sparse regression CH.13
ML: Sparse regression CH.13
 
セミパラメトリック推論の基礎
セミパラメトリック推論の基礎セミパラメトリック推論の基礎
セミパラメトリック推論の基礎
 
Murphy: Machine learning A probabilistic perspective: Ch.9
Murphy: Machine learning A probabilistic perspective: Ch.9Murphy: Machine learning A probabilistic perspective: Ch.9
Murphy: Machine learning A probabilistic perspective: Ch.9
 
第七回統計学勉強会@東大駒場
第七回統計学勉強会@東大駒場第七回統計学勉強会@東大駒場
第七回統計学勉強会@東大駒場
 
第二回統計学勉強会@東大駒場
第二回統計学勉強会@東大駒場第二回統計学勉強会@東大駒場
第二回統計学勉強会@東大駒場
 
第四回統計学勉強会@東大駒場
第四回統計学勉強会@東大駒場第四回統計学勉強会@東大駒場
第四回統計学勉強会@東大駒場
 
第三回統計学勉強会@東大駒場
第三回統計学勉強会@東大駒場第三回統計学勉強会@東大駒場
第三回統計学勉強会@東大駒場
 
第一回統計学勉強会@東大駒場
第一回統計学勉強会@東大駒場第一回統計学勉強会@東大駒場
第一回統計学勉強会@東大駒場
 
Rで学ぶデータサイエンス第13章(ミニマックス確率マシン)
Rで学ぶデータサイエンス第13章(ミニマックス確率マシン)Rで学ぶデータサイエンス第13章(ミニマックス確率マシン)
Rで学ぶデータサイエンス第13章(ミニマックス確率マシン)
 
Rで学ぶデータサイエンス第1章(判別能力の評価)
Rで学ぶデータサイエンス第1章(判別能力の評価)Rで学ぶデータサイエンス第1章(判別能力の評価)
Rで学ぶデータサイエンス第1章(判別能力の評価)
 

Recently uploaded

Service-introduction-materials-misorae-leadership
Service-introduction-materials-misorae-leadershipService-introduction-materials-misorae-leadership
Service-introduction-materials-misorae-leadership
Yasuyoshi Minehisa
 

Recently uploaded (6)

Service-introduction-materials-misorae-leadership
Service-introduction-materials-misorae-leadershipService-introduction-materials-misorae-leadership
Service-introduction-materials-misorae-leadership
 
202405_VISIONARYJAPAN_engineerteam_entrancebook(ver2.1)
202405_VISIONARYJAPAN_engineerteam_entrancebook(ver2.1)202405_VISIONARYJAPAN_engineerteam_entrancebook(ver2.1)
202405_VISIONARYJAPAN_engineerteam_entrancebook(ver2.1)
 
UP103シリーズ パワーコメット ユニパー スライドレールタイプ 瓦揚げ機 ウインチ
UP103シリーズ パワーコメット ユニパー スライドレールタイプ 瓦揚げ機 ウインチUP103シリーズ パワーコメット ユニパー スライドレールタイプ 瓦揚げ機 ウインチ
UP103シリーズ パワーコメット ユニパー スライドレールタイプ 瓦揚げ機 ウインチ
 
ストックマーク株式会社がご提供しているAnews(エーニュース)概要紹介.pdf
ストックマーク株式会社がご提供しているAnews(エーニュース)概要紹介.pdfストックマーク株式会社がご提供しているAnews(エーニュース)概要紹介.pdf
ストックマーク株式会社がご提供しているAnews(エーニュース)概要紹介.pdf
 
20240427 zaim academy counseling lesson .pdf
20240427 zaim academy counseling lesson .pdf20240427 zaim academy counseling lesson .pdf
20240427 zaim academy counseling lesson .pdf
 
シンフォニティ株式会社(SYMPHONITY , Inc.) 会社説明・人材採用資料
シンフォニティ株式会社(SYMPHONITY , Inc.) 会社説明・人材採用資料シンフォニティ株式会社(SYMPHONITY , Inc.) 会社説明・人材採用資料
シンフォニティ株式会社(SYMPHONITY , Inc.) 会社説明・人材採用資料
 

ブートストラップ法とその周辺とR

  • 2. 複雑な問題 • 統計量の正確な標本分布の導出は困難 • 漸近理論の発展 o 最尤法 • 一致性、漸近正規性 • 漸近分散:Fisher情報量の逆数 • 統計量の関数の分布に関してはデルタ法 • 以下の様な統計量においては結構難しい o トリム平均、Median → 分位点に関する理論の発展が必要
  • 3. Bootstrap法(ブーツの紐法) • 1979年 スタンフォード大のBradley Efronにより開発 • 「ほら吹き男爵」の「ブーツの紐を引っ張って湖の底か ら脱出する」という話 • 教科書
  • 4. Bootstrap法概説 • リサンプリングすることで母集団の分布を経験分布で代 用。ノンパラメトリックなモンテカルロ法の一種 • リサンプリング法では観測された標本を有限母集団とし て扱う • 標本=擬似母集団からの無作為標本
  • 5. 経験分布 Empirical distribution • データそのものから導かれる分布のこと o イメージ的には、ヒストグラム o N個の標本(y1,y2,,,,,yn)の各点に関して1/nの確率を割り当てる離散型確率分布 • 未知の母集団分布F(y) o 経験分布関数 はF(y)に分布収束する。
  • 6. 差込原理 • Plug-in estimator • を利用してパラメーターを推定する方法 o Bootstrap法はこの原理に基づいて計算される。 • Ex. 平均
  • 7. 抽出方法 • 復元抽出 sampling with replacement o 同じ要素の抽出を許す o Rコード: sample()関数 • Ex. sample(data, 100, replace =True) • 非復元抽出 sampling without replacement o 同じ要素の抽出を許さない o Rコード: sample()関数 • Ex. sample(data, 100, replace =False)
  • 8. ごちゃごちゃしたこたぁ いいんだよ! 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)]
  • 9. Cramér-Raoの下限と効率 • Fisher情報量(I(θ))の復習 o f(Y;θ)は尤度関数 o 意味:1回微分の分散か2回微分の期待値 • いくつかの正則条件のもとで o クラメール・ラオの下限 (ただし、 ) • の分散がクラメール・ラオの下限を達成するときに、 を有効推定量(Efficient estimator) o 最尤推定量が有効推定量であることは稀。通常は漸近的に達成(漸近有効)
  • 10. ブートストラップ誤差 • 統計的誤差 o 差込原理より として近似したことからくる誤差 o どうしようもないから諦めよう!(提案) o でも、nは大きくしようね! • モンテカルロ誤差 o シミュレーションに基づく誤差 o 何回反復させるかに依存しているので、十分回数やろう! o で、結局何回くらいが適当なの? • nが大きい場合、反復回数を増やす • 中央値のような標本の滑らかなでない関数の場合反復回数を増やす o Efron and Tibshirani(1993) によると、分散や標準誤差のブートストラップ推定 の場合は25-300回程度十分らしい!
  • 11. Jackknife法 • もう一つのリサンプリング法 o 重複を許さないリサンプリング法 o 狭義にはこんなかんじで1つだけサンプルを抜いてリサンプリング o イメージ的にはCross validationによく似ている。 • どうでもいいけど、語源は「キャンプ場ですげー便利」 • 利点 o Bootstrapよりちょっと早い • 欠点 o 統計量が平滑でない値の場合、失敗する場合がある。(ex. Median) o 平滑性=データの変化がどれくらい統計量を変化させるか
  • 12. Jackknifeの失敗 x<-sample(1:100, size=10) #標準誤差のジャックナイフ推定量 Jackknifeのmedianの標準誤差とBootstrap M<-numeric(10) のmedianの標準誤差が大きく違う 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 #標準誤差のブートストラップ推定量 Jackknifeが推定誤差を起こす! Mb<-replicate(1000, expr={ 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) o 性能や特性など詳しくは、A.C. Davison et al(1997)
  • 14. 標準正規/基本 B-CI • 標準正規CI o まぁ想像通りです。 o 仮定が強い • の分布が正規分布 or • が標本平均 and サンプルサイズが大きい(中心極限定理) • 基本CI o Bootstrap近似に基づく。 • と近似(この分位点を計算)→誤差が大きいかも o ただし、 の経験累積分布から標本のα分位点
  • 15. Bootstrap T CI • 基本Bootstrap CIの場合、 としているので、 分布のずれがある場合うまく行かない! o 一次の正確度しかないから • 一次の正確度: • Cは被覆誤差 • C→0 (n→∞)がであってほしい 上側信頼限界 • それじゃ、二次のモーメント(分散)まで考えてみればいい じゃない!”t型”統計量の標本分布をリサンプリングで作成 • 信頼区間 o は、 のα/2番目に小さい値
  • 16. Bootstrap T CI • 信頼区間 o は、 のα/2番目に小さい値 • 長所 o 二次の正確性を持つ: • 短所 o σの推定が不可欠→ブートストラップ標本ごとにσを計算しなけれならないので、 計算負荷が大きい(つまり、ブートストラップのなかにブートストラップの入 れ子構造)
  • 17. Percentile CI • みんな考えつく方法 • の分布で近似して、α/2番目に大きい値と (1-α)/2番目に大きい値を信頼区間とする • 信頼区間 • 欠点:一次の正確度しか持ってないけどね!
  • 18. Percentile法の正確度 • Percentile CIの方が標準正規CIより良い被覆率 • 変換後に左右対称となる の単調増加関数 が存在す るか否かに正確度が依存する。 o 多くの場合、そんな なんて存在しないよ! • Efron and Tibshirani;1993 • 汪、桜井;2011 • ちょっと改善しましょ!→ BCa法
  • 19. Bca法 • Percentile法を改善したもの • 分位点における、偏りに対する補正 & 歪度(加速度)に対す る補正 • 変換後に以下を満たす単調増加関数 の存在を仮定 o b: 偏り修正定数 o a: 歪度(加速度)補正定数 • これで、分位点を補正!
  • 20. BCa法 • 偏り補正定数= のMedianの偏りを補正 • 歪度(加速度)の補正定数 o ちなみに、加速度=目標母数 に関して、 の標準誤差の変化率を推定する意味 • 二次の正確度を持つ!=被覆誤差が で0に。
  • 21. で、CI求めるのってどれがいいの & 何回反復すりゃいいの? • うーん。Bootstrap-TかBCaかな? Byung-Jin Ahn et al; 2009 • CIの計算には分散の計算時よりも大きい反復回数が必要 o 90-95% CIの場合は反復回数1000-2000回は必要だよ! • Efron and Tibshirani;1993
  • 22. 回帰分析に応用 • こんなかんじのコンプライアンスとコレステロール値の散布図と3次の回帰直線 # データセットづくり library(bootstrap) # z の値を大きさの順でデータを並べ替える zz <- sort(cholost$z) yy <- cholost$y[order(cholost$z)] # 拡大データフレームを作る mydata <- data.frame(z1=zz, z2=zz^2, z3=zz^3, yy) # データの散布図 plot(mydata$z1, mydata$yy, xlab="compliance", ylab="decrease in cholesterol level") # 最小2乗法による3次関数のあてはめ cubic <- lm(yy~., data=mydata) # 推定された回帰曲線を描く lines(zz, predict(cubic), lty=2)
  • 23. # データの散布図 plot(mydata$z1, mydata$yy, xlab=“compliance”, ylab=“decrease in cholesterol level”) set.seed(314159) # 乱数の種を固定する B <- 100 # ブートストラップ反復回数 n <- length(cholost$z) # 標本の大きさ r60 <- numeric(B) # ブートストラップ回帰平均値 r100 <- numeric(B) # ブートストラップ回帰平均値 for (b in 1:100){ # ブートストラップ反復開始 bt <- sample(1:n, replace=TRUE) # ブートストラップ標本番号 mydata <- cholost[bt,] # ブートストラップ標本 zz <- sort(mydata$z) # zの値の並べ替え yy <- mydata$y[order(mydata$z)] # zの大きさの順にyを並べ替える mydata <- data.frame(z1=zz, z2=zz^2, z3=zz^3, yy) # データフレームを作る cubic <- lm(yy~., data=mydata) # 最小2乗法による3次関数のあてはめ lines(zz, predict(cubic)) # 求めた最小2乗曲線を描く # z=60, 100 のときのブートストラップ回帰予測値 dumy <- predict(cubic, data.frame(z1=c(60, 100), z2=c(60, 100)^2, z3=c(60, 100)^3)) r60[b] <- dumy[1] r100[b] <- dumy[2] }