複数の正規分布の確率密度関数のグラフを表示するPythonコード
同じ座標系に複数の正規分布の確率密度関数のグラフをPythonで出力してみよう。
Pythonコード
scipy.stats.norm
のpdf()
関数を使い正規分布の確率密度関数を扱う。
$x$ 軸の定義として, (平均値)-5×(標準偏差)が最も小さい値から(平均値)+5×(標準偏差)の値が最も大きい範囲とした。
入力例. 正規分布 $N(50, 10^2)$, $N(60, 10^2)$, $N(50, 15^2)$, $N(70, 20^2)$ の確率密度関数のグラフを同時に描く。
import numpy as np
import matplotlib.pyplot as plt
from scipy.stats import norm
# 平均値と標準偏差
params = [
(50, 10),
(60, 10),
(50, 15),
(70, 20)
]
# 描画範囲(平均±5σの最小から最大の範囲)
mu_values = [p[0] for p in params]
sigma_values = [p[1] for p in params]
x_min = min(mu_values) - 5*max(sigma_values)
x_max = max(mu_values) + 5*max(sigma_values)
X = np.arange(x_min, x_max, 0.1)
# 各パラメータごとにプロット
for mu, sigma in params:
Y = norm.pdf(X, mu, sigma)
plt.plot(X, Y, label=f"μ={mu}, σ={sigma}")
# グラフの装飾
plt.title("Normal Distributions (PDF)")
plt.xlabel("x")
plt.ylabel("Probability Density")
plt.legend()
plt.grid(True)
plt.show()
