論文一覧に戻る 📚 用語集トップ 🗺 概念マップ
📚 用語解説
📚 用語解説
条件付き確率
Conditional Probability
確率論基礎

🔖 キーワード索引

30秒結論 文脈ボックス 直感 🎮 触って理解 数式・定義 数式読解 実値計算 Python実装 ベイズの定理 独立性 落とし穴 関連手法 応用 関連用語 グループ教材 FAQ 概念マップ

💡 30秒で分かる結論

🍰 まずはやさしく

条件を付けて確率を変える方法です。

全体の範囲を絞って計算するために使います。

特定の県だけに絞って人口の変化を見ます。

計算方法と便利な公式について読みましょう。

📍 文脈ボックス — あなたが今見ているもの

🍰 まずはやさしく

確率論のとても重要な中心部分です。

高度な分析や予測の基礎にするために使います。

スマホのアプリなどの判定にも使われています。

関連する用語や前提となる知識を確認しましょう。

あなたは 「確率論の中心」 にいる用語ページを見ています。 条件付き確率は 仮説検定 の p 値、 ロジスティック回帰 の出力、 機械学習 の事後分布、 すべての基礎です。

上位概念確率 / 確率測度
同列概念同時確率 / 周辺確率 / 独立性
下位応用ベイズの定理 / 条件付き期待値 / マルコフ性
前提知識集合 / 確率の公理 / 平均

🎨 直感で掴む

🍰 まずはやさしく

ヒントを得て予想を書き換えることです。

新しい情報で確率を更新するために使います。

雨が降った日に傘を差す確率で考えます。

分母が変わる仕組みをイメージで掴みましょう。

サイコロを 1 回振る。 出た目が 偶数 だと教えられたとき、 「6 が出た確率」は? 普通なら 1/6 ですが、 偶数(2, 4, 6)に絞られたので 1/3 になります。 これが条件付き確率です。 追加情報で確率が更新される 現象を表します。

「全体集合の縮小」と考えると分かりやすい:イベント B が分かったので、 私たちはもう「全 6 通り」を見ているのではなく、 「B に含まれる通り」だけを見ている。 その中で A が起こる割合が $P(A|B)$ です。

日常例:「雨が降った日(B)」のうち「傘を差した日(A)」が 80% なら $P(A|B)=0.8$。 雨が降っていない日も含めた全日のうち「雨も傘もあり」は $P(A \cap B)$ で、 これを「雨の日 $P(B)$」で割って $0.8$ となります。

表 1. 直感比較表
表記読み方意味
$P(A)$A の確率何も条件無しでの A の確率
$P(A \cap B)$A かつ B両方同時に起こる確率
$P(A | B)$B のときの A の確率B 起こった条件下での A の確率
$P(A) = P(A|B)$独立条件が無関係

🔢 分割表(2×2)から条件付き確率を読む

条件付き確率のいちばん短い言い換えは、 「標本空間を $B$ に限定して、 確率をもう一度測り直す」です。 全体(47 県)を見るのをやめ、 「$B$ に該当する行だけの小さな世界」に引っ越し、 その中で $A$ の割合を数える。 分母が全体から $B$ に切り替わる ── これが「$/P(B)$」の正体です。 分割表(クロス集計表)を使うと、 この「測り直し」が四則演算だけで見えるようになります。

下表は SSDSE-B-2026(2023 年度、 47 都道府県)の実測です。 事象 $A$=「高齢化率(65 歳以上人口 A1303 ÷ 総人口 A1101)が 30% 以上」、 事象 $B$=「三大都市圏(埼玉・千葉・東京・神奈川・岐阜・愛知・三重・京都・大阪・兵庫・奈良の 11 県)」。 各セルは県数です。

表 A. 三大都市圏ダミー $B$ と高齢化率 30% 以上 $A$ の分割表(実測・県数)
高齢化率≥30% $A$30% 未満 $\bar{A}$行計
三大都市圏 $B$3811
それ以外 $\bar{B}$32436
列計351247

セルから条件付き確率を読む:条件付き確率は「その行(または列)の中での割合」です。 行で割れば $P(A|B)$、 列で割れば $P(B|A)$ になります。

同じ「3」というセルを、 行の合計 11 で割るか列の合計 35 で割るかで、 $P(A|B)=0.273$ と $P(B|A)=0.086$ というまったく別の数が出ます。 これが後で述べる「逆確率の誤謬」の発生源です。 分割表を描いて「いま自分は行で割っているのか列で割っているのか」を指さし確認するだけで、 大半の取り違えは防げます。

✖️ 乗法定理:同時確率はどちらの向きからでも組み立てられる

定義式 $P(A|B)=P(A\cap B)/P(B)$ を移項すると 乗法定理 $P(A\cap B)=P(B)\,P(A|B)=P(A)\,P(B|A)$ になります。 「同時に起こる確率は、 片方の周辺確率にもう片方の条件付き確率を掛ければよい」という組み立ての公式です。 上の表で確かめると、 同時確率 $P(A\cap B)=3/47\approx 0.064$ に対して:

$$P(B)\,P(A|B)=\tfrac{11}{47}\times\tfrac{3}{11}=\tfrac{3}{47}\approx 0.064,\qquad P(A)\,P(B|A)=\tfrac{35}{47}\times\tfrac{3}{35}=\tfrac{3}{47}\approx 0.064$$

左右どちらの経路でも同じ 0.064 に着地します。 この「経路によらず同時確率は一意」という対称性 $P(B)P(A|B)=P(A)P(B|A)$ こそ、 ベイズの定理 を生む種です。

➕ 全確率の定理:条件付き確率を重み付き平均すると周辺確率に戻る

標本空間を排反な塊 $\{B,\bar{B}\}$ に分けると、 周辺確率 $P(A)$ は各塊での条件付き確率を、 その塊の大きさで重み付き平均したものに一致します(全確率の定理)。 表の数字で確認すると:

$$P(A)=P(A|B)\,P(B)+P(A|\bar{B})\,P(\bar{B})=0.273\times\tfrac{11}{47}+0.889\times\tfrac{36}{47}\approx 0.745$$

たしかに $35/47\approx 0.745$ に戻りました。 注意したいのは、 「全体の高齢化率 74.5%」は、 都市圏 27.3% と非都市圏 88.9% の単純平均(58%)ではない点です。 非都市圏が 36 県と多数派なので、 重み付き平均は非都市圏側に強く引っ張られます。 「全体の割合」を各グループの割合の単純平均だと思い込むのは典型的な誤りで、 全確率の定理は「必ず母集団構成比で重み付けよ」と教えてくれます。 この重み付き分解は 交絡・層別解析・後述のシンプソンのパラドックスを理解する土台になります。

関連ページ: ベイズの定理 ベン図 確率の定義 交絡(同時確率・独立性の専用ページは未整備のため本ページ内で解説)

🎮 触って理解する

標本空間を「面積 1 の正方形」に見立てた モザイク図 です。 左列が事象 $B$、 右列が $\bar{B}$。 各列の中で緑色の高さが「その列に条件付けたときの $A$ の割合」= $P(A|B)$・$P(A|\bar{B})$。 スライダーを動かすか、 図の 縦線・横線を指やマウスでドラッグ すると、 面積と数値がリアルタイムに更新され、 $P(A|B)=P(A\cap B)/P(B)$ が正確に計算されます。

🎚 面積を変える(縦線=Bの幅、 各列の横線=Aの高さもドラッグ可)
0.40
0.70
0.30
A ¬A
📊 リアルタイム計算
P(B) = 0.40
P(A) = 0.46 (条件なし・事前確率)
P(A∩B) = 0.28
P(A|B) = P(A∩B)/P(B) = 0.70
P(A|¬B) = 0.30
P(B|A) = 0.61 (ベイズで逆向き)
P(A|B) − P(A) = +0.24 (0なら独立)

🧠 この図で掴む直感

B の幅(縦線)を狭めても、 B 列の中で緑(A)が占める高さの割合= $P(A|B)$ はすぐには変わりません。 変わるのは緑の絶対面積 $P(A\cap B)$ の方です。 条件付き確率は「面積そのもの」ではなく「縮小した標本空間の中での割合」だと体感できます。 「Bで条件付け」にチェックすると右の $\bar{B}$ 側が薄くなり、 標本空間が B 列だけに縮む様子が見えます。

⚠️ よくある落とし穴:$P(A|B)\neq P(B|A)$

「Bで条件付け」した $P(A|B)$ と、 逆向きの $P(B|A)$ は別物です。 図を動かすと両者がまったく違う値で動きます。 両者が一致するのは $P(A)=P(B)$ のときだけ。 検事の誤謬・基準率の誤謬は、 すべてこの取り違えが原因です。 逆向きが欲しいときは必ずベイズの定理 $P(B|A)=P(A|B)\,P(B)/P(A)$ で変換します(読み出し欄の P(B|A) がその値)。

🚀 発展:独立と「高さの差」=予測力

「独立にする」ボタンは $P(A|\bar{B})$ を $P(A|B)$ に揃えます。 すると左右の列で A の高さが同じ= B を知っても A の確率が変わらない状態、 これが 独立 $P(A|B)=P(A)$。 逆に左右の高さの差が大きいほど、 B は A の強い予測子です。 この「高さの差」こそ ロジスティック回帰 や決定木が使っている情報であり、 情報理論では相互情報量として定量化されます。

関連ページ: ベイズの定理 ベン図 確率の定義 相関 情報エントロピー

📐 数式または定義

🍰 まずはやさしく

条件付き確率を数式で表したものです。

正確な値を計算するために使います。

サイコロの目などの確率を式に当てはめます。

基本の式とベイズの定理について学びましょう。

事象 $B$ ($P(B)>0$) が起こったときの事象 $A$ の条件付き確率:

$$P(A | B) = \frac{P(A \cap B)}{P(B)}$$

乗法定理(積の公式):

$$P(A \cap B) = P(B) P(A|B) = P(A) P(B|A)$$

ベイズの定理:

$$P(A | B) = \frac{P(B | A) P(A)}{P(B)}$$

全確率の定理(分割 $\{B_i\}$ が $\Omega$ を覆い、 互いに排反):

$$P(A) = \sum_{i} P(A | B_i) P(B_i)$$

独立性の定義:

$$A \perp B \iff P(A \cap B) = P(A) P(B) \iff P(A|B) = P(A)$$

条件付き期待値:

$$E[Y | X = x] = \int y \cdot p(y | x) \, dy$$

📐 測度論的定式化(厳密版)

コルモゴロフの公理化に基づく厳密な定義では、 確率空間 $(\Omega,\mathcal{F},P)$ 上で、 事象 $B\in\mathcal{F}$、 $P(B)>0$ のとき、 条件付き確率 $P(\cdot|B)$ を集合関数 $A\mapsto P(A\cap B)/P(B)$ として定義します。 これは新しい確率測度になります(公理の検証可能)。

$P(B)=0$ の場合(例:連続確率変数の点値)は、 条件付き期待値 をラドン-ニコディム微分として定義し、 そこから条件付き確率を導出します。 これが「正則条件付き確率」(regular conditional probability)の理論。 大学院確率論の中心テーマで、 統計学・確率過程論・確率制御理論の基盤です。

実用上、 大半のデータサイエンスは離散事象または密度関数で扱えるので、 測度論の深淵に踏み込む必要はありません。 しかし「条件付け方をどう厳密化するか」を考えるとき、 上記の枠組みが背景にあることは知っておいて損はないです。

⛓ 確率過程・マルチンゲールへの応用

時系列 $\{X_t\}$ で「時刻 $t$ までの情報フィルトレーション $\mathcal{F}_t$ が与えられた条件下での $X_{t+1}$ の期待値」を $E[X_{t+1}|\mathcal{F}_t]$ と書きます。 これが 条件付き期待値。 そして $E[X_{t+1}|\mathcal{F}_t]=X_t$ を満たす過程が マルチンゲール。 株価モデル・ベルマン方程式・確率最適化に多用される基本概念。

SSDSE のような年次パネルデータでも、 「過去年データから来年の人口減少率を予測する」というタスクは、 暗に条件付き期待値 $E[Y_{t+1}|Y_1,\ldots,Y_t,X_t]$ を推定しています。 機械学習で「予測モデル」と呼ぶものは、 ほぼすべてこの条件付き期待値の関数形を学習しています。

