同時分布・周辺分布・条件付き分布の関係を整理する

あるクラスの生徒について、数学と英語の成績を同時に記録したとします。数学が得意な生徒は英語も得意でしょうか?数学が80点以上だった生徒に限ると、英語の成績はどのような分布になるでしょうか?

このような「2つ以上の確率変数を同時に扱う」問題には、3つの異なる視点があります。

  • 同時分布(joint distribution): 数学と英語の成績の「全体像」— 2変数の組の確率を記述する
  • 周辺分布(marginal distribution): 数学だけ、あるいは英語だけの成績分布 — 一方の変数だけに注目する
  • 条件付き分布(conditional distribution): 数学が80点のとき、英語の成績分布 — 一方の値を固定したときの他方の分布

これら3つの概念は互いに密接に関連しており、多変量統計学・ベイズ統計・機械学習の基盤をなします。

  • ベイズ推論: 事後分布 = 条件付き分布であり、ベイズの定理は同時分布と周辺分布の関係から導かれる
  • 機械学習: 条件付き確率 $P(Y|X)$ が分類問題の核心
  • グラフィカルモデル: ベイジアンネットワークは同時分布を条件付き分布の積に分解する
  • 欠損データ処理: 観測される周辺分布から欠損変数を含む同時分布を推定する

本記事の内容

  • 同時分布の定義(離散・連続)
  • 周辺分布の導出 — 「一方を消去する」操作
  • 条件付き分布の定義と計算
  • 3つの分布の相互関係
  • 独立性との関係
  • Pythonでの可視化

前提知識

この記事を読む前に、以下の記事を読んでおくと理解が深まります。

同時分布とは — 「2変数の全体像」

直感

同時分布は、2つ(以上)の確率変数の値の組み合わせに対する確率を記述します。

サイコロを2つ振る場合、各目の出方(1,1)から(6,6)まで36通りの組み合わせがあり、それぞれの確率が同時分布です。公平なサイコロなら全て $1/36$ です。

一般に、1つの確率変数だけでは捉えられない変数間の関係性(依存構造)が、同時分布に含まれています。周辺分布からは変数間の関係はわかりませんが、同時分布にはその情報が全て含まれています。

離散確率変数の同時分布

離散確率変数 $X$ と $Y$ の同時確率質量関数(joint PMF)は

$$ \begin{equation} p_{X,Y}(x, y) = P(X = x, Y = y) \end{equation} $$

全ての $(x, y)$ に対して $p_{X,Y}(x, y) \geq 0$ であり、正規化条件

$$ \sum_x \sum_y p_{X,Y}(x, y) = 1 $$

を満たします。

同時分布は(同時確率表)として表現できます。

連続確率変数の同時分布

連続確率変数 $X$ と $Y$ の同時確率密度関数(joint PDF)$f_{X,Y}(x, y)$ は

$$ P(a \leq X \leq b, c \leq Y \leq d) = \int_a^b \int_c^d f_{X,Y}(x, y) \, dy \, dx $$

を満たす非負の関数です。正規化条件は

$$ \int_{-\infty}^{\infty} \int_{-\infty}^{\infty} f_{X,Y}(x, y) \, dy \, dx = 1 $$

同時密度は3次元空間での「山」として可視化できます。密度が高い(山が高い)ところは、その $(x, y)$ の組が出やすい場所です。

同時分布には2つの変数の情報が全て含まれていますが、1つの変数だけに注目したいときもあります。そのような操作が「周辺化」です。

周辺分布 — 「一方を消去する」

定義と直感

周辺分布は、同時分布から一方の変数を「消去」(積分消去、marginalize out)して得られる分布です。

成績の例で言えば、同時分布は(数学の点数, 英語の点数)の組に対する確率です。ここから英語を消去すると、数学だけの分布(周辺分布)が得られます。

離散の場合はで消去します。

