課題
1次元混合ガウス分布は複数個の正規分布の線型結合として表される確率分布です。統計学検定の対策中に色々気になったのでメモ。
可視化
以下は2つの正規分布の混合分布を可視化するソースコードです。
import numpy as np
import matplotlib.pyplot as plt
from scipy.stats import norm
import matplotlib_fontja
matplotlib_fontja.japanize()
# 正規分布のパラメータ
mu1, sigma1 = -0.5, 1
mu2, sigma2 = 0.5, 1
# x軸の範囲
x = np.linspace(min(mu1-3*sigma1, mu2-3*sigma2), max(mu1+3*sigma1, mu2+3*sigma2), 1000)
# それぞれの分布の確率密度
pdf1 = norm.pdf(x, mu1, sigma1)
pdf2 = norm.pdf(x, mu2, sigma2)
# 線の描画(←ここを完成させてください)
sum_pdf = 0.5 * pdf1 + 0.5 * pdf2
# プロット
plt.plot(x, pdf1, label="N(0,1)")
plt.plot(x, pdf2, label="N(3,1.5)")
plt.plot(x, sum_pdf, label="Sum of distributions", linestyle="--", color="black")
plt.legend()
plt.title("1次元混合ガウス分布")
plt.grid()
plt.show()
黒い線が1次元混合ガウス分布です。
$N(-0.5, 1^2)$、$N(0.5, 1^2)$というシンプルな設定で、左右対称の山が一つ存在する形状です。平均や標準偏差を変化させていくと、より複雑なグラフを描くことになります。
例えば$N(-2, 2^2)$、$N(3, 1^2)$であれば、
極大値が2箇所になります。
極大値が2つ存在する条件は?
当然気になりますよね。
理論的な考察を与える前に、観察により当たりをつけてみたいです。まず、等分散の2つの正規分布に対して、平均をどれだけ引き離せば2つの極大値が生まれるのかを考えていきます。
直線的になる区間がありますね。尤も、直線に見えるだけで実は少し窪みがある可能性を否定できません。もちろんグラフそのものは上に凸であるという可能性も考えるべきです。
では、平均の差を3としてみましょう。
極大値が2つ生まれました。
以下は平均の差を2.2としたものです。
わずかに窪みが観察されます。
この問題は、$|\mu_1-\mu_2|>2\sigma$が双峰性を持つための必要十分条件であることが知られているそうです。厳密な証明は手に余るのでここには載せません。今回は$\mu>1$であれば双峰性を持ち、$\mu\le1$であれば単峰性を持つと主張できます。
所感
シンプルな問題設定でも案外難しい課題に転じてしまうものですね。
GitHub