common.title
Cloud support

Nobisuke

Dekisugi

RAG


autoQAOA
RAG for dev
Fortune telling app
Annealing

Community

Overview
Service overview
Terms of service

Privacy policy

Contact
Research

Sign in
Sign up
common.title

二次元の正規分布について調べてみた(ChatGPTに聞いてみた。。。)

Yuichiro Minato

2024/09/05 13:28

二次元の正規分布(多変量正規分布)は、複数の変数が正規分布に従い、同時に分布する場合を表したものです。これにより、二つの変数が互いにどう関連しているか、そしてそれぞれがどのように広がっているかを記述できます。以下で二次元正規分布について詳しく説明します。

1. 基本的な定義

二次元正規分布は、二つの変数 X_1X_2 が正規分布に従い、共に分布している場合の分布です。この分布は、平均ベクトルと共分散行列によって完全に定義されます。

  • 平均ベクトル \mu は、各変数の期待値(平均)を持つベクトルです。
\mu = \begin{bmatrix} \mu_1 \\ \mu_2 \end{bmatrix}
  • 共分散行列 \Sigma は、変数間の分散と共分散を含む行列です。分散は変数のばらつきを示し、共分散は二つの変数の間の相関を示します。
\Sigma = \begin{bmatrix} \sigma_{11} & \sigma_{12} \\ \sigma_{21} & \sigma_{22} \end{bmatrix}

ここで、\sigma_{11}\sigma_{22} はそれぞれ X_1X_2 の分散、\sigma_{12}(または \sigma_{21})は共分散です。

2. 確率密度関数(PDF)

二次元正規分布の確率密度関数 (PDF) は、次のように表されます。

f(\mathbf{x}) = \frac{1}{2\pi \sqrt{|\Sigma|}} \exp\left( -\frac{1}{2} (\mathbf{x} - \mu)^T \Sigma^{-1} (\mathbf{x} - \mu) \right)
  • \mathbf{x} = \begin{bmatrix} x_1 \\ x_2 \end{bmatrix} は二次元ベクトル。
  • \mu = \begin{bmatrix} \mu_1 \\ \mu_2 \end{bmatrix} は平均ベクトル。
  • \Sigma は共分散行列。
  • \Sigma^{-1} は共分散行列の逆行列。
  • |\Sigma| は共分散行列の行列式。

この式は、分布の形状が楕円形の等高線で表されることを示しています。楕円の中心は平均ベクトル\mu に位置し、楕円の形や広がりは共分散行列\Sigma によって決まります。

3. 共分散行列の影響

共分散行列\Sigma の要素によって、分布の形状と広がり方が変わります。

  • 分散(\sigma_{11}, \sigma_{22}:各変数の分布の幅を示します。大きいほど、その変数のばらつきが大きいことを意味します。
  • 共分散(\sigma_{12}, \sigma_{21}:二つの変数の間の相関を示します。正の共分散は変数が同じ方向に変化することを示し、負の共分散は逆の方向に変化することを示します。

例えば、共分散が 0 の場合、二つの変数は独立しており、分布は円形に近づきます。共分散が大きい場合、分布は楕円形になり、二つの変数が強く関連していることを示します。

4. 可視化

二次元正規分布は、通常、等高線や3Dプロットを使って可視化されます。等高線は分布の確率密度が同じ値をとる点を結んだもので、楕円形の輪郭を描きます。3Dプロットでは、確率密度が山のような形で表現されます。

5. Pythonでの可視化例

Pythonで二次元正規分布を可視化する際には、matplotlibscipy.stats を使うと便利です。以下は、共分散行列によって形成される分布の等高線プロットの例です。

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

# 平均と共分散行列
mu = [0, 0]
sigma = [[1, 0.5], [0.5, 1]]

# グリッド生成
x, y = np.mgrid[-3:3:.01, -3:3:.01]
pos = np.dstack((x, y))

# 多次元正規分布のPDFを計算
rv = multivariate_normal(mu, sigma)
pdf = rv.pdf(pos)

# 等高線プロット
plt.contour(x, y, pdf)
plt.title("二次元正規分布の等高線")
plt.xlabel("x1")
plt.ylabel("x2")
plt.show()

このコードでは、二次元正規分布の確率密度を等高線プロットで表現し、共分散の影響を視覚的に確認できます。

image

三次元でも表現できました。

from mpl_toolkits.mplot3d import Axes3D

# 3Dプロット
fig = plt.figure()
ax = fig.add_subplot(111, projection='3d')
ax.plot_surface(x, y, pdf, cmap='viridis')
ax.set_xlabel("x1")
ax.set_ylabel("x2")
plt.show()

image


まとめ

二次元正規分布は、二つの変数が共同でどのように分布するかを示す分布で、平均ベクトルと共分散行列によって特徴づけられます。この分布は、共分散によって楕円形の等高線を形成し、変数間の相関を視覚的に示すことができます。

© 2024, blueqat Inc. All rights reserved