$$ \begin{equation} p_X(x) = \sum_y p_{X,Y}(x, y) \end{equation} $$

同時確率表では、行の合計(あるいは列の合計)が周辺分布に対応します。「周辺分布」という名前は、同時確率表の周辺(マージン)に書かれる合計値に由来します。

連続の場合は積分で消去します。

$$ \begin{equation} f_X(x) = \int_{-\infty}^{\infty} f_{X,Y}(x, y) \, dy \end{equation} $$

同様に $Y$ の周辺分布は

$$ f_Y(y) = \int_{-\infty}^{\infty} f_{X,Y}(x, y) \, dx $$

情報の損失

周辺化は情報を失う操作です。同時分布から周辺分布は一意に決まりますが、周辺分布から同時分布を復元することは一般にはできません。なぜなら、変数間の依存構造の情報が失われるからです。

同じ周辺分布を持つが異なる依存構造を持つ同時分布は無数に存在します。独立性の記事で見たように、$X$ と $Y$ が独立なら同時分布は周辺分布の積 $f_{X,Y}(x,y) = f_X(x) f_Y(y)$ ですが、独立でなければ積とは異なる形になります。

次に、一方の変数の値が分かったときの、他方の変数の分布 — 条件付き分布 — を定義しましょう。

条件付き分布 — 「一方を固定したときの分布」

離散の条件付き分布

$Y = y$ が与えられたもとでの $X$ の条件付きPMF

$$ \begin{equation} p_{X|Y}(x | y) = \frac{p_{X,Y}(x, y)}{p_Y(y)} \end{equation} $$

ここで $p_Y(y) > 0$ です。これは条件付き確率の定義 $P(A|B) = P(A \cap B) / P(B)$ の直接的な拡張です。

連続の条件付き分布

$Y = y$ が与えられたもとでの $X$ の条件付きPDF

$$ \begin{equation} f_{X|Y}(x | y) = \frac{f_{X,Y}(x, y)}{f_Y(y)} \end{equation} $$

ここで $f_Y(y) > 0$ です。

離散の場合と同じ形ですが、連続の場合は少し注意が必要です。$P(Y = y) = 0$(連続変数は特定の値を取る確率が0)であるにもかかわらず、条件付き密度は密度の比として well-defined です。

条件付き分布の直感

条件付き分布 $f_{X|Y}(x | y_0)$ は、同時密度 $f_{X,Y}(x, y)$ を $y = y_0$ の「切り口」(スライス)で切り取り、面積が1になるように正規化したものです。

3次元の山を「包丁で $y = y_0$ の位置でスライスする」イメージです。スライスした断面の形が条件付き分布です。

条件付き期待値と条件付き分散

条件付き分布から、条件付き期待値と条件付き分散が定義されます。

$$ E[X | Y = y] = \int x \, f_{X|Y}(x | y) \, dx $$

$$ \text{Var}(X | Y = y) = E[X^2 | Y = y] – (E[X | Y = y])^2 $$

$E[X|Y = y]$ は $y$ の関数であり、$Y$ の値によって $X$ の「平均的な振る舞い」がどう変わるかを記述します。回帰分析の回帰関数はまさにこの条件付き期待値です。

3つの分布の相互関係

まとめ図

同時分布、周辺分布、条件付き分布の関係を整理します。

$$ f_{X,Y}(x, y) = f_{X|Y}(x | y) \cdot f_Y(y) = f_{Y|X}(y | x) \cdot f_X(x) $$

$$ f_X(x) = \int f_{X,Y}(x, y) \, dy = \int f_{X|Y}(x | y) f_Y(y) \, dy $$

$$ f_{X|Y}(x | y) = \frac{f_{X,Y}(x, y)}{f_Y(y)} = \frac{f_{Y|X}(y | x) f_X(x)}{f_Y(y)} $$

最後の式はベイズの定理そのものです。

ベイズの定理の自然な導出

条件付き分布の定義を2通りに書くと

