モデリング●●●●○

ブートストラップ法

Bootstrap ・ ぶーとすとらっぷほう

手元の標本から復元抽出を繰り返し、推定量のばらつきをデータ自身で見積もる手法

✦ 30秒で試す — 航海12個から12回引き直すと、一度も選ばれない玉はいくつ出る?12個のうち、一度でも引かれる玉は何割?予想してみる

概要

ブートストラップ法は、手元の標本そのものから「復元抽出」(一度選んだデータも戻してまた選べる抽出)で同じサイズの疑似標本を何千回も作り直し、そのたびに統計量を計算することで、推定量のばらつきをデータ自身に語らせる手法です。名前は「自分のブーツのつまみ革(bootstrap)を引っ張って自分を持ち上げる」という慣用句に由来します。外部の理論に頼らず、手元のデータだけで自分の不確かさを見積もる、という発想をよく表した命名です。

標本抽出にはゆらぎがつきものなので、標本から計算した平均や中央値、回帰係数といった推定値は「もし別の標本を取っていたら違う値になっていた」はずです。そのぶれ幅(標準誤差)を知りたいのに、現実には標本は1つしかありません。ブートストラップ法は「標本の取り直し」をコンピュータ上で疑似的に再現することで、この問題に正面から答えます。

なぜ生まれたか

伝統的な統計学では、推定量のばらつきは数学的に導いた公式で求めていました。標本平均の標準誤差なら「標準偏差を標本サイズの平方根で割る」という公式があり、中心極限定理が正規近似を保証してくれます。しかしこの路線には限界がありました。中央値や相関係数、分位数といった統計量では、ばらつきの公式が複雑だったり、正規分布などの仮定を置かないと導出できなかったりします。「公式が存在する統計量しか、不確かさを付けて報告できない」——これが長年の制約でした。

先駆けとして、1データずつ抜いて統計量を計算し直すジャックナイフ法(1949年にケヌイユが偏りの補正に、1958年にテューキーがばらつきの推定に使った)がありましたが、中央値のような滑らかでない統計量ではうまく働きませんでした。1979年にエフロンが提案したブートストラップ法は、この制約を計算力で突破しました。「標本は母集団の縮図なのだから、標本からの再抽出は、母集団からの抽出の代役を務められる」という一点に賭け、数式の代わりにコンピュータの反復計算でばらつきを直接観測するのです。どんなに複雑な統計量でも、計算手順さえ書ければ同じやり方で標準誤差や信頼区間が手に入ります。計算機の普及とともに実用となったこの手法は、「解析的な導出から計算による近似へ」という統計学の大きな転換を象徴する発明とされています。

詳細

手順 — 標本を母集団に見立てる

手順は驚くほど単純です。サイズnの標本から、復元抽出でn個を選び直した「ブートストラップ標本」を作ります。復元抽出なので、同じデータが2回3回と選ばれることもあれば、一度も選ばれないデータもあります(平均して元データの約63%が含まれ、残りは重複で埋まります)。このブートストラップ標本に対して、興味のある統計量——平均でも中央値でも回帰係数でも——を計算します。これをB回(通常1,000〜10,000回)繰り返すと、統計量の値がB個得られます。このB個の分布(ブートストラップ分布)が、「標本を取り直したら推定値はどうぶれるか」の近似になっており、その標準偏差が標準誤差の見積もり、その2.5%点と97.5%点で挟んだ範囲が95%信頼区間の見積もり(パーセンタイル法)になります。

手元の標本ABCDEn 個・1つだけ母集団の縮図とみなす戻しながらn 回引く再標本 1B は選ばれずACCDEθ*1再標本 2A・C は選ばれずBBDEEθ*2再標本 BC は選ばれずAABDEθ*B⋮(B 回:通常 1,000〜10,000)θ* の分布2.5%〜97.5%分布の広がり(SD)→ 標準誤差の見積もり / 両端 2.5% を除いた範囲 → 95% 信頼区間
ブートストラップ法の構造 — 手元の標本を母集団の代役に見立て、復元抽出の反復で統計量の分布を作る。同じ値が重複し(金の枠)、選ばれない値も出る

「戻しながら引く」とどんな標本ができるのか、実際に1回ずつ引いてみると感覚がつかめます。下の部品では、12個の値から12回引くたびに、重複する玉と選ばれない玉が出ます。1回ごとの平均は元の標本の平均のまわりでぶれ、そのぶれを1000回ぶん積み上げた山の幅が、公式 s/√n による標準誤差とほぼ一致します。統計量を中央値に切り替えても、手順はまったく同じです。