📊 情報理論との関係:条件付きエントロピー・相互情報量

条件付き確率は 情報理論 でも中心。 条件付きエントロピー $H(Y|X)=-\sum_{x,y} P(x,y)\log P(y|x)$ は「$X$ を知ったあとに残る $Y$ の不確実性」。 相互情報量 $I(X;Y)=H(Y)-H(Y|X)$ は「$X$ を知ることで $Y$ について得られる情報量」。

SSDSE-B-2026(2023 年度)で $X$=都市圏ダミー、 $Y$=高消費ダミー(消費支出 L3221 が 47 県中央値以上)とすると、 実測で $H(Y)\approx 1.00$ bit(ほぼ最大)、 $H(Y|X)\approx 0.96$ bit、 相互情報量 $\approx 0.04$ bit。 つまり「都市圏かどうかを知ると、 高消費かどうかの不確実性が 4% 程度下がる」と読めます。 この量はピアソン相関係数の 非線形版 として機能し、 機械学習の特徴量選択にも用いられます。

🔗 同カテゴリ(確率論)の用語

📖 さらに学ぶための文献・教材

❓ FAQ(追加版)

Q. $P(A|B,C)$ と $P(A|B\cap C)$ は同じ?
A. はい、 記法の違い。 「$B$ と $C$ の両方を条件とする」を意味し、 値は $P(A\cap B\cap C)/P(B\cap C)$。 ベイジアンネットワーク文献では前者、 確率論の教科書では後者を好む傾向。
Q. 条件付き期待値と条件付き確率はどう違う?
A. 条件付き確率 $P(A|B)$ は「$B$ のもとで $A$ が起こる確率」、 条件付き期待値 $E[Y|X]$ は「$X$ のもとでの $Y$ の平均値」。 連続変数の場合は条件付き期待値の方がよく使う(点確率がゼロのため)。
Q. ベイズの定理と条件付き確率は同じことを言っている?
A. ベイズの定理は条件付き確率の 変形公式。 同時確率の対称性 $P(A\cap B)=P(B\cap A)$ から $P(A|B)P(B)=P(B|A)P(A)$ が出る、 それを変形しただけ。 ただし「事前 × 尤度 / 証拠 = 事後」というベイズ的解釈は強力で、 単なる代数操作以上の意味を持つ。
Q. なぜ機械学習では条件付き確率が中心?
A. 機械学習の目的は「入力 $x$ から出力 $y$ を予測」。 これは確率的には $P(y|x)$ の推定です。 分類器の出力が確率になっているのもこの理由。 回帰なら $E[y|x]$ を推定。
Q. 統計データ解析コンペで条件付き確率を使う場面は?
A. 「都道府県別」「年度別」「性別・年代別」など、 属性で層別した分析 がそのまま条件付き確率の計算です。 SSDSE-B-2026 の 47 都道府県を地方ブロックで条件付けて出生率・消費支出・人口を比較するのが典型的な使い方。

🎯 ページ全体のまとめ

🌍 応用カタログ:12 領域での条件付き確率

領域使い方代表式
医療診断検査結果に基づく疾患確率$P(\text{病気}|\text{陽性})$
金融信用スコア・デフォルト確率$P(\text{倒産}|\text{財務指標})$
保険事故発生確率の階層モデル$P(\text{事故}|\text{年齢, 走行距離})$
マーケティング購買確率・解約予測$P(\text{購買}|\text{ユーザ属性})$
気象降水確率予報$P(\text{雨}|\text{気圧, 湿度})$
自然言語処理次単語予測 $P(w_t|w_{1:t-1})$n-gram
画像認識クラス確率出力$P(\text{猫}|\text{画素})$
推薦システム商品クリック確率$P(\text{クリック}|\text{履歴})$
疫学感染確率・実効再生産数$P(\text{感染}|\text{接触})$
政策評価介入効果の推定$P(Y|do(X))$
スポーツ分析勝利確率推定$P(\text{勝利}|\text{状況})$
教育評価合格確率・項目応答理論$P(\text{正答}|\text{能力})$

📐 重要等式の証明

全確率の公式

$$P(A)=\sum_i P(A|B_i)P(B_i)\quad\text{ただし}\{B_i\}\text{は標本空間の分割}$$

証明:$A=A\cap\Omega=A\cap(\cup_i B_i)=\cup_i (A\cap B_i)$。 $\{A\cap B_i\}$ は互いに素なので、 $P(A)=\sum_i P(A\cap B_i)=\sum_i P(A|B_i)P(B_i)$。 □

ベイズの定理

$$P(B_i|A)=\frac{P(A|B_i)P(B_i)}{\sum_j P(A|B_j)P(B_j)}$$

証明:$P(B_i|A)=P(A\cap B_i)/P(A)=P(A|B_i)P(B_i)/P(A)$。 分母に全確率の公式を代入。 □

連鎖律

$$P(A_1,A_2,\ldots,A_n)=\prod_{i=1}^n P(A_i|A_1,\ldots,A_{i-1})$$

証明:定義 $P(A|B)=P(A\cap B)/P(B)$ から $P(A\cap B)=P(A|B)P(B)$。 帰納的に $n$ 個に拡張。 □

🔬 数式を言葉で読み解く

記号意味具体例
$A, B$事象「人口減少県」「政策実施」
$A \cap B$共通部分両方が起こる
$P(B)$B の周辺確率分母(新しい全体集合)
$P(A|B)$B 条件下の A更新された確率
$P(A)$事前確率何も知らないときの確率
$P(B|A)$尤度A 起こったとき B が起こる確率

ベイズの定理は 「事前 × 尤度 = 事後(正規化定数で割る)」。 「A は理論的にどれくらいあり得るか」(事前) と「A なら B はどれくらい説明できるか」(尤度) を掛け、 周辺確率 $P(B)$ で正規化して「B を見たあとの A の確率」(事後) を得ます。

🔬 応用事例

📌 一目で復習

🔬 数式を言葉で読み解く(拡張・500 字超の精読)

公式 $P(A|B)=\dfrac{P(A\cap B)}{P(B)}$ を、 数学的にも実務的にも誤解しないために 記号一つひとつを言葉で訳す 訓練をしましょう。 ここでは 500 字を超える精読を行います。

まず分子 $P(A\cap B)$ は 「$A$ と $B$ が 同時 に起こる確率」。 「かつ」を意味する $\cap$(cap, 帽子)は、 集合論では共通部分。 ここに来る数字は、 ベン図で言うと「2 つの円が重なった部分の面積」。 SSDSE-B-2026(2023 年度、 2018 年度比)で 「人口減少」かつ「三大都市圏」の県を数えれば、 47 県中 8 県、 $P(A\cap B)=8/47\approx 0.170$ が同時確率の実例。

次に分母 $P(B)$。 これは 条件として与えた事象の周辺確率 で、 上の例なら「三大都市圏である確率」$=11/47\approx 0.234$。 計算の上で重要なのは、 この分母が 新しい「全体集合」 として機能する点。 つまり、 「$B$ が起こった世界の中で $A$ が起こる頻度」を考えるとき、 全体は「四角形」ではなく「$B$ の円」に切り替わる。 だから割り算で 視野を縮める 操作になるわけです。

そして左辺の $P(A|B)$ は 「$B$ が起こったと 知った後 の $A$ の確率」。 縦棒 $|$(given)の右に書かれた事象が条件、 左が興味の対象。 これを読み間違えると逆確率になる典型的な誤りで、 たとえば「がん検診で陽性のとき、 実際にがんである確率」(=$P(\text{がん}|\text{陽性})$) を「がんの人が陽性になる確率」(=$P(\text{陽性}|\text{がん})$) と混同してしまうのが医学統計でしばしば話題になる「ベイズ定理の罠」です。

右辺の割り算 $\dfrac{P(A\cap B)}{P(B)}$ は 「同時確率を条件側の周辺確率で正規化する」 と読み解きます。 「正規化」とは、 $\sum_a P(A=a|B)=1$ を保つために行うスケール調整。 これにより、 縮小された世界($B$ の中)でも確率の総和が 1 になる。 ベイズの定理 $P(A|B)=P(B|A)P(A)/P(B)$ もこの正規化思想の派生で、 分子 $P(B|A)P(A)$ は「$A$ が真でかつ $B$ が起こる事前的確率」、 分母 $P(B)$ は「$A$ の真偽にかかわらず $B$ が起こる確率」── 両者の比率が「$B$ を見たあとの $A$ の確からしさ」。

最後に注意点:分母 $P(B)=0$ のとき条件付き確率は 定義されない。 「観測されない事象に条件付ける」は数学的に意味を持たないので、 観測サンプルが極端に少ない条件付けでは 推定の不安定性 に注意。 ベイズ的に言えば「事前確率がゼロのものは事後もゼロ」── これがゼロ確率トラップ。 SSDSE のような小規模データで稀な事象を条件付けると、 推定がノイズに左右されます。

🔬 数式を言葉で読み解く($P(A|B) = P(A\cap B)/P(B)$ を 47 県データで分解する)

条件付き確率の定義式 $P(A|B) = P(A \cap B) / P(B)$ は、 「分母を全体集合から事象 $B$ に絞り直し、 分子をその中で $A$ も起きた割合に置き換える」操作を表す。 言葉で言えば「世界の見え方を $B$ が起きた世界に縮める」ことであり、 SSDSE-B-2026 で言えば「47 県全体を母集団とする世界」から「人口 200 万人以上の県だけの世界」に縮める、 といった視点切り替えに対応する。 この縮め方の感覚をつかめば、 ベイズの定理・条件付き独立・グラフィカルモデルがすべて同じ「世界の縮小」操作の組み合わせだと見えてくる。

記号の対応を逐語訳すると: $A$ = 注目したい事象(例: 「高齢化率が全国平均より高い県」)、 $B$ = 条件として与える事象(例: 「人口減少率がワースト 10 の県」)、 $A \cap B$ = 両方を同時に満たす県、 $P(\cdot)$ = 47 県中の割合(一様分布を仮定)、 $P(A|B)$ = 条件付き確率($B$ を満たす県の中で $A$ も満たす割合)。 単純な割り算だが、 分母 $P(B)$ がゼロに近づくと数値が不安定になる、 標本サイズが小さい層で計算するとブレが大きい、 など実務上の罠は多い。

このコードでやること: SSDSE-B-2026(2023 年度)から人口 (A1101) と高齢人口 (A1303 65 歳以上) を取り、 「高齢化率 32% 以上」を事象 $A$、 「総人口下位 15 県」を事象 $B$ として $P(A|B)$ を計算する。 比較として無条件確率 $P(A)$ も並べ、 リフト $P(A|B)/P(A)$ で「条件付けによる確率上昇」を可視化する。

📥 入力データ (SSDSE-B-2026 抜粋・都道府県別人口・高齢人口):

Prefecture A1101(総人口) A1303(高齢人口) 高齢化率 = A1303/A1101 北海道 5092000 1681000 0.330 青森県 1184000 417000 0.352 ... 東京都 14086000 3205000 0.228 ... 沖縄県 1468000 350000 0.238
 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
import pandas as pd

df = pd.read_csv('data/raw/SSDSE-B-2026.csv', encoding='cp932', skiprows=[1])
# 2023 年度の 47 都道府県に絞る
df = df[df['SSDSE-B-2026'] == 2023]
df = df.rename(columns={'A1101': 'pop_total', 'A1303': 'pop_elderly'})
df['aging_rate'] = df['pop_elderly'] / df['pop_total']
A = df['aging_rate'] >= 0.32
B = df['pop_total'].rank(ascending=True) <= 15
P_A = A.mean()
P_B = B.mean()
P_AB = (A & B).mean()
P_A_given_B = P_AB / P_B if P_B > 0 else float('nan')
lift = P_A_given_B / P_A
print(f"P(A)       = {P_A:.3f}  (高齢化率 32% 以上の県の割合)")
print(f"P(B)       = {P_B:.3f}  (人口下位 15 県の割合)")
print(f"P(A and B) = {P_AB:.3f}")
print(f"P(A|B)     = {P_A_given_B:.3f}")
print(f"lift       = {lift:.2f} 倍")

