コンテンツにスキップ

第03回 確率論の基礎(2):ベイズの定理の深掘り

10/13(火)Ⅲ講 13:00〜14:40・B402教室

「データで信念を更新する」。直感を裏切る 基準率の誤謬


今日のリンク

考え方をガイドで確かめる

この回の考え方は、統計の考え方ガイドの「確率とベイズ」でも解説しています。霊長類のデータを動かしながら確かめられます。

この回のゴール

  • ベイズの定理を理解する:\(P(H\mid D)=\dfrac{P(D\mid H)\,P(H)}{P(D)}\)
  • 事前確率・尤度・事後確率の役割を説明できる
  • 基準率の誤謬 と 陽性的中率 を理解し、「検査の精度」と「的中率」を混同しない
  • 逐次更新(今日の事後=明日の事前)が学習の数理であることを知る
  • 発展:ベイズの定理を条件付き確率の定義から導き、オッズ形式(事後オッズ=事前オッズ×尤度比)を自分で書ける

到達目標との対応:G1(条件付き確率とベイズの定理を理解し、情報の更新プロセスを説明できる) の本丸。


第2回の答案から ―― 冒頭で確認すること

第2回の課題(条件付き確率と独立)は、学生17名が提出し、記述は13名が満点だった。 減点した4名と、小テストの誤答に、共通する型が3つある。 どれも今日のベイズの定理に直接ひびくので、先に確認しておく。

① 分母をどこに取るか(小テスト A1 の誤答)

学生100人のうち、アルバイト30人、一人暮らし20人、両方12人。 このとき \(P(A\mid B)\)(一人暮らしの人がアルバイトをしている確率)はいくつか。

答え 何の確率か 計算
0.12 \(P(A\cap B)\) ―― 100人のうち両方の人 \(12 \div 100\)
0.60 \(P(A\mid B)\) ―― 一人暮らしの20人のうちアルバイトの人 \(12 \div 20\)
0.40 \(P(B\mid A)\) ―― アルバイト30人のうち一人暮らしの人 \(12 \div 30\)

同じ12人を、3つの違う分母で割っている。どれを分母にするかで答えが3つに分かれる。 今日のベイズの定理は、まさにこの分母を取り替える計算である。

② 条件の名前で、求めた確率を呼んでしまう

次の書き方が複数見られた(教員の答案にも同じ言い間違いがあった)。

✗ このため、「少なくとも1人は女」という確率は 1/3

字義どおり読むと \(P(\text{少なくとも1人は女}) = 1/3\) になる。 だが実際は \(P(\text{少なくとも1人は女}) = 3/4\) である。1/3 なのは別のものだ。

○ 「少なくとも1人は女」という条件のもとで、「2人とも女」である確率が 1/3

これは今日いちばん危ない言い間違い

条件付き確率には条件と知りたいことの2つが入っている。 片方の名前だけで呼ぶと、どちらを指しているのか分からなくなる。

今日の検査の例でいえば、「陽性の確率は50%」と書くと間違いになる。 50%なのは「陽性という条件のもとで、病気である確率」であって、 陽性になる確率そのものは約2%である。

③ 記号の書き方・事象の立て方

書かれていたこと 直し方
\(P(A/B)\) と書いた 条件付き確率は \(P(A\mid B)\)。縦棒は割り算ではない
\(A\)=「授業をとっている人(100人)」と定義した \(A\)・\(B\) は出来事(事象)。人の集まりではない。「指名された人が履修者である」のように書く
「それぞれ 1/4」を書かなかった 4通りが等確率だからこそ、3通りに絞って 1/3 になる。等確率でなければこの計算はできない
「従属だから因果関係がある」と読める書き方 従属は「一方を知るともう一方の確率が変わる」だけ。原因かどうかは問わない(第10回で扱う)

第3回につながること

今日は \(P(\text{病気}\mid\text{陽性})\) と \(P(\text{陽性}\mid\text{病気})\) の取り違えが主題になる。 ①の「分母をどこに取るか」と②の「条件の名前で呼んでしまう」は、 どちらもこの取り違えと同じ構造である。第2回で引っかかった人は、今日も同じ場所で迷う。


1. 直感クイズ ―― 検査が陽性、あなたは病気か?

性能のとても良い検査がある。

  • 感度 \(P(\text{陽性}\mid\text{病気})\):99%
  • 特異度 \(P(\text{陰性}\mid\text{健康})\):99%

この病気は 100人に1人(有病率1%) がかかる。あなたは検査で 陽性 になった。

