Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Features
Speaker Deck
PRO
Sign in
Sign up for free
Search
Search
Bootstrap法とその周辺
Search
Daisuke Yoneoka
November 14, 2023
Research
270
0
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
Bootstrap法とその周辺
Daisuke Yoneoka
November 14, 2023
More Decks by Daisuke Yoneoka
See All by Daisuke Yoneoka
感染症の数理モデル15
kingqwert
0
82
感染症の数理モデル14
kingqwert
0
150
感染症の数理モデル13
kingqwert
0
67
感染症の数理モデル12
kingqwert
0
130
感染症の数理モデル11
kingqwert
0
140
感染症の数理セミナー_10_.pdf
kingqwert
0
160
感染症の数理モデル9
kingqwert
0
120
感染症の数理モデル8
kingqwert
0
130
感染症の数理モデル7
kingqwert
0
130
Other Decks in Research
See All in Research
SAKURAONE:An Open Ethernet-based AI HPC System And Its Observed Workload Dynamicsin a Single-Tenant LLM Development Environment
yuukit
1
300
ペットのかわいい瞬間を撮影する オートシャッターAIアプリへの スマートラベリングの適用
mssmkmr
0
510
2026 東京科学大 情報通信系 研究室紹介 (すずかけ台)
icttitech
0
3.7k
National high-resolution cropland classification of Japan with agricultural census information and multi-temporal multi-modality datasets
satai
3
270
羽田新ルート運用6年の検証
1manken
0
160
非試合日の野球場を楽しむためのARホームランボールキャッチ体験システムの開発 / EC79-miyazaki
yumulab
0
210
YOLO26_ Key Architectural Enhancements and Performance Benchmarking for Real-Time Object Detection
satai
3
780
「なんとなく」の顧客理解から脱却する ──顧客の解像度を武器にするインサイトマネジメント
tajima_kaho
10
7.6k
IEEE AIxVR 2026 Keynote Talk: "Beyond Visibility: Understanding Scenes and Humans under Challenging Conditions with Diverse Sensing"
miso2024
0
200
Ankylosing Spondylitis
ankh2054
0
170
機械学習で作った ポケモン対戦bot で 遊ぼう!
fufufukakaka
0
250
「行ける・行けない表」による地域公共交通の性能評価
bansousha
0
160
Featured
See All Featured
[Rails World 2023 - Day 1 Closing Keynote] - The Magic of Rails
eileencodes
38
2.9k
Information Architects: The Missing Link in Design Systems
soysaucechin
0
960
Fireside Chat
paigeccino
42
3.9k
State of Search Keynote: SEO is Dead Long Live SEO
ryanjones
0
200
jQuery: Nuts, Bolts and Bling
dougneiner
66
8.5k
Primal Persuasion: How to Engage the Brain for Learning That Lasts
tmiket
0
360
The SEO Collaboration Effect
kristinabergwall1
1
480
Documentation Writing (for coders)
carmenintech
77
5.4k
Evolving SEO for Evolving Search Engines
ryanjones
0
210
The Anti-SEO Checklist Checklist. Pubcon Cyber Week
ryanjones
0
150
Between Models and Reality
mayunak
4
330
The Invisible Side of Design
smashingmag
302
52k
Transcript
計算統計学 〜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)] CPPUTUSBQNFBO %FOTJUZ
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) #標準誤差のジャックナイフ推定量 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) 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) DPNQMJBODF EFDSFBTFJODIPMFTUFSPMMFWFM
# データの散布図 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] } DPNQMJBODF EFDSFBTFJODIPMFTUFSPMMFWFM