📤 実行すると次の出力が得られる(SSDSE-B-2026・2023 年度の実測値):

P(A) = 0.489 (高齢化率 32% 以上の県の割合) P(B) = 0.319 (人口下位 15 県の割合) P(A and B) = 0.234 P(A|B) = 0.733 lift = 1.50 倍 → 人口下位 15 県では 7 割超が高齢化率 32% 以上。 全国の 48.9% より 1.5 倍多い。

💬 結果の読み方: $P(A|B) = 0.733$ は「人口の少ない県 15 県の中では、 高齢化率 32% 以上の県が 73% を占める」という意味。 無条件確率 $P(A) = 0.489$ と比較するとリフト 1.50 倍。 これは「人口減少 → 高齢化加速」という社会構造的因果の片鱗を可視化したものであり、 ただし因果と相関は区別が必要(人口減少を生む別要因が同時に高齢化も加速させている可能性も残る)。 条件付き確率を分母 $P(B)$ で割るだけで、 47 県全体では見えなかった層別の濃度が浮き彫りになる。

補足 1(分母の罠): $P(B)$ が小さいほどサンプル数が薄く、 計算結果のブレが大きくなる。 SSDSE-B-2026 のように $N=47$ の小標本では、 $P(B) < 0.1$(4 県未満)の条件付けは信頼区間が広く、 単一の県の入れ替えで $P(A|B)$ が大きく動く。 ベイズ流の補正(事前分布 Beta(1,1) の Bayesian smoothing)を導入すると安定化できる。

補足 2(独立性の検査): $P(A|B) = P(A)$ なら $A$ と $B$ は独立。 上の例ではリフト 1.50 倍なので明確に独立ではない。 リフトが 1.0 から離れるほど依存が強く、 機械学習の特徴量設計においては「ターゲットに対するリフトの高い条件」を抽出することがそのまま「強い予測子」を見つける作業に対応する。 関連用語の ベイズの定理独立性相互情報量 も同じ語彙体系の中にある。

補講: 条件付き確率は「絞り込み」「層別」「ベイズ更新」「予測モデルの出力」のすべてに通底する概念であり、 機械学習の分類器は最終的に $P(\text{class}|\text{features})$ を推定する装置と見做せる。 つまり、 ロジスティック回帰・ニューラルネット・GBDT のすべては「条件付き確率の関数近似器」である。 この視点に立つと、 キャリブレーション(出力確率の校正)・閾値最適化・コスト感度学習がすべて「条件付き確率の意思決定への翻訳」として統一的に扱える。 SSDSE-B-2026 を題材に $P(A|B)$ の手計算を 1 度でも実体験しておくと、 後続の機械学習が一気に理解しやすくなる。

🔬 数式を言葉で読み解く(条件付き確率の応用)

条件付き確率 $P(A|B) = \dfrac{P(A \cap B)}{P(B)}$ という式は、 一見シンプルだが、 その背後には「観測した情報によって不確実性をどう更新するか」という、 統計学・機械学習・意思決定理論の根本問題が凝縮されている。 ここでは、 SSDSE-B-2026 を題材に、 条件付き確率から派生する 3 つの重要な定理(ベイズの定理・全確率の定理・条件付き独立性)を、 数式を言葉に翻訳しながら丁寧に解きほぐす。 それぞれの定理は、 単独の数式として暗記するのではなく「絞り込み・分解・更新」という具体的な操作として体得することが、 後続の機械学習理解の土台になる。

📐 ベイズの定理: 原因と結果を入れ替える

ベイズの定理は、 条件付き確率の定義から機械的に導かれる、 だが応用範囲が極めて広い式である。

$$P(A|B) = \frac{P(B|A) \cdot P(A)}{P(B)}$$

この式を「言葉」で読むと、 次のような物語になる。 「観測値 $B$ を見たあとに、 仮説 $A$ がどれだけ尤もらしいか(事後確率 $P(A|B)$)」を知りたいとき、 それは「仮説 $A$ が真だとしたときに観測値 $B$ がどれだけ出やすいか(尤度 $P(B|A)$)」に「仮説 $A$ そのものの事前確率 $P(A)$」を掛けて、 全体の正規化定数 $P(B)$ で割れば得られる、 という構造である。 つまり、 ベイズの定理は「原因 $\to$ 結果」の確率(尤度)と「結果 $\to$ 原因」の確率(事後確率)を入れ替える橋渡しの式と理解できる。

SSDSE-B-2026(2023 年度)の文脈で考えてみる。 ある県が「人口 200 万人以上($A$)」かどうかを、 「一般診療所数 (I5102) が全国中央値以上($B$)」という観測から推測する。 事前に何の情報もなければ、 ある県が人口 200 万人以上($A$)である確率は 47 県中 16 県 = $P(A) \approx 0.34$ である。 ここで、 「一般診療所数が全国中央値以上」という追加情報 $B$ を得ると、 人口 200 万人以上である事後確率 $P(A|B)$ は $16/24 \approx 0.67$ まで上昇する。 これは、 ベイズの定理が「観測値 $B$(多い診療所数)を見ることで、 仮説 $A$(人口 200 万人以上)への信念が事前 0.34 から事後 0.67 へ更新された」ことを表現している。 この「信念の更新」がベイズ統計学・ベイジアンネットワーク・ナイーブベイズ分類器の根幹をなす。

📐 全確率の定理: 場合分けで分解する

全確率の定理は、 「ある事象 $B$ の周辺確率を、 排反な場合分け $\{A_1, A_2, \ldots, A_n\}$ を介して計算する」ための式である。

$$P(B) = \sum_{i=1}^{n} P(B|A_i) \cdot P(A_i)$$

この式を言葉に直すと、 「事象 $B$ が起きる確率は、 すべての場合分け $A_i$ について『$A_i$ が起きてかつ $A_i$ の下で $B$ が起きる確率』を足し合わせたもの」となる。 たとえば SSDSE-B-2026 で、 「ある県が出生率上位($B$)である確率」を計算したいとする。 県を「3 大都市圏($A_1$)」「地方中核市($A_2$)」「地方郡部($A_3$)」に排反に分けると、 全確率の定理は次の形になる: $P(B) = P(B|A_1)P(A_1) + P(B|A_2)P(A_2) + P(B|A_3)P(A_3)$。 つまり、 「全体の出生率上位の割合」は、 「各地域類型の中での出生率上位の割合」を、 「地域類型の構成比」で重み付けた加重平均として表せる。

この発想は、 機械学習の「アンサンブル学習」「混合モデル」「期待値最大化(EM)アルゴリズム」のすべてで暗黙裡に使われている。 特に、 ガウシアン混合モデル(GMM)における「各クラスタの寄与の重ね合わせ」は、 まさに全確率の定理を連続変数版に拡張したもの $p(x) = \sum_k \pi_k \cdot \mathcal{N}(x|\mu_k, \Sigma_k)$ である。 言い換えれば、 GMM は「観測値 $x$ の確率密度を、 各クラスタの寄与の総和に分解する全確率の定理マシン」と見做せる。

📐 条件付き独立性: ナイーブベイズの土台

2 つの事象 $A$ と $C$ が「事象 $B$ の下で条件付き独立」とは、 $P(A \cap C | B) = P(A|B) \cdot P(C|B)$ が成り立つことを言う。 言葉に翻訳すると「$B$ という情報を知った後では、 $A$ と $C$ は互いに無関係になる」という意味である。 これは「$B$ が $A$ と $C$ の両方の共通原因(交絡因子)」である場合によく成り立つ条件で、 $B$ で層別すると見せかけの相関が消える、 という現象として現れる。

身近な例を挙げると、 「アイス消費量($A$)」と「水難事故件数($C$)」は全体としては正の相関を示す。 だが、 「気温が高い時期である($B$)」という条件を付け加えると、 $A$ と $C$ の関係は弱まる。 これは、 アイスと水難の共通原因が「気温($B$)」であり、 気温で層別すると見せかけの相関が消えるという、 因果推論の基本原理を体現している。 ナイーブベイズ分類器は、 この「特徴量同士はクラスラベルの下で条件付き独立」という仮定を大胆に置くことで、 高次元の入力でも実用的な確率計算を可能にしている。

📊 図解: 条件付き確率の 3 つの顔

散布図: 総人口と一般診療所数の関係
図 1: 総人口 (A1101) と一般診療所数 (I5102) の散布図(SSDSE-B-2026、2023 年度、47 都道府県、相関係数 $r \approx 0.97$)。 「診療所数が中央値以上」という条件で県を絞ると人口の大きい県が残りやすい。 実測では $P(\text{人口 200 万人以上}|\text{診療所数中央値以上}) = 16/24 \approx 0.67$ で、 無条件の $P(\text{人口 200 万人以上}) = 16/47 \approx 0.34$ より大きく、 条件付けによる確率の更新をこの散布図の強い正の関係が裏付けている。
ヒストグラム: 総人口の分布
図 2: 47 都道府県の総人口 (A1101、2023 年度) の分布。 中央値は約 155 万人で、 最小の鳥取県(約 54 万人)から最大の東京都(約 1409 万人)まで右に長い裾を持つ。 条件付き確率では、 この全体分布を出発点に、 「三大都市圏のみ」「診療所数が中央値以上のみ」のように条件で絞った部分集合の分布(条件付き分布)を考える。 条件の付け方しだいで、 残る県の人口分布は全体分布と大きく異なる形になる。
箱ひげ図: クラスタ別の一般診療所数の条件付き分布
図 3: KMeans クラスタリングで分けた県グループごとの一般診療所数 (I5102) の箱ひげ図。 各箱は条件付き分布 $P(\text{診療所数}|\text{クラスタ})$ を表す。 どのクラスタに属するかを条件付けるだけで、 分布の位置(中央値)も広がり(四分位範囲)も大きく変わることがわかる。

🧮 数値で確認: ベイズ更新を SSDSE-B-2026 で実演

観測ステップ追加情報事前 $P(A)$尤度 $P(B|A)$事後 $P(A|B)$
初期情報なし0.340 (16/47)0.340
Step 1一般診療所数 (I5102) $\geq$ 中央値0.3401.000 (16/16)0.667 (16/24)
Step 2+ 着工新設住宅戸数 (H1800) $\geq$ 中央値0.6670.938 (15/16)0.682 (15/22)
Step 3+ 延べ宿泊者数 (G7101) $\geq$ 中央値0.6820.933 (14/15)0.778 (14/18)

仮説 $A$ = 「人口 200 万人以上」。 数値はすべて data/raw/SSDSE-B-2026.csv(2023 年度、 47 都道府県)からの実測値。 各ステップの尤度は直前までの条件を満たす県の中で新しい条件も満たす割合 $P(B_k|A, B_1,\ldots,B_{k-1})$、 事後は条件をすべて満たす県の中で $A$ も満たす割合。

このように、 観測情報が増えるごとに事後確率が単調に更新されていく様子は、 ベイズ学習・カルマンフィルタ・粒子フィルタなどの逐次推定アルゴリズムの根幹である。 重要なのは、 各ステップで「前ステップの事後確率」が「次ステップの事前確率」になるという再帰構造である。 この構造を「ベイズ的更新の連鎖」と呼び、 オンライン学習・強化学習・適応制御のすべてに通底する。

✅ 理解度チェック(3 問)

Q1. SSDSE-B-2026(2023 年度)で、 ある県が「人口 200 万人以上」である確率は $P(A) = 16/47 \approx 0.340$。 「延べ宿泊者数 (G7101) が全国上位 1/3(16 県)」という条件 $B$ の下では、 該当する県の 13/16 = 0.813 が人口 200 万人以上だった。 このとき、 リフト値 $\dfrac{P(A|B)}{P(A)}$ を計算せよ。
(答え: $0.813/0.340 \approx 2.39$ 倍。 つまり「延べ宿泊者数上位 1/3」という情報は、 「人口 200 万人以上」を見つける手がかりとして無情報の場合の 2.39 倍効果的)

Q2. 「気温($B$)」が共通原因のとき、 「アイス消費($A$)」と「水難事故($C$)」は条件付き独立になる。 では、 $P(A \cap C) = 0.30$, $P(A) = 0.50$, $P(C) = 0.40$ のとき、 $A$ と $C$ は周辺独立か?
(答え: $P(A) \cdot P(C) = 0.50 \times 0.40 = 0.20 \neq 0.30$ なので周辺独立ではない。 条件 $B$ で層別したときにのみ独立になる「条件付き独立」の典型例)

