common.title

Docs
Quantum Circuit
TYTAN CLOUD

QUANTUM GAMING


autoQAOA
Desktop RAG

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


まとめ

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

© 2025, blueqat Inc. All rights reserved