課題
2変量正規分布における条件付き期待値を理解する。
条件付き期待値
$$E[Y|X=x] = \mu_y + \rho\frac{\sigma_y}{\sigma_x}(x-\mu_x)$$
条件付き期待値の図示
import numpy as np
import matplotlib.pyplot as plt
import matplotlib_fontja
matplotlib_fontja.japanize()
mu = np.array([0, 0])
sigma_x = 1.0
sigma_y = 2.0
rho = 0.8
cov = np.array([
[sigma_x**2, rho * sigma_x * sigma_y],
[rho * sigma_x * sigma_y, sigma_y**2]
])
np.random.seed(1)
samples = np.random.multivariate_normal(mu, cov, size=2000)
x_vals = samples[:, 0]
y_vals = samples[:, 1]
x_line = np.linspace(-3, 3, 100)
E_y_given_x = mu[1] + rho * (sigma_y / sigma_x) * (x_line - mu[0])
plt.figure(figsize=(8, 6))
plt.scatter(x_vals, y_vals, alpha=0.3, label="2変量正規分布からのサンプル")
plt.plot(x_line, E_y_given_x, color="red", label=r"$E[Y|X]$(条件付き期待値)", linewidth=2)
plt.axhline(0, color='gray', linestyle='--', linewidth=0.8)
plt.axvline(0, color='gray', linestyle='--', linewidth=0.8)
plt.xlabel("X")
plt.ylabel("Y")
plt.title("2変量正規分布と条件付き期待値 $E[Y|X]$")
plt.legend()
plt.grid(True)
plt.tight_layout()
plt.show()
こうして見るとなんとなくズレているようにも見えます。「本当に合ってる?」という気もしてきますが、$\rho=0.99$を指定すると
このようになるので、間違ってはいないと考えられます。
気持ち
赤い線はつまり、2変量正規分布の3次元の山があって、その最大値を通過する直線に他なりません。相関係数が1であるということは2変量の標準偏差の積が共分散に等しいということです。そして、
- 共分散・相関係数が0であれば、3次元の山は上から見たときに長軸・単軸がxy直線上に乗っている山になる
- よって、$\rho=0$であれば赤色の直線の傾きは0
- yの分散・標準偏差が0であれば、x軸方向にしか散らばらない
- よって、$\sigma_y=0$であれば赤色の直線の傾きは0
- 同様に、xの分散・標準偏差が0であれば、y軸方向にしか散らばらない
- よって、$\sigma_x=0$であれば赤色の直線の傾きは$\infty$
というように考えることができるので、条件付き期待値はx及びyを平均で正規化したのちに、分母に$\sigma_x$を、分子に$\rho$、$\sigma_y$を掛けた値になることが推測できます。
※ 言わずもがな、これは気持ちを掴むための単なる考察です。
条件付き分散
$$V[Y|X=x] = \sigma_y^2(1-\rho^2)$$
気持ち
それぞれの山をx軸と垂直に切断した際の分布の分散を知りたいです。期待値での考察と同様に考えると、
- $\sigma_y$が小さいと条件付き分散も小さくなるはず
- 相関係数が0であれば、条件付き分散は単なるyの分散に等しい
- 逆に相関係数が1であれば、xからyが完全に計算できるので、xが与えられた上でのyの分散は0となる(yがxの制御の外でぶれることがない)
以上より、$\sigma_y^2$を項に持ち、$(1-\rho)$か$(1-\rho^2)$といった項を含むことが分かります。$\rho$はグラフの傾きで、y軸方向のブレの長さは正規分布における標準偏差と同じ役割を持つので2乗する、という理解です。
所感
何度も繰り返し遭遇することによって覚えていくものなのでしょう。
GitHub
参考