Q3. 全確率の定理の練習問題(数値は練習用の仮想設定であり、 SSDSE-B-2026 の実測値ではない)。 ある地域群を「3 大都市圏(構成比 0.13)」「地方中核圏(0.32)」「地方郡部(0.55)」の 3 層に分け、 各層での「高齢化率 30% 以上」該当率がそれぞれ 0.10、 0.35、 0.65 と与えられたとき、 全体確率を求めよ。
(答え: $0.10 \times 0.13 + 0.35 \times 0.32 + 0.65 \times 0.55 = 0.013 + 0.112 + 0.358 = 0.483$。 なお実際の SSDSE-B-2026・2023 年度では高齢化率 30% 以上は 35/47 ≈ 0.745 であり、 層の切り方と該当率の設定次第で全体確率が大きく変わることも確認できる)

これら 3 問はいずれも「条件付き確率の数式を、 言葉と数値の両面で操れるか」を確認する基本問題である。 数式を見て即座に「これは絞り込み・分解・更新のどれを行っているか」と分類できれば、 ベイズ統計・確率的グラフィカルモデル・機械学習の確率モデルへの理解が一段深まる。 SSDSE-B-2026 という 47 県の小さな表でも、 ベイズの定理・全確率の定理・条件付き独立性のすべてが具体的に検証できる、 という体験こそが、 この用語ページの最大の価値である。

🧭 条件付き確率を発表で使う時の補強ノート

条件付き確率で最も大事なのは、 分母となる条件を明示することです。 「高齢者のうち医療資源が多い県の割合」と「医療資源が多い県のうち高齢者比率が高い割合」は、 同じ変数を使っていても意味が逆になります。 統計データ解析コンペでは、 地域、 年、 年齢階層、 産業分類、 世帯類型のどれで条件を置いたかを図表のタイトルに書くと、 聴き手が確率の向きを誤読しません。

例えば SSDSE-B-2026 で「人口が多い県では病院数も多い」と言うだけなら相関の話です。 しかし「人口が上位25%の県に限ったとき、 一人当たり病院数が全国中央値を上回る確率」を見ると、 条件付き確率になります。 条件を置くことで、 大都市という交絡をある程度そろえた比較ができ、 単純な割合よりも分析の問いに近づきます。

表現分母分子読み方
P(A|B)Bに該当する対象Bの中でAも満たす対象Bと分かった後でAを見る
P(B|A)Aに該当する対象Aの中でBも満たす対象Aと分かった後でBを見る
P(A∩B)全対象AとBを同時に満たす対象同時発生の割合を見る

報告では、 条件を一つ変えた感度分析も有効です。 例えば「人口上位25%」を「上位33%」や「三大都市圏」に変えても結論が同じなら、 条件の切り方に依存しにくい主張になります。 逆に結論が変わるなら、 その分析は条件定義に敏感であり、 強い一般化は避けるべきです。 条件付き確率は、 条件を置くことで解釈が鋭くなる一方、 条件の選び方で結論が変わるため、 必ず分母、閾値、対象期間を併記します。

最後に、 条件付き確率は因果効果ではありません。 「BのときAが多い」は、 BがAを引き起こしたという意味ではなく、 Bで層化した集団内でAの割合が高いという記述です。 因果を主張したい場合は、 時間順序、交絡、介入可能性、対照群を追加で検討します。 この区別を明示できると、 条件付き確率を使ったコンペ発表は、 単純なクロス集計から一段深い分析に見えます。

もう一つの実践上の注意は、 条件付き確率を小さな分母で計算したときの不安定さです。 47都道府県をさらに地域、年齢階層、産業構成で細かく分けると、 ある条件に該当する対象が数県だけになることがあります。 その状態で「該当率が80%」と書いても、 実際には5県中4県という偶然に近い結果かもしれません。 発表では割合だけでなく、 分母の件数、信頼区間、別の条件で再計算した結果を添えると、 条件付き確率がどの程度安定しているかを説明できます。

分析メモでは、 条件を置いた理由も残しておくとよいです。 「人口上位県に限る」のか、 「三大都市圏を除く」のか、 「高齢化率が高い県に限る」のかによって、 同じ病院数や学校数の解釈は変わります。 条件は単なる計算上のフィルタではなく、 比較したい集団を定義する操作です。 そのため、 条件付き確率の表には、 条件設定の目的、閾値の根拠、除外した対象、代替条件での結果を短く書き添えると、 聴き手が「なぜその分母なのか」を追いやすくなります。

最後のチェックとして、 条件付き確率は必ず自然文に戻して読んでみます。 $P(A|B)$ を「Bである対象の中でAである割合」と読んだとき、 分母と分子が資料中の表と一致していれば、 式と説明がつながっています。 逆に、 自然文にすると違和感がある場合は、 条件の向き、集計単位、対象期間、欠損値処理のどこかにずれがあります。 この読み替えを徹底するだけで、 ベイズの定理やリフト値を使った説明でも、 数式だけが浮いてしまう失敗をかなり防げます。

発表前の読み替え演習

発表前には、 代表的な条件を三つ選び、 それぞれについて「全体割合」「条件付き割合」「条件を逆にした割合」を並べます。 例えば、 全体で医療資源が多い県の割合、 高齢化率が高い県に限った医療資源の割合、 医療資源が多い県に限った高齢化率の割合を比較します。 この三つを並べると、 条件を置くことで何が変わったのか、 逆向きに読むとどこが誤解されるのかが見えます。

特に質疑応答では、 「それは単に人口が多い県の話ではないか」や「地方だけで見ても同じか」と問われます。 その場で慌てないために、 主張の中心になる条件付き確率については、 人口規模別、地域ブロック別、都市圏の有無別に計算した補助表を用意しておきます。 本文にすべて載せる必要はありませんが、 補助表があるだけで、 条件設定が恣意的でないことを説明できます。

条件付き確率は、 図にすると理解されやすくなります。 分母となる集団を淡い色で囲み、 分子となる対象を濃い色で塗るだけでも、 $P(A|B)$ の向きが視覚化されます。 ベン図やモザイク図を使う場合も、 どちらの領域を分母にしているかを凡例で明示します。 数式、表、自然文、図の四つが同じ方向を指していれば、 聴き手は条件付き確率を安心して読めます。

最後に、 条件付き確率は結論を強く見せるための道具ではなく、 比較対象を明確にするための道具です。 条件を細かくすれば割合は大きく見えることがありますが、 分母が小さくなるほど偶然の影響も増えます。 そのため、 強い主張をする時ほど、 分母件数、代替条件、外れ値の影響、欠損値の扱いを同時に示します。 この姿勢を守ると、 条件付き確率は発表の説得力を高めるだけでなく、 誠実な不確実性の提示にもつながります。

具体的なチェック手順としては、 まず集計表の各セルに件数を入れ、 次に行方向の割合と列方向の割合を別々に計算します。 行割合は「その条件の中で何が起きたか」を示し、 列割合は「その結果を持つ対象がどこから来たか」を示します。 この二つを混同すると、 政策提案や原因説明が逆向きになります。 発表スライドでは、 どちらの割合を使っているかを表の見出しに入れ、 本文でも同じ向きの言葉で説明します。

また、 条件付き確率を複数比較する時は、 条件の重なりにも注意します。 「高齢化率が高い県」と「人口が少ない県」は独立した条件に見えても、 実際にはかなり重なっている可能性があります。 その場合、 二つの条件付き確率を別々の根拠として並べると、 同じ構造を二重に数えてしまいます。 条件同士の関係をクロス表や相関で確認し、 独立した観点なのか、 同じ現象の別表現なのかを区別します。

条件付き確率の強みは、 直感的な問いにそのまま答えられることです。 「大都市圏に限ると傾向は残るか」「地方部だけで見ると結論は変わるか」「高齢化率が高い県の中で医療資源は足りているか」といった問いは、 すべて条件付き確率で表現できます。 ただし、 問いが明確でないまま条件を増やすと、 結果の解釈はかえって散らかります。 先に比較したい集団を言葉で定義し、 その後に式へ落とす順序が重要です。

🧮 実値で計算してみる(SSDSE-B-2026 都道府県)

47 都道府県のうち、 直近年(2023 年)の特性を分類:

事象を定義:A = 人口減少県、 B = 三大都市圏。

$$P(A) = 43/47 \approx 0.915, \quad P(B) = 11/47 \approx 0.234, \quad P(A \cap B) = 8/47 \approx 0.170$$

$$P(A | B) = \frac{P(A \cap B)}{P(B)} = \frac{8/47}{11/47} = 8/11 \approx 0.727$$

$$P(A | \bar{B}) = \frac{35/47}{36/47} = 35/36 \approx 0.972$$

表 2. 都市圏ダミーと人口減少の分割表
人口減少 A人口増加 $\bar{A}$
三大都市圏 B8311
それ以外 $\bar{B}$35136
43447

「三大都市圏なら 72.7% の確率で人口減少」「地方圏なら 97.2%」と、 条件付け対象によって確率がぐっと変化します。 事前確率 91.5% との差が 都市圏が人口減少を緩和している 統計的証拠です。

ベイズで逆向きに:「人口減少県」のとき「都市圏」確率は?

$$P(B|A) = \frac{P(A|B)P(B)}{P(A)} = \frac{0.727 \times 0.234}{0.915} = 0.186$$

人口減少県の中で都市圏なのは 18.6%。 分割表でも $8/43 \approx 0.186$ で一致。 ベイズの定理の整合性が確認できます。

🧮 SSDSE-B-2026 で 4 シナリオ計算(拡張)

条件付き確率は 何を条件にするか で別物の指標になる、 ということを 4 つの実例で体感します。 すべて data/raw/SSDSE-B-2026.csv から計算可能です。

シナリオ A:「消費支出が中央値以上 | 三大都市圏」

三大都市圏(東京・神奈川・埼玉・千葉・大阪・京都・兵庫・愛知・三重・岐阜・滋賀の 11 県)のうち、 消費支出 (L3221) が 47 県中央値(月 300,652 円)以上の県は 8 県。 $P(\text{高消費}|\text{都市圏})=8/11\approx 0.727$。 一方、 $P(\text{高消費})=24/47\approx 0.511$。 条件付けで 確率が約 1.4 倍に上がる。 都市圏は消費水準の上位区分に偏在します(ただし愛知・大阪・兵庫は中央値未満)。

シナリオ B:「人口あたり診療所数が中央値以上 | 出生率 1.4 以上」

合計特殊出生率 (A4103) が 1.4 以上の県(沖縄・長崎・宮崎・鹿児島など 11 県)のうち、 人口 10 万人あたり一般診療所数 (I5102/A1101) が 47 県中央値(約 85.9 施設)以上の県は 9 県。 $P(\text{診療所多}|\text{高出生率})=9/11\approx 0.818$。 全体の $P(\text{診療所多})=24/47\approx 0.511$ の 1.6 倍。 「出生率の高い県は人口あたりの医療アクセスも厚め」という傾向の数値的根拠。

シナリオ C:「総人口減少 | 高齢化率 30% 以上」

高齢化率 (A1303/A1101) が 30% 以上の県は 35 県、 そのうち 2018 年度から 2023 年度で総人口減少なのは 35 県すべて。 $P(\text{人口減}|\text{高齢化})=35/35=1.000$。 全体の人口減少確率 $P(\text{人口減})=43/47\approx 0.915$ より 8 ポイント超高い。 高齢化と人口減少は強く共起。

シナリオ D:ベイズで逆向き「診療所多 → 高出生率」

$P(\text{高出生率}|\text{診療所多})$ を求めましょう。 $P(\text{診療所多})=24/47\approx 0.511$、 $P(\text{高出生率})=11/47\approx 0.234$。 ベイズで $P(\text{高出生率}|\text{診療所多})=P(\text{診療所多}|\text{高出生率})P(\text{高出生率})/P(\text{診療所多})=0.818\times 0.234/0.511\approx 0.375$。 逆方向の条件付き確率は 0.375(実カウントでも $9/24=0.375$)。 つまり「人口あたり診療所が多い県の 38% が高出生率」。 シナリオ B の 0.818 とは異なる値です。 これは「両者は対称ではない」ことの実例。