⚡ 体験: 戻しながら引いて、ばらつきを測る
統計量
手元の標本(平均 26.4)121517182122242729334158ブートストラップ標本ブートストラップ平均のヒストグラム(0 回)元の平均
回数0山の幅(SD)—公式 s/√n3.7195% 区間100回以上で表示

上の 12 個の玉が手元の標本(数字は通勤時間・分)。「リサンプル」を押すと、戻しながら 12 回引いて新しい標本を作ります。 同じ玉が2回出たり、1回も出ない玉があったりするのを見てください。

上 = 手元の標本(12個)。中 = 復元抽出で作ったブートストラップ標本。下 = その統計量のヒストグラムと 95% パーセンタイル区間

なぜこれで良い近似になるのか

論法の核心は代役の置き換えです。本当に知りたいのは「母集団から標本を取り直したときの推定値の分布」ですが、母集団には手が届きません。そこで標本を母集団の縮図と見なし、「標本から再抽出したときの推定値の分布」で代用します。標本サイズが十分あれば標本の分布は母集団の分布に近く、この置き換えの誤差は小さくなることが理論的に裏付けられています。乱数を使った反復計算でばらつきを観測するという点で、ブートストラップ法はモンテカルロ法の一種です。ただし通常のモンテカルロ法が既知の分布から乱数を生成するのに対し、ブートストラップ法は「手元のデータそのもの」を分布の代わりに使うところが独創でした。

使いどころと発展形

実務での強みは適用範囲の広さです。中央値の信頼区間、相関係数のばらつき、ジニ係数のような込み入った指標、機械学習モデルの性能指標の不確かさ——公式が手に入らない統計量でも、計算手順さえあれば一律に扱えます。信頼区間の作り方にも、前述のパーセンタイル法のほか、偏りを補正するBCa法などの改良版があります。また回帰分析では、データの行ごと再抽出する方法(説明変数もランダムとみなす)と、当てはめた値に残差だけを再抽出して足し戻す方法(説明変数を固定とみなす)が使い分けられます。2変数の相関係数のように「組」で意味を持つ統計量では、x と y をばらばらに引いてはいけません。行(個体)を単位にして組ごと引き直すことで、変数間の関係を保ったままばらつきを測れます。機械学習の分野では、ブートストラップ標本ごとにモデルを学習して予測を平均するバギングが生まれ、ランダムフォレストの土台になりました。これはバイアスとバリアンスの観点でいえば、再抽出の多様性を使ってバリアンスを削る戦略です。モデルの汎化性能を測る交差検証が「データの分割」で未知データを疑似的に作るのに対し、ブートストラップ法は「データの再抽出」で標本の取り直しを疑似的に作る——似た道具立てで異なる問いに答える兄弟のような関係です。

限界と注意点

万能に見えるブートストラップ法にも前提があります。第一に、標本が母集団の縮図であることが出発点なので、標本が小さすぎたり選択バイアスで歪んでいたりすれば、その歪みごと複製してしまいます。ブートストラップ法は「標本の偏り」を直す魔法ではありません。第二に、標本が小さいとブートストラップ分布は元の標本の「粗さ」をそのまま映し、区間は狭すぎる方向に偏りがちです(n が 10〜20 程度だと、名目95%のパーセンタイル区間が実際には90%前後しか真値を含まないこともあります)。リサンプリングの回数 B をいくら増やしても、この偏りは減りません。B を増やして小さくなるのは「乱数による揺らぎ」だけで、情報の量は手元の n 個から一歩も増えないからです。ブートストラップは標本サイズを水増しする手法ではありません。第三に、最大値・最小値のような分布の端に依存する統計量では近似がうまく働かないことが知られています。第四に、時系列のように観測値どうしに依存関係があるデータでは、独立を前提とした単純な再抽出は構造を壊すため、連続する区間ごと再抽出するブロック・ブートストラップなどの工夫が必要です。前提を確かめたうえで使えば、ブートストラップ法は「不確かさの見積もり」を誰の手にも届くものにした、現代統計学でもっとも実用的な道具の一つです。

試問

ブートストラップは、手元の標本から「戻しながら」同じ個数を引き直して、もう1つの標本を作る方法です。戻しながら引くので、同じ玉が何度も選ばれることがあり、その分だけ一度も選ばれない玉も出てきます。

✦ 命題挑戦中

12個の標本から戻しながら12回引いてブートストラップ標本を作るとき、一度も選ばれない玉が平均で何個になるかを見積もれ

一度も選ばれない玉は、平均して何個?

0個