$$ f_{X,Y}(x, y) = f_{X|Y}(x|y) f_Y(y) = f_{Y|X}(y|x) f_X(x) $$

左辺を消去して $f_{X|Y}(x|y)$ について解くと

$$ f_{X|Y}(x|y) = \frac{f_{Y|X}(y|x) f_X(x)}{f_Y(y)} $$

これがベイズの定理です。ベイズの定理は、同時分布を2通りに条件付き分解できることの帰結にすぎません。

独立の場合

$X$ と $Y$ が独立のとき

$$ f_{X,Y}(x, y) = f_X(x) f_Y(y) $$

条件付き分布は

$$ f_{X|Y}(x|y) = \frac{f_X(x) f_Y(y)}{f_Y(y)} = f_X(x) $$

$Y$ の値を知っても $X$ の分布は変わらない — これが独立の意味です。

具体例: 2次元正規分布

定義

2次元正規分布は、同時分布・周辺分布・条件付き分布の関係を理解する最良の例です。

$$ \begin{pmatrix} X \\ Y \end{pmatrix} \sim N\left(\begin{pmatrix} \mu_X \\ \mu_Y \end{pmatrix}, \begin{pmatrix} \sigma_X^2 & \rho\sigma_X\sigma_Y \\ \rho\sigma_X\sigma_Y & \sigma_Y^2 \end{pmatrix}\right) $$

同時密度

$$ f_{X,Y}(x,y) = \frac{1}{2\pi\sigma_X\sigma_Y\sqrt{1-\rho^2}} \exp\left(-\frac{Q}{2(1-\rho^2)}\right) $$

ここで $Q = \left(\frac{x-\mu_X}{\sigma_X}\right)^2 – 2\rho\left(\frac{x-\mu_X}{\sigma_X}\right)\left(\frac{y-\mu_Y}{\sigma_Y}\right) + \left(\frac{y-\mu_Y}{\sigma_Y}\right)^2$

周辺分布

$Y$ を積分消去すると

$$ X \sim N(\mu_X, \sigma_X^2) $$

2次元正規分布の周辺分布は1次元正規分布です。

条件付き分布

$Y = y$ を固定すると、$X$ の条件付き分布は

$$ X | Y = y \sim N\left(\mu_X + \rho\frac{\sigma_X}{\sigma_Y}(y – \mu_Y), \; \sigma_X^2(1 – \rho^2)\right) $$

条件付き期待値は $y$ の線形関数であり、条件付き分散は $y$ に依存しません。これは2次元正規分布の重要な性質です。

$\rho > 0$ のとき、$Y$ が平均より大きい値をとると、$X$ の条件付き期待値も大きくなります。$|\rho|$ が大きいほど条件付き分散 $\sigma_X^2(1-\rho^2)$ は小さくなり、$Y$ の情報で $X$ の不確実性がより多く削減されます。

Pythonでの実装と可視化

同時分布・周辺分布・条件付き分布の可視化

2次元正規分布を使って、3つの分布の関係を同時に可視化します。

import numpy as np
import matplotlib.pyplot as plt
from scipy import stats
from matplotlib.gridspec import GridSpec

# パラメータ
mu_x, mu_y = 2, 3
sigma_x, sigma_y = 1.5, 1.0
rho = 0.7

# 分散共分散行列
cov = [[sigma_x**2, rho*sigma_x*sigma_y],
       [rho*sigma_x*sigma_y, sigma_y**2]]

# グリッド
x = np.linspace(-2, 6, 200)
y = np.linspace(0, 6, 200)
X_grid, Y_grid = np.meshgrid(x, y)
pos = np.dstack((X_grid, Y_grid))

# 同時密度
rv = stats.multivariate_normal([mu_x, mu_y], cov)
Z = rv.pdf(pos)

fig = plt.figure(figsize=(14, 10))
gs = GridSpec(4, 4, figure=fig, hspace=0.4, wspace=0.4)

