本文へスキップ
用語解説確率

全確率の公式

ある事象の確率を、原因ごとの条件付き確率と事前確率の重み付き和で計算する公式。ベイズの定理の分母や機械学習の周辺尤度(evidence)の計算原理。

全確率の公式とは、ある事象の確率を、原因ごとの条件付き確率事前確率の重み付き和で計算する公式です。

定義

全確率の公式を使うには、まず標本空間 Ω\Omega(起こりうるすべての結果の集合)を、互いに「重ならない」かつ「合わせると全体を覆う」事象の列 {Ai}\{A_i\} で分割する必要があります。この条件を完全分割(partition)と呼びます。完全分割には 2 つの要件があります。排反(どの 2 つも同時に起こらない)と、網羅性(いずれかは必ず起こる)の両方が必要で、片方だけでは公式は成り立ちません。

完全分割が確認できたとき、任意の事象 BB の確率は次式で計算できます。

P(B)=iP(BAi)P(Ai)P(B) = \sum_{i} P(B \mid A_i) \, P(A_i)

ここで、P(Ai)P(A_i) は「原因 AiA_i がそもそも起こる確率」(事前確率)、P(BAi)P(B \mid A_i) は「原因 AiA_i のもとで結果 BB が起こる条件付き確率」、i\sum_i は和記号(すべての原因について足し合わせる操作)です。

実務でよく使われる 2 事象版(原因が AAAcA^c の 2 種類)は次の形になります。

P(B)=P(BA)P(A)+P(BAc)P(Ac)P(B) = P(B \mid A) P(A) + P(B \mid A^c) P(A^c)

AcA^cAA の余事象(AA が起こらない場合)です。また、AA が連続確率変数で密度関数 f(a)f(a) を持つ場合は、和が積分に変わります。

P(B)=P(BA=a)f(a)daP(B) = \int P(B \mid A = a) \, f(a) \, da

これは離散版の「原因ごとに分けて足す」操作を、原因を無限に細かく区切った極限として書き換えたものです。

性質

  • 事前確率で重みづけた条件付き確率の平均: P(BAi)P(B \mid A_i) に「原因 AiA_i の起こりやすさ P(Ai)P(A_i)」を掛けて足すので、事前確率が大きな原因の寄与が大きくなる
  • 完全分割でないと成立しない: 排反性のみ(重ならないが全体を覆わない)では、BB が起こる経路を見落とす。網羅性のみ(全体を覆うが重なりがある)では、同じ場合を 2 度足してしまう。2 つの要件が同時に満たされないと等号は成立しない
  • 同時確率の「周辺化」そのもの: iP(BAi)=P(B)\sum_i P(B \cap A_i) = P(B) という関係は「同時確率AiA_i の軸で足し上げて BB周辺確率を得る」操作。機械学習文脈では「sum rule」と呼ばれる
  • ベイズの定理の分母を作る: ベイズの定理 P(AB)=P(BA)P(A)/P(B)P(A \mid B) = P(B \mid A)P(A)/P(B) の分母 P(B)P(B) の標準的な計算手段は全確率の公式であり、P(B)P(B) を「展開して計算可能にする」役割を果たす

視覚的に見る

1×11 \times 1 の正方形で全体(確率 1.0)を表し、縦軸で AA(病気あり)と AcA^c(病気なし)に分割します。P(A)=0.3P(A) = 0.3 なので左帯の横幅が 0.30.3、右帯が 0.70.7 です。各帯をさらに BB(検査陽性)と BcB^c(検査陰性)に横分割すると 4 つのセルが現れます。全確率の公式は「青い BB セルの面積を 2 枚足す」操作です。

全確率の公式: 矩形の縦帯分解(P(A)=0.3, P(B|A)=0.8, P(B|A^c)=0.2)病気&陽性0.24病気&陰性0.06健康&陽性0.14健康&陰性0.56A(病気 0.3)A^c(健康 0.7)