表. 4 シナリオの条件付き確率まとめ
シナリオ条件 B対象 A$P(A)$$P(A|B)$
A都市圏高消費0.5110.727
B高出生率診療所多0.5110.818
C高齢化人口減0.9151.000
D診療所多高出生率0.2340.375

🧮 数式に値を入れて手で計算する: 条件付き確率 P(B|A)

合成データで P(A∩B), P(A) から P(B|A) を計算する。

Step 1: 観測度数

イベントカウント確率
A (雨)300.30
B (傘)400.40
A∩B (雨&傘)240.24

全 100 サンプル中

Step 2: 条件付き確率

P(B|A) = P(A∩B)/P(A) = 0.24/0.30 = 0.80 雨の日 80% が傘を持つ 逆: P(A|B) = 0.24/0.40 = 0.60 傘の日 60% は雨

🐍 Python で再現

1
2
3
4
5
pA = 30/100
pB = 40/100
pAB = 24/100
print(f"P(B|A) = {pAB/pA:.3f}")
print(f"P(A|B) = {pAB/pB:.3f}")

📤 実行結果

P(B|A) = 0.800 P(A|B) = 0.600

💬 手計算 (Step 2) 0.80 / 0.60 と Python 出力が完全一致。

🐍 Python 実装

SSDSE-B-2026 で条件付き確率と分割表を計算します。

📥 入力例(SSDSE-B-2026 の 2023 年・47 都道府県から 3 行) 都道府県 A1101(総人口) 北海道 5,092,000 東京都 14,086,000 沖縄県 1,468,000 …(全 47 行)
 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
import pandas as pd
import numpy as np

df = pd.read_csv('data/raw/SSDSE-B-2026.csv', encoding='cp932', skiprows=[1])

# 「人口減少県」を定義 (2018 年度 → 2023 年度で総人口 A1101 が減ったか)
pop_change = df.pivot(index='Prefecture', columns='SSDSE-B-2026', values='A1101')
pop_change['減少'] = (pop_change[2023] < pop_change[2018]).astype(int)

# 「三大都市圏」フラグ
metro = ['東京都','神奈川県','埼玉県','千葉県',
         '大阪府','京都府','兵庫県','滋賀県',
         '愛知県','岐阜県','三重県']
pop_change['都市圏'] = pop_change.index.isin(metro).astype(int)

# 分割表
crosstab = pd.crosstab(pop_change['都市圏'], pop_change['減少'])
print(crosstab)
📤 実行例(実測) 減少 0 1 都市圏 0 1 35 1 3 8
 1
 2
 3
 4
 5
 6
 7
 8
 9
10
# 条件付き確率の計算
n = len(pop_change)
p_A = pop_change['減少'].mean()
p_B = pop_change['都市圏'].mean()
p_AB = ((pop_change['減少']==1) & (pop_change['都市圏']==1)).mean()
p_A_given_B = p_AB / p_B
p_B_given_A = p_AB / p_A
print(f"P(A)={p_A:.3f}, P(B)={p_B:.3f}, P(A∩B)={p_AB:.3f}")
print(f"P(減少|都市圏)={p_A_given_B:.3f}")
print(f"P(都市圏|減少)={p_B_given_A:.3f}")
📤 実行例(実測) P(A)=0.915, P(B)=0.234, P(A∩B)=0.170 P(減少|都市圏)=0.727 P(都市圏|減少)=0.186
1
2
3
4
5
# 独立性のカイ二乗検定
from scipy.stats import chi2_contingency
chi2, pval, dof, exp = chi2_contingency(crosstab)
print(f"χ²={chi2:.3f}, df={dof}, p={pval:.4f}")
# p が小さいと「都市圏フラグと人口減少フラグは独立でない」と判定
📤 実行例(実測) χ²=3.728, df=1, p=0.0535
 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
# ベイズの定理を直接計算 (尤度比形式)
# 例: 合計特殊出生率 (A4103)「高い/低い」と人口「増/減」の関係
latest = df[df['SSDSE-B-2026'] == 2023].set_index('Prefecture')
pop_change['出生率高'] = (latest['A4103'] >= 1.4).astype(int)
ct = pd.crosstab(pop_change['出生率高'], pop_change['減少'])
print(ct)
# P(出生率高 | 人口増)
p_BgA = ct.loc[1, 0] / ct[0].sum()
p_A   = ct[0].sum() / ct.values.sum()
p_B   = ct.loc[1].sum() / ct.values.sum()
p_AgB = p_BgA * p_A / p_B
print(f"P(人口増|出生率高) = {p_AgB:.3f}")
📤 実行例(実測) 減少 0 1 出生率高 0 3 33 1 1 10 P(人口増|出生率高) = 0.091
1
2
3
4
5
# 条件付き期待値: 都市圏/非都市圏ごとの平均出生数 (A4101)
latest = df[df['SSDSE-B-2026'] == 2023].set_index('Prefecture')
latest['都市圏'] = latest.index.isin(metro).astype(int)
print(latest.groupby('都市圏')['A4101'].agg(['mean','std','count']))
# 都市圏の平均出生数 = E[出生数 | 都市圏=1]
📤 実行例(実測) mean std count 都市圏 0 9159.194444 6356.070474 36 1 36139.818182 24476.291238 11
1
2
3
4
5
6
7
8
# ロジスティック回帰で条件付き確率を直接モデル化
from sklearn.linear_model import LogisticRegression
X = latest[['L3221','A4103']].values   # 消費支出・合計特殊出生率
y = latest['都市圏'].values
clf = LogisticRegression().fit(X, y)
print('係数:', clf.coef_, '切片:', clf.intercept_)
# P(都市圏 | 消費支出, 出生率) を予測
print(clf.predict_proba(X)[:5])
📤 実行例(実測) 係数: [[ 4.04040553e-06 -1.42933165e+00]] 切片: [-0.4967408] [[0.69259609 0.30740391] [0.766865 0.233135 ] [0.72082529 0.27917471] [0.68817824 0.31182176] [0.72505329 0.27494671]]

📜 ベイズの定理を深掘り

ベイズの定理は条件の向きを反転する公式:

$$\underbrace{P(H | D)}_{\text{事後}} = \frac{\overbrace{P(D | H)}^{\text{尤度}} \cdot \overbrace{P(H)}^{\text{事前}}}{\underbrace{P(D)}_{\text{周辺}}}$$

医療診断の例:感染率 1% の病気に対し、 検査の感度 99%・特異度 95%。 陽性反応が出たとき本当に感染している確率は?

$$P(\text{感染}|\text{陽性}) = \frac{0.99 \times 0.01}{0.99 \times 0.01 + 0.05 \times 0.99} = 0.167$$

直感とは違い、 陽性でも 17% しか感染確率がない。 これは 基準率の誤謬 (Base Rate Fallacy) として有名。 条件付き確率の罠です。

🔗 独立性と条件付き独立

$A$ と $B$ が 独立 なら、 $B$ を知っても $A$ の確率は変わらない($P(A|B)=P(A)$)。

条件付き独立:$P(A \cap B | C) = P(A|C) P(B|C)$。 「$C$ を知ったうえで $A$ と $B$ は独立」。 ナイーブベイズ分類器、 ベイジアンネットワーク、 マルコフ性などの基礎。