# メイン: 同時分布の等高線
ax_joint = fig.add_subplot(gs[1:4, 0:3])
contour = ax_joint.contourf(X_grid, Y_grid, Z, levels=20, cmap='Blues')
ax_joint.contour(X_grid, Y_grid, Z, levels=8, colors='navy', linewidths=0.5,
                 alpha=0.5)

# 条件付き分布のスライス(y=2, y=3, y=4)
y_conditions = [2, 3, 4]
colors_cond = ['red', 'green', 'orange']
for y_cond, color in zip(y_conditions, colors_cond):
    ax_joint.axhline(y_cond, color=color, linestyle='--', linewidth=1.5,
                     alpha=0.7, label=f'Y={y_cond}')

ax_joint.set_xlabel('X', fontsize=12)
ax_joint.set_ylabel('Y', fontsize=12)
ax_joint.set_title(f'Joint Distribution (Bivariate Normal)\n'
                   f'$\\rho$ = {rho}', fontsize=13)
ax_joint.legend(fontsize=9, loc='upper left')

# 上部: X の周辺分布
ax_marginal_x = fig.add_subplot(gs[0, 0:3], sharex=ax_joint)
fx = stats.norm.pdf(x, mu_x, sigma_x)
ax_marginal_x.fill_between(x, fx, alpha=0.3, color='steelblue')
ax_marginal_x.plot(x, fx, 'b-', linewidth=2, label='$f_X(x)$')
ax_marginal_x.set_ylabel('$f_X(x)$', fontsize=11)
ax_marginal_x.set_title('Marginal Distribution of X', fontsize=11)
ax_marginal_x.legend(fontsize=9)
ax_marginal_x.grid(True, alpha=0.3)

# 右部: Y の周辺分布
ax_marginal_y = fig.add_subplot(gs[1:4, 3], sharey=ax_joint)
fy = stats.norm.pdf(y, mu_y, sigma_y)
ax_marginal_y.fill_betweenx(y, fy, alpha=0.3, color='steelblue')
ax_marginal_y.plot(fy, y, 'b-', linewidth=2, label='$f_Y(y)$')
ax_marginal_y.set_xlabel('$f_Y(y)$', fontsize=11)
ax_marginal_y.set_title('Marginal of Y', fontsize=11)
ax_marginal_y.legend(fontsize=9)
ax_marginal_y.grid(True, alpha=0.3)

plt.savefig('joint_marginal_distribution.png', dpi=150, bbox_inches='tight')
plt.show()

この可視化から、同時分布と周辺分布の関係が直感的に理解できます。

  1. 中央(同時分布): 等高線で表された2次元正規分布です。$\rho = 0.7$ なので、等高線は右上がりの楕円形をしています。$X$ と $Y$ が同時に大きい値を取る、あるいは同時に小さい値を取る傾向が見てとれます。

  2. 上部($X$ の周辺分布): 同時密度を $y$ 方向に積分して得られる $X$ の分布です。$N(2, 1.5^2)$ の正規分布であり、同時分布の「影」を横軸に投影したものと解釈できます。

  3. 右部($Y$ の周辺分布): 同時密度を $x$ 方向に積分して得られる $Y$ の分布です。$N(3, 1^2)$ の正規分布です。

条件付き分布の可視化

同時密度をスライスして条件付き分布を抽出する様子を可視化します。

import numpy as np
import matplotlib.pyplot as plt
from scipy import stats

# パラメータ(前と同じ)
mu_x, mu_y = 2, 3
sigma_x, sigma_y = 1.5, 1.0
rho = 0.7

# 条件付き分布のパラメータ
# X | Y=y ~ N(mu_x + rho*(sigma_x/sigma_y)*(y-mu_y), sigma_x^2*(1-rho^2))
cond_var = sigma_x**2 * (1 - rho**2)
cond_std = np.sqrt(cond_var)