青い 2 セル(病気&陽性、健康&陽性)が「検査陽性 BB」の全体面積です。左の青セルは「病気帯の横幅 0.30.3」×「感度 0.80.8」= 0.240.24、右の青セルは「健康帯の横幅 0.70.7」×「偽陽性率 0.20.2」= 0.140.14 です。これを足すと P(B)=0.24+0.14=0.38P(B) = 0.24 + 0.14 = 0.38。この計算がまさに全確率の公式 P(B)=P(BA)P(A)+P(BAc)P(Ac)P(B) = P(B \mid A)P(A) + P(B \mid A^c)P(A^c) の形です。

各セルの面積は「事前確率 P(Ai)P(A_i)(帯の横幅)」×「条件付き確率 P(BAi)P(B \mid A_i)(帯内での陽性の割合)」の積です。AiA_i ごとの「帯」に分けて面積を計算し、最後に BB が占める帯を集計する。この縦帯分解が全確率の公式の幾何的な意味です。

実世界での使われ方

医療検査の陽性率計算では、集団全体での検査陽性率を有病率・感度・偽陽性率から計算する標準手順に全確率の公式が使われています。有病率(P(病気)P(\text{病気}))を事前確率、感度(病気があって陽性になる確率)と偽陽性率(病気がないのに陽性になる確率)を条件付き確率として代入します。厚生労働省の新型コロナウイルス感染症に関する検査での陽性率の解釈も、この構造を暗黙に使っています。有病率が低い局面では P(BAc)P(Ac)P(B \mid A^c) P(A^c) の項(健康者の偽陽性)が P(B)P(B) を大きく引き上げるため、陽性率だけで病気の確率を判断できない理由がここから出てきます。

機械学習の周辺尤度evidenceの計算にも全確率の公式が直接登場します。ベイズ的モデル選択では P(データ)=P(データθ)P(θ)dθP(\text{データ}) = \int P(\text{データ} \mid \theta) P(\theta) \, d\theta の形で周辺尤度を計算します。これは連続版の全確率の公式であり、パラメータ θ\theta のすべての可能性で「データの生成確率×パラメータの事前分布」を足し上げる操作です。Bishop『パターン認識と機械学習』第 1 章では sum rule として位置づけており(Cambridge University Press 公式ページ)、モデル間の比較(ベイズ因子)の分母を構成するために計算します。scikit-learn の ナイーブベイズ実装(sklearn.naive_bayes) も内部でこの周辺化を行っており、クラス事前確率 P(Ck)P(C_k) と条件付き尤度 P(xCk)P(\mathbf{x} \mid C_k) の積和で予測確率を正規化しています。

隠れマルコフモデル(HMM)とカルマンフィルタでは、観測データの周辺尤度を計算するときに隠れ状態 xtx_t のすべての可能性で足し上げる操作が必要になります。音声認識では音素の状態列(隠れ状態)を、観測された音声フレームから推定しますが、その途中で P(観測)=状態列P(観測状態列)P(状態列)P(\text{観測}) = \sum_{\text{状態列}} P(\text{観測} \mid \text{状態列}) P(\text{状態列}) の形の周辺化が不可欠です。国立情報学研究所(NII)の音声研究でも HMM の forward アルゴリズムとして実装されており、各ステップが全確率の公式の繰り返し適用です。

金融の信用リスク管理では、ポートフォリオ全体のデフォルト確率を「マクロシナリオ」ごとの条件付きデフォルト率とシナリオ確率の重み付き和で計算します。景気後退シナリオ・ベースシナリオ・好況シナリオを {Ai}\{A_i\} として完全分割し、各シナリオ下でのデフォルト率 P(デフォルトAi)P(\text{デフォルト} \mid A_i) をシナリオ確率 P(Ai)P(A_i) で重みづけして合算します。BIS(国際決済銀行)の信用リスク計測フレームワーク文書(BCBS d307)でも同じ構造が期待損失(EL)計算の基礎として示されており、シナリオ分析とポートフォリオ管理の土台になっています。