関係表記意味
独立$A \perp B$$P(A|B)=P(A)$
条件付き独立$A \perp B | C$$P(A|B,C)=P(A|C)$
マルコフ性$X_{t+1} \perp X_{時系列で前のみが影響

🐍 Python 拡張:ベイズ計算機

📥 入力例(SSDSE-B-2026 の 2023 年・47 都道府県から 3 行) 都道府県 L3221(消費支出(二人以上の世帯)) 北海道 296,888 東京都 341,320 沖縄県 251,222 …(全 47 行)
 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
# SSDSE-B-2026 都道府県でベイズ更新を実演
import pandas as pd
df = pd.read_csv('data/raw/SSDSE-B-2026.csv', encoding='cp932', skiprows=[1])
latest = df[df['SSDSE-B-2026'] == 2023].reset_index(drop=True)

# 事象定義:A = 消費支出 (L3221) が中央値以上, B = 三大都市圏
metro = {'東京都','神奈川県','埼玉県','千葉県','大阪府','京都府','兵庫県','滋賀県','愛知県','岐阜県','三重県'}
latest['A'] = (latest['L3221'] >= latest['L3221'].median()).astype(int)
latest['B'] = latest['Prefecture'].isin(metro).astype(int)

PA = latest['A'].mean()
PB = latest['B'].mean()
PAB = ((latest['A']==1) & (latest['B']==1)).mean()

print(f"P(A) = {PA:.3f}")
print(f"P(B) = {PB:.3f}")
print(f"P(A∩B) = {PAB:.3f}")
print(f"P(A|B) = {PAB/PB:.3f}")
print(f"P(B|A) = {PAB/PA:.3f}")

# ベイズ更新で検算
post = (PAB/PB) * PB / PA
print(f"ベイズ復元 P(B|A) = {post:.3f}  (期待値 {PAB/PA:.3f})")
📤 実行例(実測) P(A) = 0.511 P(B) = 0.234 P(A∩B) = 0.170 P(A|B) = 0.727 P(B|A) = 0.333 ベイズ復元 P(B|A) = 0.333 (期待値 0.333)

📜 条件付き確率の性質

性質数式意味
非負性$P(A|B) \geq 0$確率の基本
規格化$P(\Omega|B) = 1$B 内の確率合計は 1
加法性$P(A_1 \cup A_2 | B) = P(A_1|B) + P(A_2|B)$ (排反時)確率公理を保つ
補集合$P(\bar{A}|B) = 1 - P(A|B)$B 内での補集合
単調性$A \subseteq C \Rightarrow P(A|B) \leq P(C|B)$部分集合は確率小

条件付き確率自体が 確率測度の公理を満たすので、 一度条件付けてしまえばその後の議論はすべて通常の確率と同じ。 これが条件付き確率の数学的強力さの源です。

🎰 モンティ・ホール問題

3 つのドアのうち 1 つに賞品がある。 あなたが 1 番を選ぶと、 司会者が「ハズレ」の 3 番を開く。 2 番に変更すべきか?

答えは 変更すべき(当選確率が 1/3 → 2/3 に上がる)。 直感に反するが、 条件付き確率で説明可能:司会者が「ハズレを開く」という情報が事後分布を更新する。

$$P(\text{2 番が当たり} | \text{司会者が 3 番開示}) = \frac{P(\text{開示|2 番が当たり}) \cdot 1/3}{P(\text{開示})} = \frac{1 \times 1/3}{1/2} = 2/3$$

この問題は 条件付き確率の罠 として有名で、 学者ですら直感を誤る。 ベイズの定理を機械的に適用するのが安全。

🖼 条件付き確率を図で理解

ベン図で考えると条件付き確率は 「B の中での A の割合」。 標本空間 $\Omega$ を 1m² の正方形と思ったとき、 各事象の面積が確率に対応します:

「条件付ける」=「全体集合を B に縮約する」と覚えるのが直感的です。 確率の世界をズームインしているイメージ。

ツリー図でも表せます。 「最初に B か $\bar{B}$ に分岐 → 各分岐の中で A か $\bar{A}$ に分岐」。 各葉の確率は分岐の条件付き確率の積。 これがチェーンルール。

⛓ 確率のチェーンルール

複数事象の同時確率は、 条件付き確率の積に分解できます:

$$P(A_1, A_2, \dots, A_n) = P(A_1) P(A_2|A_1) P(A_3|A_1,A_2) \cdots P(A_n|A_1,\dots,A_{n-1})$$

この分解は ベイジアンネットワークマルコフ連鎖 の基礎です。 条件付き独立を導入することで右辺が大幅に簡素化されます。

SSDSE-B-2026 の単純な例:「県 → 5 年人口減少 → 高齢化率上昇 → 診療所数減少」というシナリオで、 同時確率は以下のように分解できます。

$$P(\text{県, 減少, 高齢化, 診療所減}) = P(\text{県}) \cdot P(\text{減少|県}) \cdot P(\text{高齢化|減少}) \cdot P(\text{診療所減|高齢化})$$

右側に行くほど直近の事象に条件付けられるマルコフ構造です。

🎭 シンプソンのパラドックスを SSDSE で実感

「三大都市圏では年平均気温と出生率の関係が負になるのに、 地方圏では強い正の相関になる」など、 層別によって関係が変わる現象は SSDSE-B-2026 でも観察できます。 実際、 年平均気温 (B4101) と合計特殊出生率 (A4103) の相関係数(2023 年度)は、 全国一括では +0.50 ですが、 三大都市圏に絞ると −0.44、 地方圏に絞ると +0.73 と符号まで変わります。 全国一括での分析と層別分析は異なる結論を出すので、 必ず複数の条件付け視点で見ることが重要です。

表 3. 層別による相関の変化(SSDSE-B-2026・2023 年度の実測値)
年平均気温 vs 合計特殊出生率の相関
全国 (47 県)+0.50(中程度の正)
三大都市圏 (11 県)−0.44(中程度の負)
地方圏 (36 県)+0.73(強い正)

全国では「気温が高い県=出生率が高い」ように見えるが、 三大都市圏の中だけで見ると負の相関、 地方圏の中では全国よりさらに強い正相関。 これは 都市圏ダミーが交絡変数として隠れているためで、 条件付き確率 $P(\text{出生率高} | \text{気温高}, \text{都市圏})$ のように層を固定して見ることで、 見かけの関係と層内の関係を区別できます。

📊 条件付き分布と回帰の関係

回帰分析は実は条件付き期待値 $E[Y|X=x]$ をモデル化するアルゴリズムです:

$$E[Y | X = x] = f(x) + \text{noise}, \quad Y | X=x \sim p(y|x)$$

線形回帰は $f(x) = \beta_0 + \beta_1 x$ と仮定し、 ロジスティック回帰は $P(Y=1|X=x) = \sigma(\beta_0 + \beta_1 x)$ と仮定する。 すなわち、 あらゆる教師あり学習は条件付き分布 $p(y|x)$ の推定問題です。

モデル条件付き分布の仮定
線形回帰$Y|X \sim \mathcal{N}(\beta^\top X, \sigma^2)$
ロジスティック$Y|X \sim \mathrm{Bernoulli}(\sigma(\beta^\top X))$
ポアソン回帰$Y|X \sim \mathrm{Poisson}(e^{\beta^\top X})$
ニューラルネット$Y|X \sim$ NN 出力の分布

🐍 Python:4 シナリオを一括計算

SSDSE-B-2026 で上記 4 シナリオを一括計算する完全コード。 すべて実在列(A1101, A1303, A4103, L3221, I5102)だけで動きます。

📥 入力例(SSDSE-B-2026 の 2023 年・47 都道府県から 3 行) 都道府県 A1101(総人口) A1303(65歳以上人口) A4103(合計特殊出生率) I5102(一般診療所数) L3221(消費支出(二人以上の世帯)) 北海道 5,092,000 1,681,000 1.06 3,403 296,888 東京都 14,086,000 3,205,000 0.99 14,894 341,320 沖縄県 1,468,000 350,000 1.6 928 251,222 …(全 47 行)
 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
import pandas as pd
import numpy as np

df = pd.read_csv('data/raw/SSDSE-B-2026.csv', encoding='cp932', skiprows=[1])

# 2023 年度の 47 都道府県と 5 年前 (2018 年度) の総人口
latest = df[df['SSDSE-B-2026'] == 2023].reset_index(drop=True)
pop2018 = df[df['SSDSE-B-2026'] == 2018].set_index('Prefecture')['A1101']

# 三大都市圏ダミー
big_city = ['東京都','神奈川県','埼玉県','千葉県','大阪府','京都府','兵庫県','愛知県','三重県','岐阜県','滋賀県']
latest['city'] = latest['Prefecture'].isin(big_city)

# 各種フラグ
latest['high_spend']  = latest['L3221'] >= latest['L3221'].median()      # 高消費
clinic_pc = latest['I5102'] / latest['A1101'] * 100000                    # 人口10万人あたり一般診療所数
latest['clinic']      = clinic_pc >= clinic_pc.median()
latest['high_birth']  = latest['A4103'] >= 1.4
latest['high_aging']  = (latest['A1303'] / latest['A1101']) >= 0.30
latest['pop_decline'] = latest['A1101'].values < pop2018[latest['Prefecture']].values

def cond_prob(df, A, B):
    pB = df[B].mean()
    pAB = (df[A] & df[B]).mean()
    return pAB / pB if pB > 0 else np.nan

scenarios = [
    ('high_spend','city','A:高消費 | 都市圏'),
    ('clinic','high_birth','B:診療所多 | 高出生率'),
    ('pop_decline','high_aging','C:人口減 | 高齢化'),
    ('high_birth','clinic','D:高出生率 | 診療所多'),
]
for A,B,label in scenarios:
    p = cond_prob(latest, A, B)
    print(f'{label}: P(A|B) = {p:.3f}')
📤 実行例(実測) A:高消費 | 都市圏: P(A|B) = 0.727 B:診療所多 | 高出生率: P(A|B) = 0.818 C:人口減 | 高齢化: P(A|B) = 1.000 D:高出生率 | 診療所多: P(A|B) = 0.375

出力(2023 年度の実測値)

A:高消費 | 都市圏: P(A|B) = 0.727
B:診療所多 | 高出生率: P(A|B) = 0.818
C:人口減 | 高齢化: P(A|B) = 1.000
D:高出生率 | 診療所多: P(A|B) = 0.375

🐍 拡張コード①:ベイズ更新シミュレーション

スパムフィルタを例に、 メールに含まれる単語列から「スパム確率」をベイズ更新で求めます。 ナイーブベイズ前提(単語の条件付き独立)です。

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
import numpy as np

# 事前分布:50%/50% で開始
prior_spam = 0.5
prior_ham  = 0.5

# 単語ごとの尤度(学習済みコーパスから推定済みと仮定)
likelihood = {
    '無料': {'spam': 0.80, 'ham': 0.05},
    '当選': {'spam': 0.70, 'ham': 0.02},
    '会議': {'spam': 0.05, 'ham': 0.40},
    '資料': {'spam': 0.10, 'ham': 0.50},
}

mail = ['無料', '当選', '資料']  # 観測された単語

post_spam = prior_spam
post_ham  = prior_ham
for w in mail:
    post_spam *= likelihood[w]['spam']
    post_ham  *= likelihood[w]['ham']
    norm = post_spam + post_ham
    post_spam, post_ham = post_spam/norm, post_ham/norm
    print(f'after {w}: P(spam|mail) = {post_spam:.3f}')

# 出力
# after 無料: P(spam|mail) = 0.941
# after 当選: P(spam|mail) = 0.998
# after 資料: P(spam|mail) = 0.991
📤 実行例(実測) after 無料: P(spam|mail) = 0.941 after 当選: P(spam|mail) = 0.998 after 資料: P(spam|mail) = 0.991

「無料」を観測した時点で 94% に跳ね上がり、 「当選」で 99.8% とほぼ 100% に近づく。 「資料」(普通の単語)の観測で 99.1% へ少し下がるが、 すでにスパム判定が確定。 この 事後確率の逐次更新 こそベイズ的データ解析の核心です。

🐍 拡張コード②:SSDSE-B-2026 で条件付き分布の可視化

$P(\text{消費支出}|\text{都市圏 / 地方圏})$ をヒストグラムで比較し、 視覚的に条件付け効果を確認します。

📥 入力例(SSDSE-B-2026 の 2023 年・47 都道府県から 3 行) 都道府県 L3221(消費支出(二人以上の世帯)) 北海道 296,888 東京都 341,320 沖縄県 251,222 …(全 47 行)
 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
import pandas as pd
import matplotlib.pyplot as plt
import matplotlib
matplotlib.rcParams['font.family'] = 'Hiragino Sans'   # japanize_matplotlib の代わり

df = pd.read_csv('data/raw/SSDSE-B-2026.csv', encoding='cp932', skiprows=[1])
latest = df[df['SSDSE-B-2026'] == 2023]

city = ['東京都','神奈川県','埼玉県','千葉県','大阪府','京都府','兵庫県','愛知県','三重県','岐阜県','滋賀県']
latest = latest.assign(city=latest['Prefecture'].isin(city))

spend = latest['L3221']   # 消費支出(二人以上の世帯・月額)

fig, ax = plt.subplots(figsize=(8,5))
ax.hist(spend[latest['city']], bins=15, alpha=0.6, label='都市圏 (n=11)')
ax.hist(spend[~latest['city']], bins=15, alpha=0.6, label='地方圏 (n=36)')
ax.set_xlabel('消費支出 L3221(円/月)')
ax.set_ylabel('県数')
ax.set_title('条件付き分布 P(消費支出 | 圏域)')
ax.legend()
plt.tight_layout()
plt.savefig('conditional_spend.png', dpi=120)

出力されるヒストグラムでは、 都市圏の分布が相対的に右側(高消費側)に寄ります(都市圏 11 県中 8 県が全国中央値以上)。 条件付け後の分布のシフトを目で確認できる、 教育的にも有用な可視化です。

🐍 拡張コード③:3 変数の連鎖律をコードで検証

$P(A,B,C)=P(A)P(B|A)P(C|A,B)$ を SSDSE データで実際に分解し、 直接計算と一致することを確認。

📥 入力例(SSDSE-B-2026 の 2023 年・47 都道府県から 3 行) 都道府県 A1101(総人口) I5102(一般診療所数) L3221(消費支出(二人以上の世帯)) 北海道 5,092,000 3,403 296,888 東京都 14,086,000 14,894 341,320 沖縄県 1,468,000 928 251,222 …(全 47 行)
 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
import pandas as pd

df = pd.read_csv('data/raw/SSDSE-B-2026.csv', encoding='cp932', skiprows=[1])
latest = df[df['SSDSE-B-2026'] == 2023]

# 3 つの 2 値特徴量(すべて実在列)
latest = latest.assign(
    A=latest['A1101'] >= latest['A1101'].median(),   # 大規模県
    B=latest['L3221'] >= latest['L3221'].median(),   # 高消費
    C=latest['I5102'] >= latest['I5102'].median(),   # 診療所数(総数)多
)

# 直接:P(A,B,C)
p_abc_direct = ((latest['A']) & (latest['B']) & (latest['C'])).mean()

# 分解:P(A) * P(B|A) * P(C|A,B)
p_a    = latest['A'].mean()
p_b_a  = (latest['B'] & latest['A']).mean() / p_a
p_c_ab = ((latest['C'] & latest['A'] & latest['B']).mean()
          / (latest['A'] & latest['B']).mean())
p_abc_chain = p_a * p_b_a * p_c_ab

print(f'直接: P(A,B,C) = {p_abc_direct:.4f}')
print(f'連鎖: P(A)P(B|A)P(C|A,B) = {p_abc_chain:.4f}')
# 一致するはず
📤 実行例(実測) 直接: P(A,B,C) = 0.3617 連鎖: P(A)P(B|A)P(C|A,B) = 0.3617

🧭 ベイズ vs 頻度論:条件付け哲学の違い

ベイズ派は「確率は信念の度合い」と捉え、 パラメータも確率変数。 だから $P(\theta|D)$ が普通の表現。 頻度論派は「確率は長期繰り返し頻度」と捉え、 パラメータは固定の真値。 だから $P(\theta|D)$ ではなく $P(D|\theta)$(尤度関数)を中心に据える。

この対立は $p$ 値の解釈 で典型的に現れます。 $p$ 値 = $P(\text{もっと極端な統計量}|H_0)$ は頻度論的な条件付き確率。 「帰無仮説のもとでこれより極端なデータが出る確率」であって、 「データが与えられたとき帰無仮説が正しい確率 $P(H_0|D)$」ではない。 ベイズなら後者を直接計算できるが、 事前分布が必要。 この差を理解せず $p<0.05$ を「帰無仮説が間違っている確率 95%」と読み替える誤用が後を絶ちません。

SSDSE-B-2026 のような観察データで 政策効果 を議論するときは、 ベイズの方が 事前知識 を取り込みやすく、 結論の不確実性を確率分布で表現できる利点があります。 一方で頻度論は事前分布なしで運用できるシンプルさが利点。 用途と読者層に応じて使い分けるのが実務的解です。

🐍 補強コード例 1

「conditional-probability」関連の理解を補う Python コード例 (SSDSE-B-2026 を使用)。

📥 入力例(SSDSE-B-2026 全体:564 行 × 112 列 = 47 都道府県 × 2012〜2023 年) 年度 地域コード 都道府県 A1101(総人口) A1303(65歳以上人口) A4101(出生数) … 2023 R01000 北海道 5,092,000 1,681,000 24,430 … 2023 R13000 東京都 14,086,000 3,205,000 86,348 … 2023 R47000 沖縄県 1,468,000 350,000 12,549 … …(残り 112 列は住宅・家計・教育・医療など)
1
2
3
4
5
6
import pandas as pd

df = pd.read_csv('data/raw/SSDSE-B-2026.csv', encoding='cp932', skiprows=[1])
print(df.shape)
print(df.head(3))
print(df.columns[:10].tolist())
📤 実行例(実測) (564, 112) SSDSE-B-2026 Code Prefecture A1101 ... L322107 L322108 L322109 L322110 0 2023 R01000 北海道 5092000 ... 50133 6911 25661 48694 1 2022 R01000 北海道 5140000 ... 35403 9551 27234 46466 2 2021 R01000 北海道 5183000 ... 30483 9913 23762 51583 [3 rows x 112 columns] ['SSDSE-B-2026', 'Code', 'Prefecture', 'A1101', 'A110101', 'A110102', 'A1102', 'A110201', 'A110202', 'A1301']

🐍 補強コード例 2

📥 入力例(SSDSE-B-2026 の 2023 年・47 都道府県から 3 行) 都道府県 A1101(総人口) 北海道 5,092,000 東京都 14,086,000 沖縄県 1,468,000 …(全 47 行)
1
2
3
4
5
6
import pandas as pd

df = pd.read_csv('data/raw/SSDSE-B-2026.csv', encoding='cp932', skiprows=[1])
latest = df[df['SSDSE-B-2026'] == df['SSDSE-B-2026'].max()]
top10 = latest.nlargest(10, 'A1101')[['Prefecture', 'A1101']]
print(top10.to_string(index=False))
📤 実行例(実測) Prefecture A1101 東京都 14086000 神奈川県 9229000 大阪府 8763000 愛知県 7477000 埼玉県 7331000 千葉県 6257000 兵庫県 5370000 福岡県 5103000 北海道 5092000 静岡県 3555000

⚠️ 落とし穴

❌ 検事の誤謬 (Prosecutor's Fallacy)
$P(A|B)$ と $P(B|A)$ は別物。 「指紋一致 | 無罪」が 0.001 だからといって「無罪 | 指紋一致」が 0.001 とは限らない。 必ずベイズの定理で逆向きを計算する。
❌ 基準率の誤謬
事前確率 P(A) を無視して感度だけ見て判断する。 病気の例で 99% 感度の検査でも罹患率が低ければ陽性の信頼性は下がる。
❌ シンプソンのパラドックス
条件付け方によって結論が逆転する。 全体では治療 A が有効でも、 性別ごとに見ると治療 B が有効、 など。 交絡変数で適切に層別する。
❌ 独立性の誤判定
「相関がないから独立」は誤り。 非線形依存はあり得る。 独立性の検定は $\chi^2$、 相互情報量で確認する。
❌ ゼロ確率の条件付け
$P(B)=0$ では $P(A|B)$ が定義されない。 連続確率変数では確率密度 $p(x|y)$ で議論し、 観測サンプルが少ない条件付けには注意。

⚠️ 追加で抑える 6 つの落とし穴

❌ サンプルサイズが小さい条件付けで安定推定だと思い込む
SSDSE の 47 県のうち「沖縄かつ高出生率」のような条件で絞ると 1 件しか残らない場合がある。 1 件で推定した条件付き確率はノイズに支配される。 ブートストラップ信頼区間 で必ず幅を示す。
❌ 連続変数の条件付けで「ピンポイント条件」を要求する
$P(\text{所得}|\text{人口}=1234567)$ のように厳密一致を求めると、 連続値ではほぼ確率ゼロ。 連続変数では 密度 $p(x|y)$ やビンに区切った条件付けを使う。
❌ 「条件付けで因果効果を測れる」と早合点する
観察データの条件付けは 因果ではなく相関。 介入効果を測りたいなら DAG・do-演算子・RCT など因果推論の枠組みが必要。 条件付けは因果推論の 必要条件であって十分条件ではない
❌ Berkson のパラドックスを見落とす
入院患者を対象にした調査では、 異なる病気が「入院」という共通結果で結ばれ、 本来独立な変数の間に 偽相関 が現れる。 SSDSE では「特定の補助金を受給している自治体」だけを条件付けると同じ罠が発生。
❌ 条件の階層構造を無視して全体平均で議論する
「学校別 → 学年別 → 学級別」のような階層では、 各層で条件付け方が違うと全体集計が歪む。 階層モデル で条件の入れ子構造を明示する。
❌ 「相関なし=独立」と即断する
条件付き確率が変化しない(独立)と、 ピアソン相関係数 0 は同じではない。 非線形依存(例:$X^2$ と $X$)は相関 0 でも独立ではない。 確認には 相互情報量 や $\chi^2$ 検定が必要。

⚠️ 落とし穴を深掘り(逆確率・条件付き独立・シンプソン・論理の混同)

❌ P(A|B) と P(B|A) の混同 ── 逆確率の誤謬・検察官の誤謬

最も多い誤りは、 条件の向きを黙って入れ替えることです。 上の分割表の実測でいえば、 「三大都市圏に限れば高齢化率 30% 以上は 3/11=27.3%」($P(A|B)$) と、 「高齢化率 30% 以上の県に限れば都市圏は 3/35=8.6%」($P(B|A)$) はまったく別の数でした。 前者を聞いて後者を語れば、 8.6% を 27.3% だと 3 倍以上に取り違えます。

この取り違えは犯罪捜査で 検察官の誤謬(prosecutor's fallacy)と呼ばれます。 「無実なのに DNA が一致する確率 $P(\text{一致}|\text{無実})$ が 100 万分の 1」を、 「一致したのに無実である確率 $P(\text{無実}|\text{一致})$ が 100 万分の 1」とすり替える。 実際には容疑者候補が数百万人いれば $P(\text{無実}|\text{一致})$ は決して小さくありません。 医療でも「病気なら陽性 $P(\text{陽性}|\text{病気})$」と「陽性なら病気 $P(\text{病気}|\text{陽性})$」の混同(基準率無視)が同型です。 逆向きが欲しいなら黙って読み替えず、 必ず乗法定理 $P(B|A)=P(A|B)P(B)/P(A)$ で変換します。 ページ冒頭の🎮ウィジェット読み出し欄にある「P(B|A)(ベイズで逆向き)」も、 この変換をリアルタイムで見せています。

❌ 条件付き独立 ≠ 周辺独立 ── どちらか一方しか成り立たないことがある

周辺独立は $P(A\cap C)=P(A)P(C)$、 条件付き独立は $P(A\cap C|B)=P(A|B)P(C|B)$。 名前は似ていますが、 片方が成り立ってももう片方は成り立たないのが要注意点です。

つまり「条件付けは独立性を生みも壊しもする」。 条件変数を足すか外すかで結論が反転しうるので、 何で条件付けたかを必ず明示します。 なお SSDSE のような観察データでは、 どちらの型かはデータだけでは判定できず、 因果構造(因果の向き)の仮定が要ります。 (上記アイス・合格の数値は説明用の架空例です)

❌ シンプソンのパラドックス ── 層別で符号が逆転する

全確率の定理 $P(A)=\sum_i P(A|B_i)P(B_i)$ は重み付き平均でした。 重み $P(B_i)$ がグループ間で大きく偏ると、 各層すべてで成り立つ大小関係が、 合算した全体では逆転することがあります。 これが シンプソンのパラドックスです。

表 B. シンプソンのパラドックスの数値例(架空・治療の成功率)
治療 X の成功率治療 Y の成功率
軽症81/87 ≈ 0.93234/270 ≈ 0.87
重症192/263 ≈ 0.7355/80 ≈ 0.69
合算273/350 ≈ 0.78289/350 ≈ 0.83

軽症でも重症でも治療 X が勝っているのに、 合算すると Y が勝つ。 原因は「重症者が治療 X に偏って割り当てられている」という重みの偏り(=割り当てが症状という交絡と結びついている)です。 対策は、 全体の割合だけを見ず必ず層別し、 層をまたぐ比較には母集団構成比をそろえた標準化を使うこと。 「どの分母で条件付けたか」で結論が反転しうる典型例で、 交絡調整と切り離せません。 (表 B の数値は古典的教科書に倣った架空例で、 SSDSE の実測ではありません)

❌ 「かつ」と「ならば」の混同 ── $P(A\cap B)$ と $P(A|B)$ は別物

日本語の「B のとき A」は曖昧で、 「B かつ A」(同時確率 $P(A\cap B)$)「B ならば A」(条件付き確率 $P(A|B)$)のどちらにも読めます。 両者は分母が違います ── 前者の分母は全体、 後者の分母は $B$ です。 表 A の実測でいえば「都市圏かつ高齢化率高」は $P(A\cap B)=3/47\approx 0.064$、 「都市圏ならば高齢化率高」は $P(A|B)=3/11\approx 0.273$ で、 4 倍以上ちがいます。

論理式でも「$B\Rightarrow A$」(ならば)と「$B\wedge A$」(かつ)は別物であり、 確率でも $P(A|B)\ge P(A\cap B)$ が常に成り立ちます($P(B)\le 1$ で割るため)。 発表資料で「◯◯な県では△△が多い」と書くときは、 母数(分母)が全県なのか◯◯な県だけなのかを必ず明記しましょう。 これを曖昧にしたまま数字を出すと、 聴き手が勝手に「かつ」か「ならば」を補ってしまい、 数倍の誤読が生じます。

🚀 発展:全確率の定理からベイズへ、 条件付き期待値、 マルコフ性

🌉 全確率の定理 → ベイズの定理への橋渡し

ベイズの定理は魔法ではなく、 「乗法定理の対称性」+「全確率の定理」の 2 部品でできています。 順に組み立ててみます。

  1. 乗法定理の対称性:$P(A\cap B)=P(A|B)P(B)=P(B|A)P(A)$。 ここから $P(A|B)=\dfrac{P(B|A)P(A)}{P(B)}$(=ベイズの骨格)。
  2. 分母 $P(B)$ を計算可能な形に開く:仮説側 $\{A,\bar A\}$ は排反な分割なので、 全確率の定理で $P(B)=P(B|A)P(A)+P(B|\bar A)P(\bar A)$。
  3. 代入すると $P(A|B)=\dfrac{P(B|A)P(A)}{P(B|A)P(A)+P(B|\bar A)P(\bar A)}$。 これが実務で使うベイズの定理の完成形です。

つまりベイズの定理は「向きをひっくり返す乗法定理」の分母を、 「あらゆる原因経路を足し合わせる全確率の定理」で埋めたものにすぎません。 分母 $P(B)$(証拠の周辺確率=正規化定数)は「$A$ が真でも偽でも、 とにかく $B$ が起こる確率」です。 詳しい事前・尤度・事後の物語は ベイズの定理 のページへ。

📏 条件付き期待値 ── 回帰と予測モデルの正体

条件付き確率を「値」に拡張したものが 条件付き期待値 $E[Y|X=x]=\sum_y y\,P(Y=y|X=x)$ です。 「$X=x$ という条件下での $Y$ の平均」で、 連続変数では点確率がゼロになるため、 確率そのものより期待値の方が主役になります。 重要な事実は、 「二乗誤差を最小にする最良の予測は条件付き期待値 $E[Y|X]$ である」こと。 線形回帰ロジスティック回帰ランダムフォレストニューラルネット はすべて、 この $E[Y|X]$(分類なら $P(Y=1|X)$)を別々の関数形で近似する装置だと見なせます。

全確率の定理の期待値版が 全期待値の法則 $E[Y]=E\big[E[Y|X]\big]$、 分散版が 全分散の法則 $\mathrm{Var}(Y)=E[\mathrm{Var}(Y|X)]+\mathrm{Var}(E[Y|X])$ です。 後者は「全体のばらつき=各層内のばらつきの平均+層間の平均のばらつき」と読め、 分散分析(ANOVA)の平方和分解や階層モデルの理論的な背骨になっています。

⛓ 独立性の連鎖(マルコフ性)

連鎖律 $P(X_1,\dots,X_n)=\prod_i P(X_i|X_1,\dots,X_{i-1})$ は常に正しい恒等式ですが、 条件部が長くなり扱いにくい。 そこで マルコフ性「未来は現在だけに条件付き依存し、 過去とは条件付き独立」$P(X_{t+1}|X_t,X_{t-1},\dots,X_1)=P(X_{t+1}|X_t)$ を仮定すると、 連鎖が $P(X_1)\prod_t P(X_{t+1}|X_t)$ と一気に簡潔になります。

これは「$X_t$ を条件付けると $X_{t+1}$ と過去が条件付き独立になる」という、 前節の条件付き独立そのものです。 マルコフ連鎖・隠れマルコフモデル・ARIMA などの時系列モデル、 強化学習のマルコフ決定過程、 ベイジアンネットワークの局所マルコフ性まで、 「条件付き独立の仮定で巨大な同時分布を分解する」という同じ発想の系譜です。 SSDSE のような年次パネルでも「来年の値は今年の値でほぼ決まる(過去は今年に要約される)」と置けば、 予測が条件付き期待値 $E[X_{t+1}|X_t]$ の推定問題に落ちます。 (マルコフ連鎖・条件付き独立の専用ページは未整備のため、 本節と上の落とし穴節で解説しています)

🗺 概念マップ

条件付き確率は 「確率モデルの中で情報を更新する操作」。 機械学習・統計検定・データ同化・因果推論など、 多くの学問の 共通言語です。

分野使われ方
機械学習分類器の出力 $P(y|x)$
統計検定p 値 $= P(\text{もっと極端} | H_0)$
時系列マルコフ性 $P(x_{t+1}|x_t)$
因果推論do-演算子 vs 観測条件付け

🔎 deep-dive:条件付き確率を 4 つの視点で深掘る

ここから先は、 「条件付き確率」を 4 要素 narration(背景・仕組み・落とし穴・実務) で立体的に深掘りします。 SSDSE-B-2026(47 都道府県 × 多年次)を一貫教材として、 同じ式 $P(A|B)=P(A\cap B)/P(B)$ がどのように 政策評価・健康指標・経済予測 に化けていくかを順に追います。

① 背景 narration:なぜ「条件付け」だけで世界が変わるのか

確率論の歴史を辿ると、 17 世紀のパスカルとフェルマーの「分配問題」から、 19 世紀のラプラスによる「事象の独立/従属」の体系化、 そして 20 世紀のコルモゴロフによる公理化へと進みました。 中でも 「条件付け」 の発見は革命的でした。 サイコロを 1 回振って 4 以上が出る確率は $3/6=0.5$ ですが、 「偶数だと教えられた」あとの 4 以上の確率は $2/3$。 同じサイコロでも 情報の量 が変われば確率の値が変わる、 ということを定式化したのが条件付き確率です。

この発想は SSDSE-B-2026 の都道府県データでも頻出します。 たとえば「総人口 (A1101)」「消費支出 (L3221)」「一般診療所数 (I5102)」「合計特殊出生率 (A4103)」の 4 系列で、 何の前提もなく「消費支出が中央値以上の確率」を聞かれれば 47 県中 24 県の $24/47\approx 0.51$。 しかし 「三大都市圏である」 という条件をつけると 11 県中 8 県で $8/11\approx 0.73$ にジャンプします。 同じ「消費が高い確率」でも、 観察する条件によって 意味も値も別物 になるのです。

統計データ解析コンペで頻出する ベイズ更新仮説検定ロジスティック回帰 は、 すべて 条件付き確率 を内側で計算しています。 「事前分布 × 尤度 ∝ 事後分布」「$p$ 値 = 帰無仮説のもとで観測以上に極端な値が出る確率」「分類器の出力 $\hat y = P(y=1|x)$」── どれも条件付け表現です。 だから条件付き確率を曖昧なまま放置すると、 上位の手法すべてが砂上の楼閣になります。

② 仕組み narration:式 $P(A|B)=P(A\cap B)/P(B)$ の幾何学的意味

公式自体は単純な「割り算」ですが、 幾何学的には 全体集合(標本空間)の縮小 を意味します。 標本空間を四角形と考え、 事象 $A$ と事象 $B$ をその中の領域として描くと、 $P(A)$ は「四角形全体に対する $A$ の面積比」、 $P(A|B)$ は「$B$ という部分集合に対する $A\cap B$ の面積比」。 分母が四角形ではなく $B$ に切り替わる ところが操作の核心です。 「視野が狭くなる」と言い換えても良いでしょう。

この縮小操作には 3 つの帰結があります。 第 1 に 正規化:分母 $P(B)$ で割ることで、 $\sum_a P(A=a|B)=1$ が保たれる。 第 2 に 独立性の判定:$P(A|B)=P(A)$ なら $A$ と $B$ は独立。 つまり $B$ を知っても $A$ の確率が変わらない。 第 3 に 連鎖律:$P(A,B,C)=P(A)P(B|A)P(C|A,B)$ のように、 同時確率は順次の条件付き確率の積に分解できる。 これが ベイジアンネットワーク隠れマルコフモデル の基礎です。

SSDSE-B-2026(2023 年度)で具体化しましょう。 $A$=「人口 10 万人あたり一般診療所数が 47 県中央値以上」、 $B$=「合計特殊出生率が 1.4 以上」とすると、 実測で $P(A)=24/47\approx 0.511$、 $P(B)=11/47\approx 0.234$、 $P(A\cap B)=9/47\approx 0.191$。 条件付き確率 $P(A|B)=0.191/0.234\approx 0.818$。 一方で 出生率を条件付けないとき の確率は $0.511$ にすぎません。 出生率という情報が加わることで、 「診療所が多い」確率は 1.6 倍に跳ね上がる。 これは「出生率の高い県では人口あたりの医療アクセスも厚い」という政策上の 共起構造 を確率言語で語ったものです。

③ 落とし穴 narration:条件付け方の選択が結論を反転させる

条件付き確率の最大の落とし穴は 「条件を変えると結論が変わる」。 これを最も劇的に示すのが シンプソンのパラドックス です。 全体では「治療 A の方が回復率が高い」が、 性別ごとに分けると「治療 B の方が高い」── このような逆転は、 条件付ける変数(性別)が 治療選択回復率 の両方に影響する 交絡変数 であるときに発生します。

SSDSE-B-2026(2023 年度)では、 「人口の多い県は宿泊者も多い」という一見明白な関係も、 一人当たりに変換すると順位が入れ替わります。 たとえば「延べ宿泊者数 (G7101) の総数」では東京・大阪・北海道がトップ 3 ですが、 「人口 1 人あたり」に直すと沖縄(約 13.7 泊)・京都(約 10.4 泊)・山梨(約 7.5 泊)が上位で、 東京は約 5.7 泊の 7 位に下がります。 条件として「人口」を取り入れるか取らないか で見える世界が変わるのです。 ベイズ更新でも同じで、 事前分布を 主観的に選ぶ ことが結論に効き、 「客観的事前分布」「弱情報事前分布」など複数の選択肢で結果が変わります。

もう一つ怖い罠が 「逆確率の混同」。 $P(A|B)\neq P(B|A)$ は当たり前ですが、 ニュース報道ではしばしば混同されます。 「事故を起こしたドライバーの 30% が飲酒運転」(=$P(\text{飲酒}|\text{事故})$) と 「飲酒運転者の 30% が事故を起こす」(=$P(\text{事故}|\text{飲酒})$) は別物。 ベイズの定理 $P(A|B)=P(B|A)P(A)/P(B)$ で 明示的に変換 しない限り、 同じ数字でも意味が反転します。

④ 実務 narration:データサイエンス・コンペでの活用パターン

コンペや業務では、 条件付き確率は 「層別解析」「フィーチャーエンジニアリング」「異常検知」「因果推論」 の 4 局面で表れます。

  1. 層別解析:「全国平均」だけでなく、 地方ブロック・年齢階層・所得階層ごとに $P(\text{指標}|\text{属性})$ を計算。 SSDSE-B-2026 を地方 8 ブロックに分けて出生率・消費支出・診療所数を比較するのが典型。
  2. 特徴量エンジニアリング:カテゴリカル特徴 $x$ に対し、 ターゲット平均 $E[y|x]$ を新特徴として加える ターゲットエンコーディング。 これは条件付き期待値 $=$ 条件付き確率の連続版です。
  3. 異常検知:通常状態の条件付き分布 $P(x_t|x_{t-1},\ldots)$ を学習し、 観測値の 条件付き対数尤度 が小さい時刻を「異常」と判定する。
  4. 因果推論:観察データから「介入したら結果はどうなるか」を推定する逆問題。 条件付き確率の 因果的読み替え(do-演算子)が必要で、 単なる条件付けと区別する。

統計・データ解析コンペの過去の入賞論文(例:「いじめ・不登校」「メンタルヘルス」テーマ)では、 条件付き確率の式に 「都道府県」「年度」「学年」 の 3 軸を入れることで、 母数の偏りを補正した 純粋な政策効果 を抽出していました。 単純な相関では見落とす因果の方向性を、 条件付け方の工夫で示せたのが受賞の決め手です。

🗺 自学自習ロードマップ

  1. Week 1:本ページの「直感で掴む」「数式を言葉で読み解く」を完読し、 SSDSE-B-2026 で 4 シナリオを電卓計算。
  2. Week 2:Python で同じ計算を実行。 ヒストグラム・分割表を可視化。 ベイズの定理で逆向き確率も計算。
  3. Week 3:シンプソンのパラドックス例を作る。 SSDSE で「全体」と「層別」が反転する組合せを 1 つ見つける。
  4. Week 4ベイズの定理ナイーブベイズ ページに進み、 分類器を実装。
  5. Week 5仮説検定 の $p$ 値を条件付き確率として再解釈。
  6. Week 6因果推論 ページで観察 vs 介入の違いを学ぶ。 do-演算子を導入。
conditional probability ベイズの定理 ベイジアンネットワーク マルコフ連鎖 ナイーブベイズ分類器 条件付き期待値 条件付き分散

🔗 隣接手法への橋渡し

「条件付き確率」は「ある事象が起きた前提での確率」で、 上流の同時確率・周辺確率の整理と下流のベイズの定理への展開を組まないと、 検査の偽陽性問題のような直観に反する結果を説明できない。

上流で同時確率と周辺確率を整え、 並列の周辺確率・独立性と区別して使い分け、 下流のベイズの定理・ベイジアンネットに接続すれば、 医療検査・スパムフィルタ・SSDSE 地域属性の更新確率を計算できる。

🌳 手法選択フロー

「条件付き確率」を実際に使うとき、 何をどう選ぶかを順に判断する。 上から順に答えていくと、 使うべき手法と評価の仕方が決まる。

  1. 条件は何で、 何を知りたいのか
    $P(A \mid B)$ の $B$ は「すでに分かっていること」、 $A$ は「知りたいこと」。 この 2 つを取り違えると $P(A \mid B)$ と $P(B \mid A)$ を混同する(検察官の誤謬)。
  2. 分母となる集合は何件か
    条件付き確率は「$B$ が起きた場合だけ」を分母にする。 47 都道府県のうち人口 100 万人未満は 10 県なので、 その中での割合を見るなら分母は 47 ではなく 10。
  3. 事象は独立か
    独立なら $P(A \mid B) = P(A)$ で、 条件を付けても確率は変わらない。 独立でないなら、 条件を付けた分だけ確率が動く。 独立性は仮定であって、 データで確かめる。
  4. 原因の確率を求めたいか
    「結果から原因」を知りたいならベイズの定理で $P(B \mid A)$ に変換する。 事前確率が小さい事象では、 検査が当たっても事後確率は思ったほど上がらない。

条件付き確率でつまずく多くは「分母を取り違える」ことに尽きる。 式を書く前に、 何を全体とみなしているのかを日本語で言い切っておく。