y_conditions = [1.5, 2.5, 3.0, 3.5, 4.5]
colors_cond = ['purple', 'blue', 'green', 'orange', 'red']

fig, axes = plt.subplots(1, 3, figsize=(16, 5))

# (a) 条件付き分布の比較
ax = axes[0]
x = np.linspace(-3, 7, 300)

# 周辺分布
fx = stats.norm.pdf(x, mu_x, sigma_x)
ax.plot(x, fx, 'k--', linewidth=2, label=f'Marginal $f_X(x)$')

for y_cond, color in zip(y_conditions, colors_cond):
    cond_mean = mu_x + rho * (sigma_x / sigma_y) * (y_cond - mu_y)
    cond_pdf = stats.norm.pdf(x, cond_mean, cond_std)
    ax.plot(x, cond_pdf, color=color, linewidth=1.5,
            label=f'$f_{{X|Y}}(x|{y_cond})$, $\\mu$={cond_mean:.2f}')

ax.set_xlabel('X', fontsize=12)
ax.set_ylabel('Density', fontsize=12)
ax.set_title('Conditional Distributions $f_{X|Y}(x|y)$\n'
             f'Conditional std = {cond_std:.2f}', fontsize=12)
ax.legend(fontsize=8)
ax.grid(True, alpha=0.3)

# (b) 条件付き期待値(回帰関数)
ax = axes[1]
y_range = np.linspace(0, 6, 100)
cond_means = mu_x + rho * (sigma_x / sigma_y) * (y_range - mu_y)

# シミュレーションデータ
np.random.seed(42)
cov_matrix = [[sigma_x**2, rho*sigma_x*sigma_y],
              [rho*sigma_x*sigma_y, sigma_y**2]]
data = np.random.multivariate_normal([mu_x, mu_y], cov_matrix, 1000)

ax.scatter(data[:, 1], data[:, 0], alpha=0.15, s=5, color='steelblue')
ax.plot(y_range, cond_means, 'r-', linewidth=2.5,
        label=r'$E[X|Y=y] = \mu_X + \rho\frac{\sigma_X}{\sigma_Y}(y-\mu_Y)$')
ax.fill_between(y_range, cond_means - 2*cond_std, cond_means + 2*cond_std,
                alpha=0.15, color='red', label='$\\pm 2\\sigma_{X|Y}$')

ax.set_xlabel('Y', fontsize=12)
ax.set_ylabel('X', fontsize=12)
ax.set_title('Conditional Mean (Regression Function)', fontsize=12)
ax.legend(fontsize=9)
ax.grid(True, alpha=0.3)

# (c) 異なるρでの条件付き分散の比較
ax = axes[2]
rho_values = [0, 0.3, 0.5, 0.7, 0.9, 0.99]
cond_vars = [sigma_x**2 * (1 - r**2) for r in rho_values]
cond_stds = [np.sqrt(v) for v in cond_vars]

ax.bar(range(len(rho_values)), cond_vars, color='steelblue', alpha=0.8,
       edgecolor='gray')
ax.set_xticks(range(len(rho_values)))
ax.set_xticklabels([f'{r}' for r in rho_values], fontsize=11)
ax.set_xlabel(r'$\rho$', fontsize=12)
ax.set_ylabel(r'$\mathrm{Var}(X|Y) = \sigma_X^2(1-\rho^2)$', fontsize=12)
ax.set_title('Conditional Variance Decreases\nwith $|\\rho|$', fontsize=12)
ax.grid(True, alpha=0.3, axis='y')

# 値の表示
for i, (v, r) in enumerate(zip(cond_vars, rho_values)):
    reduction = (1 - v / sigma_x**2) * 100
    ax.text(i, v + 0.05, f'{reduction:.0f}%\nreduced',
            ha='center', fontsize=9)

plt.tight_layout()
plt.savefig('conditional_distribution.png', dpi=150, bbox_inches='tight')
plt.show()