深掘り

周辺化の一般原理

全確率の公式は、同時確率から周辺確率を得る操作の最も基本的な形です。確率変数 XXYY を考えると、Y=yY = y となる周辺確率は次のように書けます。

P(Y=y)=xP(Y=yX=x)P(X=x)P(Y = y) = \sum_x P(Y = y \mid X = x) \, P(X = x)

これは「XX という変数を消去して YY だけの分布を得る」操作で、周辺化marginalization)と呼ばれます。機械学習文脈で「sum rule」と呼ばれているのと同じ操作です。関心のない変数(ここでは XX)を確率の重み P(X=x)P(X = x) で足し上げることで、その変数が存在しないかのように振る舞う周辺分布を得ます。連続版では sum が integral に変わるだけで、構造は同じです。

ベイズの定理の分母としての役割

ベイズの定理を使って「検査陽性なら病気の確率は?」を計算するとき、分母に全確率の公式が登場します。

P(AB)=P(BA)P(A)P(B)=P(BA)P(A)iP(BAi)P(Ai)P(A \mid B) = \frac{P(B \mid A) P(A)}{P(B)} = \frac{P(B \mid A) P(A)}{\sum_i P(B \mid A_i) P(A_i)}

分母 P(B)P(B)全確率の公式で展開すると、「分子の P(BA)P(A)P(B \mid A) P(A) を全体 P(B)P(B) で割る」という正規化の操作になります。この P(B)P(B)正規化定数、ベイズ的文脈では周辺尤度marginal likelihood)またはevidence とも呼ばれます。P(B)P(B) を計算しないと、ベイズの定理の右辺は確率として和が 1 にならないため、全確率の公式はベイズ計算において欠かせない計算要素です。

条件付き期待値の塔型公式への拡張

全確率の公式には期待値版があります。確率変数 YY期待値 E[Y]E[Y] は、事象 {Ai}\{A_i\} を使って次のように分解できます。

E[Y]=iE[YAi]P(Ai)E[Y] = \sum_i E[Y \mid A_i] \, P(A_i)

これをさらに一般化すると、確率変数 XX で条件づけた条件付き期待値の「塔型公式」(law of total expectation)になります。

E[Y]=E[E[YX]]E[Y] = E\bigl[E[Y \mid X]\bigr]

内側の E[YX]E[Y \mid X]XX の値ごとに計算した条件付き期待値(これ自体が XX の関数)、外側の E[]E[\cdot] はそれを XX の分布で平均します。stats-18 で扱う条件付き期待値の核となる公式で、ファイナンスの動的計画法(Bellman 方程式)や確率制御の基礎でもあります。

関連する用語

この用語を扱う本編記事

よくある誤解

「完全分割」の片方の要件だけを満たせば全確率の公式が使えると誤解するケースがあります。排反性のみ(重ならないが全体を覆わない)では、BB が起こるルートの一部が {Ai}\{A_i\} のどれにも含まれないため、\sum_i P(B \cap A_i) < P(B) となって等号が成立しません。網羅性のみ(全体を覆うが重なりがある)では、重なり部分の P(BAi)P(B \cap A_i) を 2 回以上足してしまうため \sum_i P(B \cap A_i) > P(B) になります。排反性と網羅性の両方が揃って初めて等号が成立します。

もう一つの典型的な誤りは、P(B)=P(BA)+P(BAc)P(B) = P(B \mid A) + P(B \mid A^c)事前確率を掛けずに条件付き確率を足す計算です。P(BA)=0.8P(B \mid A) = 0.8P(BAc)=0.2P(B \mid A^c) = 0.2 を足すと 1.01.0 になりますが、これは P(B)=1.0P(B) = 1.0 を意味せず誤りです。条件付き確率は「原因が与えられたときの確率」であり、それぞれの原因の起こりやすさ P(Ai)P(A_i) で重みづけしてから足さないと、全体の確率にはなりません。