問い:あなたが本当に病気である確率は?

直感は「99%の精度だから99%くらい」と答える。だが正解は 約50% である。 検査の性能が低いのではない。50%という数字は、この有病率1%のもとでの答えであって、 「どんな病気でも五分五分」でも「検査が当てずっぽうと同じ」でもない(有病率を変えると下の第3節のように大きく変わる)。

自然頻度で考えるとわかる(100万人を検査)

人数 うち陽性
病気の人(1%) 10,000 9,900(真陽性)
健康な人(99%) 990,000 9,900(偽陽性)

陽性になった 19,800 人のうち、本当に病気なのは 9,900 人。だから

\[P(\text{病気}\mid\text{陽性}) = \frac{9{,}900}{19{,}800} = 50\%\]

病気の人はそもそも少ないので、「健康なのに誤って陽性」の人が「本当に病気で陽性」と同じだけ出てしまう。検査の精度(99%)と陽性的中率(50%)はまったく別の数字だ。

今日の最重要ポイント

直感は \(P(\text{陽性}\mid\text{病気})=99\%\) を \(P(\text{病気}\mid\text{陽性})=99\%\) と取り違える。これは第2回でやった 条件付き確率の「向き」の混同そのもの。\(P(A\mid B)\) と \(P(B\mid A)\) は別物だった。


2. ベイズの定理

いまの計算を式にすると、ベイズの定理 になる。

\[\underbrace{P(H\mid D)}_{\text{事後確率}} = \frac{\overbrace{P(D\mid H)}^{\text{尤度}}\;\overbrace{P(H)}^{\text{事前確率}}}{P(D)}\]
要素 意味 検査の例
事前確率 \(P(H)\) データを見る前の信念 有病率 1%
尤度 \(P(D\mid H)\) その仮説のもとでデータが出る確率 感度 99%
事後確率 \(P(H\mid D)\) データを見た後に更新した信念 陽性的中率 50%

記号の対応(この回でずっと使う)

  • \(H\) … 仮説(hypothesis)。この例では「病気である」
  • \(\bar{H}\) … その否定。「健康である」
  • \(D\) … 観測されたデータ(data)。この例では「検査が陽性」

検査の3つの数値は、この記号ではこう書ける。

検査の用語 記号 値
感度 \(P(D\mid H)\) 0.99
特異度 \(P(\bar{D}\mid\bar{H})\) 0.99
偽陽性率 \(P(D\mid\bar{H}) = 1-\text{特異度}\) 0.01

特異度は「健康な人を陰性と正しく言える確率」なので、健康な人が陽性になる確率は その余事象、つまり \(1-\) 特異度 \(=0.01\) になる。

さっきの計算を、そのまま定理に当てはめる

第1節で手計算した 100 万人の表は、ベイズの定理の部品そのものだった。 どの数字が式のどこに入るのかを、ひとつずつ対応させてみる。

式の部品 100万人の表のどこか 値
事前確率 \(P(H)\) 病気の人 10,000 ÷ 100万 \(0.01\)
尤度 \(P(D\mid H)\) 病気で陽性 9,900 ÷ 病気 10,000 \(0.99\)
分母 \(P(D)\) 陽性になった人 19,800 ÷ 100万 \(0.0198\)

あとは代入するだけである。

\[P(H\mid D) \;=\; \frac{P(D\mid H)\,P(H)}{P(D)} \;=\; \frac{0.99 \times 0.01}{0.0198} \;=\; \frac{0.0099}{0.0198} \;=\; 0.5\]

この式は、第1節でやった割り算と同じことをしている。

  • 分子 \(0.99 \times 0.01 = 0.0099\) に 100万を掛けると 9,900人(真陽性)
  • 分母 \(0.0198\) に 100万を掛けると 19,800人(陽性になった人ぜんぶ)
\[\frac{0.0099}{0.0198} \quad\Longleftrightarrow\quad \frac{9{,}900 \text{人}}{19{,}800 \text{人}}\]

違うのは 人数で書くか、割合で書くか だけだ。 ベイズの定理は新しい計算を持ち込んだのではなく、 「陽性の人のうち、本当に病気の人はどれだけか」という同じ問いを、記号で書き直したものである。

分母の 0.0198 はどこから来たのか

有病率 1% と感度 99% は問題文に書いてあるが、\(P(D)=0.0198\) はどこにも書いていない。 これは自分で作る数字である。陽性になる道は

  • 病気で陽性になる … \(0.99 \times 0.01 = 0.0099\)
  • 健康なのに陽性になる … \(0.01 \times 0.99 = 0.0099\)