この可視化から、条件付き分布の重要な性質が読み取れます。

  1. 左図(条件付き分布の比較): 黒の破線が周辺分布 $f_X(x)$ であり、色付きの実線が各 $y$ での条件付き分布です。$Y$ の値が大きくなるにつれて条件付き分布のピーク(条件付き平均)が右にシフトしています。全ての条件付き分布は同じ幅(条件付き標準偏差 $= 1.07$)を持ち、周辺分布(標準偏差 $= 1.5$)より狭いことがわかります。

  2. 中央図(回帰関数): 赤い実線が条件付き期待値 $E[X|Y=y]$ であり、$Y$ の線形関数です。赤い帯が $\pm 2\sigma_{X|Y}$ の範囲で、散布図のデータ点の大部分がこの帯の中に収まっています。回帰分析の回帰直線が条件付き期待値であることが視覚的に確認できます。

  3. 右図(条件付き分散と相関): $|\rho|$ が大きくなるほど条件付き分散が小さくなります。$\rho = 0.9$ で条件付き分散は元の分散の19%に減少し、$\rho = 0.99$ ではわずか2%です。つまり、相関が強いほど一方の変数の情報が他方の不確実性を大きく削減します。

離散の同時分布表

離散確率変数の同時分布表から周辺分布と条件付き分布を計算する例を示します。

import numpy as np
import matplotlib.pyplot as plt

# 離散の同時分布表(成績の例)
# X: 数学 (Low, Mid, High), Y: 英語 (Low, Mid, High)
joint_table = np.array([
    [0.15, 0.05, 0.02],   # 数学Low × 英語(Low,Mid,High)
    [0.08, 0.20, 0.10],   # 数学Mid × 英語(Low,Mid,High)
    [0.02, 0.10, 0.28],   # 数学High × 英語(Low,Mid,High)
])

x_labels = ['Math Low', 'Math Mid', 'Math High']
y_labels = ['Eng Low', 'Eng Mid', 'Eng High']

# 周辺分布
marginal_x = joint_table.sum(axis=1)  # 行の合計
marginal_y = joint_table.sum(axis=0)  # 列の合計

# 条件付き分布 P(Y|X=High)
cond_y_given_x_high = joint_table[2, :] / marginal_x[2]

fig, axes = plt.subplots(2, 2, figsize=(14, 10))

# (a) 同時分布のヒートマップ
ax = axes[0, 0]
im = ax.imshow(joint_table, cmap='YlOrRd', vmin=0, vmax=0.3)
plt.colorbar(im, ax=ax, label='P(X, Y)')
ax.set_xticks(range(3))
ax.set_yticks(range(3))
ax.set_xticklabels(y_labels, fontsize=10)
ax.set_yticklabels(x_labels, fontsize=10)
for i in range(3):
    for j in range(3):
        ax.text(j, i, f'{joint_table[i,j]:.2f}', ha='center', va='center',
                fontsize=12, fontweight='bold')
ax.set_title('Joint Distribution P(X, Y)', fontsize=13)

# (b) 周辺分布
ax = axes[0, 1]
x_pos = np.arange(3)
width = 0.35
ax.bar(x_pos - width/2, marginal_x, width, color='steelblue', alpha=0.8,
       label='P(Math)', edgecolor='gray')
ax.bar(x_pos + width/2, marginal_y, width, color='coral', alpha=0.8,
       label='P(English)', edgecolor='gray')
ax.set_xticks(x_pos)
ax.set_xticklabels(['Low', 'Mid', 'High'], fontsize=11)
ax.set_ylabel('Probability', fontsize=12)
ax.set_title('Marginal Distributions', fontsize=13)
ax.legend(fontsize=10)
ax.grid(True, alpha=0.3, axis='y')

for i in range(3):
    ax.text(i - width/2, marginal_x[i] + 0.01, f'{marginal_x[i]:.2f}',
            ha='center', fontsize=10)
    ax.text(i + width/2, marginal_y[i] + 0.01, f'{marginal_y[i]:.2f}',
            ha='center', fontsize=10)

# (c) 条件付き分布 P(Y|X)
ax = axes[1, 0]
for i, (label, color) in enumerate(zip(x_labels,
                                       ['lightcoral', 'lightskyblue', 'lightgreen'])):
    cond = joint_table[i, :] / marginal_x[i]
    ax.bar(x_pos + (i-1)*0.25, cond, 0.22, color=color, alpha=0.8,
           label=f'P(Eng | {label})', edgecolor='gray')

ax.set_xticks(x_pos)
ax.set_xticklabels(y_labels, fontsize=10)
ax.set_ylabel('Conditional Probability', fontsize=12)
ax.set_title('Conditional Distribution P(Eng | Math)', fontsize=13)
ax.legend(fontsize=9)
ax.grid(True, alpha=0.3, axis='y')

# (d) 独立性の検証: P(X,Y) vs P(X)*P(Y)
ax = axes[1, 1]
independent_table = np.outer(marginal_x, marginal_y)
diff = joint_table - independent_table

im2 = ax.imshow(diff, cmap='RdBu_r', vmin=-0.1, vmax=0.1)
plt.colorbar(im2, ax=ax, label='P(X,Y) - P(X)P(Y)')
ax.set_xticks(range(3))
ax.set_yticks(range(3))
ax.set_xticklabels(y_labels, fontsize=10)
ax.set_yticklabels(x_labels, fontsize=10)
for i in range(3):
    for j in range(3):
        ax.text(j, i, f'{diff[i,j]:+.3f}', ha='center', va='center',
                fontsize=11, fontweight='bold')
ax.set_title('Independence Check\nP(X,Y) - P(X)P(Y)', fontsize=13)

plt.tight_layout()
plt.savefig('discrete_joint_distribution.png', dpi=150, bbox_inches='tight')
plt.show()

この離散分布の可視化から、3つの分布の関係が具体的に確認できます。

  1. 左上(同時分布): ヒートマップで同時確率が視覚化されています。対角要素(Math Low-Eng Low, Math High-Eng High)の確率が高く、数学と英語の成績に正の関連があることが見てとれます。

  2. 右上(周辺分布): 各行の合計(数学の周辺分布)と各列の合計(英語の周辺分布)が示されています。数学はMid(38%)が最も多く、英語はHigh(40%)が最も多いです。

  3. 左下(条件付き分布): 数学のレベルごとに英語の条件付き分布が異なっています。数学Lowの生徒は英語もLowが最多(68%)ですが、数学Highの生徒は英語もHighが最多(70%)です。

  4. 右下(独立性の検証): $P(X,Y) – P(X)P(Y)$ の差分マップです。対角方向が正(+0.060, +0.065, +0.120)で非対角方向が負であり、数学と英語は独立でないことが定量的に確認できます。

まとめ

本記事では、同時分布・周辺分布・条件付き分布の定義と相互関係を解説しました。

  • 同時分布 $f_{X,Y}(x,y)$ は2変数の全ての情報(依存構造を含む)を持つ最も基本的な記述
  • 周辺分布 $f_X(x) = \int f_{X,Y}(x,y) dy$ は一方を積分消去して得られ、変数間の依存構造の情報は失われる
  • 条件付き分布 $f_{X|Y}(x|y) = f_{X,Y}(x,y) / f_Y(y)$ は同時密度のスライスを正規化したもの
  • ベイズの定理は同時分布を2通りに条件付き分解できることの帰結
  • 2次元正規分布では、条件付き分布も正規分布であり、条件付き期待値は $Y$ の線形関数
  • $|\rho|$ が大きいほど条件付き分散は小さくなり、一方の変数の情報が他方の不確実性を削減する

次のステップとして、以下の記事も参考にしてください。