の2つしかないので、足して \(0.0198\)。この作り方が下の 導出② である。 ベイズの定理でいちばん手間がかかるのは、この分母を組み立てるところだと思っておくとよい。

ベイズの定理=データで信念を更新する計算。 事前 1% が、陽性というデータで 50% に更新された。

導出①:ベイズの定理は、定義を2通りに書いただけ

第2回の条件付き確率の定義を、2つの向きで書いてみる。

\[P(H\mid D) = \frac{P(H\cap D)}{P(D)}, \qquad P(D\mid H) = \frac{P(H\cap D)}{P(H)}\]

どちらにも同じ \(P(H\cap D)\) が現れている。2本目を \(P(H\cap D)\) について解くと \(P(H\cap D)=P(D\mid H)\,P(H)\)。これを1本目に代入すれば、

\[P(H\mid D) = \frac{P(D\mid H)\,P(H)}{P(D)}\]

これがベイズの定理である。「定理」という名前がついているが、やったことは条件付き確率の定義を2通りに書いて、共通部分を消しただけで、新しい原理は何も使っていない。

第2回で「\(P(A\mid B)\) と \(P(B\mid A)\) は別物だ」と学んだ。ベイズの定理は、その続きとして「では両者はどう関係しているのか」に答えている。向きを逆にするには、事前確率 \(P(H)\) を掛けて \(P(D)\) で割ればよい ―― それだけのことである。

使った数学:条件付き確率の定義(第2回)と、式の代入(算数)。

導出②:分母 \(P(D)\) を開くと、偽陽性が姿を現す

分母の \(P(D)\) は「陽性になる確率」である。陽性になる道は2つしかない。本当に病気で陽性になるか、健康なのに誤って陽性になるか。この2つは重ならず、これで全部を尽くす。だから足せばよい(全確率の公式)。

\[P(D) = \underbrace{P(D\mid H)\,P(H)}_{\text{真陽性}} \;+\; \underbrace{P(D\mid \bar{H})\,P(\bar{H})}_{\text{偽陽性}}\]

数値を入れる。感度 \(P(D\mid H)=0.99\)、有病率 \(P(H)=0.01\)。特異度が 99% なので、健康な人が誤って陽性になる確率はその余事象で \(P(D\mid\bar{H})=1-0.99=0.01\)(偽陽性率)。

\[P(D) = 0.99\times 0.01 \;+\; 0.01\times 0.99 = 0.0099 + 0.0099 = 0.0198\]

2つの項が ぴったり同じ大きさ になっている。したがって

\[P(H\mid D) = \frac{0.99\times 0.01}{0.0198} = \frac{0.0099}{0.0198} = \frac{1}{2}\]

上の自然頻度の表にある 9,900 と 9,900、合計 19,800 は、この式の各項に 100 万を掛けただけのものである。式と表は同じ計算をしている。

ここに基準率の誤謬の正体がある。偽陽性の 率 は 1% と小さい。しかしそれが掛かる相手(健康な人)は 99% と多い。小さい率 × 大きい人数 が、大きい率 × 小さい人数 に追いついてしまう。率だけを見て、その率が掛かる相手の大きさを見ないと、判断を誤る。

使った数学:全確率の公式(場合分けして足す)と、掛け算・割り算。


3. 基準率を動かすと、答えは激変する

同じ性能(感度99%・特異度99%)の検査でも、病気の珍しさ(基準率) が変われば陽性的中率はまるで違う。

有病率(基準率) 陽性的中率 \(P(\text{病気}\mid\text{陽性})\)
0.01% 1.0%
0.1% 9.0%
1% 50.0%
10% 91.7%
50% 99.0%

検査の性能は何も変わっていないのに、珍しい病気ほど陽性的中率は低い。直感がこれを外すのは、基準率(その事象がもともとどれくらい起こりやすいか)を無視するから ―― これを 基準率の誤謬(base rate fallacy) と呼ぶ。

応用が効く

迷惑メール判定、防犯カメラの顔認証、まれな不正の検知 ―― すべて同じ罠がある。「精度99%のAIが警告した」と聞いても、対象がもともと稀なら、警告の大半は誤検知かもしれない。

導出③:オッズで書くと、分母 \(P(D)\) が消える

「病気 \(H\)」と「健康 \(\bar{H}\)」の2つの仮説について、ベイズの定理をそれぞれ書き、比を取る。分母はどちらも同じ \(P(D)\) なので、割り算で消えてしまう。

\[\frac{P(H\mid D)}{P(\bar{H}\mid D)} \;=\; \frac{P(D\mid H)}{P(D\mid \bar{H})} \;\times\; \frac{P(H)}{P(\bar{H})}\]

言葉にすると、こうなる。

\[\text{事後オッズ} \;=\; \text{尤度比} \;\times\; \text{事前オッズ}\]

検査の例で確かめる。事前オッズは \(0.01/0.99 = 1/99\)。尤度比は 感度 ÷ 偽陽性率 で \(0.99/0.01 = 99\)。掛け合わせると

\[\text{事後オッズ} = \frac{1}{99}\times 99 = 1\]

オッズ 1 は「病気と健康が五分五分」、確率に直すと \(1/(1+1)=1/2\)。導出②と同じ答えが、割り算ひとつで出た。

この形の利点は、2つの効き方が分離して見えることである。検査の性能は 尤度比 としてだけ効き、病気の珍しさは 事前オッズ としてだけ効く。前節の表で「検査の性能は何も変わっていないのに答えが激変する」のは、尤度比 99 を据え置いたまま、事前オッズだけを動かしているからである。

逐次更新は、尤度比を掛け続けるだけ

この形なら、次節の逐次更新も一行で書ける。検査を2回受けて2回とも陽性なら、尤度比をもう一度掛ければよい。

\[\text{事後オッズ} = \frac{1}{99}\times 99 \times 99 = 99\]

確率に直すと \(99/100 = 99\%\)。1回目の陽性では五分五分だったものが、2回目で 99% になる。「今日の事後は明日の事前」とは、オッズに尤度比を掛け足していくことである。

ただしこれは、2回の検査が 同じ真の状態のもとで条件付きに独立 であること、つまり

\[P(D_2\mid H, D_1)=P(D_2\mid H), \qquad P(D_2\mid \bar{H}, D_1)=P(D_2\mid \bar{H})\]

が成り立つことを使っている。「病気かどうかが決まっていれば、1回目の結果は2回目の出方に影響しない」という意味である。

注意したいのは、\(D_1\) と \(D_2\) そのものは独立ではないことである。1回目が陽性なら病気の可能性が上がり、 したがって2回目も陽性になりやすい(\(P(D_2\mid D_1) > P(D_2)\))。独立なのは「\(H\) を固定したとき」だけである。

この条件付き独立が崩れる例がある。同じ検体を同じ方法で二度測れば、1回目に誤らせた原因(検体の取り方、試薬の癖)が 2回目にも同じように効くので、\(H\) を固定しても2回の結果は連動する。そのときこの掛け算はできない(第2回)。

使った数学:ベイズの定理を2回書いて割り算(算数)。オッズと確率の変換 \(p = o/(1+o)\)。


4. 逐次更新 ―― 今日の事後は、明日の事前

ベイズの真価は、データが来るたびに信念を更新できること。今日の事後確率を明日の事前確率として使い、新しいデータでまた更新する。

例:あるコインの「表が出る確率 \(p\)」を当てたい。最初は何も分からない(一様な事前)。投げるたびに信念がどう締まるかをColabで見る。

数学的には、事前を \(\mathrm{Beta}(a,b)\) にすると、表 \(k\) 回・裏 \(n-k\) 回の観測で事後は \(\mathrm{Beta}(a+k,\;b+n-k)\) になる(共役事前)。

03_bayes.ipynb では、真の値 \(p=0.7\) のコインを投げ続けると、事後分布が回数とともに 0.7 の周りに締まっていく様子が見える。 グラフの横軸は「未知の表確率 \(p\) の候補」、縦軸はその候補あたりの 確からしさ(密度) で、ある区間の 下の面積 が その区間に \(p\) が入る確率を表す。最初(0回)は真っ平らで、「\(p\) について何も分からない」状態を表している。 なお \(p=0.7\) はデータを作る側だけが知っている値であり、推定には観測した表・裏の回数しか使っていない。

「毎回かならず真値に近づく」のではない

Colabの乱数では、事後平均は 5回後 0.714 → 20回後 0.773 → 100回後 0.696 と動く。 20回後のほうが、5回後より真値 0.7 から離れている。計算の誤りではなく、標本のばらつきである。

言えるのは「このモデルが正しく、データが十分にあれば、真値の付近を絞り込める」であって、 「観測を増やすたびに必ず近づく」ではない。また一様な事前も「無知の唯一の表現」ではなく、今回置いた設定である。

それでも、長い目で見れば事前の思い込みはデータに押し流されていく。これが 学習 の数理的な姿だ。

第12〜13回では逆に、人々が互いを真似て 同じ情報ばかり を見ると、集団の信念が間違った方向に固まる(情報カスケード)。 問題は「依存したデータでは更新できない」ことではない。もとは1つの情報を、独立した別々の証拠だと思って重複して数えてしまうことである。 上の導出③で尤度比を2回掛けられたのは、2回の検査が条件付き独立だったからであって、同じ噂を10人から聞いても尤度比を10回掛けてはいけない。


今日のまとめ

用語 意味
ベイズの定理 \(P(H\mid D)=\dfrac{P(D\mid H)\,P(H)}{P(D)}\)。データで信念を更新する
事前 / 尤度 / 事後 見る前の信念 / データの出やすさ / 更新後の信念
基準率の誤謬 事象のもともとの珍しさ(基準率)を無視する誤り
陽性的中率 \(P(\text{病気}\mid\text{陽性})\)。検査の精度とは別物

今日の課題(Moodle提出)

配点:100点(選択40点 + 記述60点)/ 提出先:Moodle / 提出期限:次回授業の開始時刻まで

第3回のColabノート 03_bayes.ipynb を上から実行し、結果を見たうえで答えること。


パートA:選択問題(各10点 ×4=40点)

A1. 感度99%・特異度99%の検査で、有病率が 1%(100人に1人) の病気のとき、陽性と出た人が本当に病気である確率(陽性的中率)に 最も近い のは?

  • (ア) 約 1% (イ) 約 50% (ウ) 約 99%

A2. A1で陽性的中率が検査の精度(99%)より大きく下がる 主な理由 は?

  • (ア) 検査の機械の誤差が大きいから
  • (イ) 病気の人がもともと少ない(基準率が低い)ため、健康な人から出る偽陽性が、真陽性と同じくらいの人数になるから
  • (ウ) 陽性的中率は常に50%になると決まっているから

A3. ベイズの定理 \(P(H\mid D)=\dfrac{P(D\mid H)P(H)}{P(D)}\) で、事前確率 にあたるのはどれか?

  • (ア) \(P(H)\)(データを見る前の信念)
  • (イ) \(P(D\mid H)\)(尤度)
  • (ウ) \(P(H\mid D)\)(事後確率)

A4. 検査の例で、直感が「陽性なら99%病気だ」と誤るのは、2つの確率を混同しているからである。取り違えているペアとして正しいのは?

  • (ア) \(P(\text{陽性}\mid\text{病気})\) と \(P(\text{病気}\mid\text{陽性})\) を取り違えている
  • (イ) 事前確率と尤度が等しいと思い込んでいる
  • (ウ) 感度と特異度を取り違えている

パートB:記述問題(AIフィードバック対象・60点)

B1.(30点) 感度99%・特異度99%という高性能の検査でも、有病率が1%の病気では陽性的中率が約50%にしかならない。なぜそうなるのか を、150〜250字程度で説明しなさい。次の2点に必ず触れること。

  1. 「基準率(有病率)」という言葉を使い、なぜ偽陽性が無視できないほど出るのか
  2. 直感が外す原因を、第2回で学んだ「条件付き確率の向き」と結びつけて

B2.(30点) ベイズの定理は「データで信念を更新する」道具だった。あなた自身の経験で、最初の思い込み(事前)が、新しい情報(データ)によって更新された例を1つ挙げ、次の2点を書きなさい。

  1. 最初どう思っていたか(事前)、どんな情報を得て(データ)、どう考えが変わったか(事後)
  2. もし「基準率(もともとの起こりやすさ)」を考えていれば、最初の思い込みは違っていたか

文字数の目安:B1・B2あわせて 300〜500字。コピペ・引き写しは評価しない。自分の言葉で書くこと。

字数は目安です。多少の過不足で減点はしません。見るのは、設問が挙げた要素(上の箇条書き)が書けているかどうかです。ただし要素が抜けていれば、その分は引きます。

次回予告

第4回「離散確率分布:二項分布・ポアソン分布」。「コインを10回投げて7回表。イカサマ?」 ―― 独立な試行を \(n\) 回くりかえすと、結果はどんな分布になるか。第2回で定義した「独立」が、分布の前提として効いてくる。