- 目次
- 理解
- ICT
- 事例
- まとめ
【理解】正規分布の数学的解説
正規分布の定義について
$N(\mu, \sigma^2)$(正規分布)
定義(正規分布)
実数 $\mu$ と $\sigma > 0$ について, 次の$f(x)$ を確率密度関数としてもつ確率分布を正規分布 $N(\mu, \sigma^2)$ という.
$\displaystyle f(x) = \frac{1}{\sqrt{2 \pi}\sigma} e^{-\frac{(x-\mu)^2}{2\sigma^2}}$

ベルカーブ(正規分布のグラフ)
正規分布はガウス分布とも呼ばれ、グラフはベルカーブや釣鐘型と呼ばれる。


$N(0,1^2)$(標準正規分布)
定義(標準正規分布)
正規分布 $N(0, 1^2)$ を標準正規分布という.
この確率分布の確率密度関数 $f_0$ は次の通りである.
$\displaystyle f_0(x) = \frac{1}{\sqrt{2 \pi}} e^{-\frac{x^2}{2}}$

$\displaystyle f(x)=\frac{1}{\sqrt{2\pi}\sigma} e^{-\frac{(x-\mu)^2}{2\sigma^2}} dx$(確率密度関数)
正規分布の確率密度関数 $f$ について, $\displaystyle \int_{-\infty}^{\infty} f(x) dx = 1$ であることを確かめてみよう。
命題
$\mu \in \mathbb{R}$, $\sigma>0$ であるとき,
$\displaystyle f(x) = \frac{1}{\sqrt{2 \pi}\sigma} e^{-\frac{(x-\mu)^2}{2\sigma^2}}$
とする. このとき, $\displaystyle \int_{-\infty}^{\infty} f(x) dx = 1$ である.
証明.
次のガウス積分を仮定して, 命題を示す.
$\displaystyle \int_{-\infty}^{\infty} e^{-t^2} dx=\sqrt{\pi}$
関数 $f(x)$ について, $x$ から $t$ に変数変換 $\displaystyle t = \frac{x-\mu}{\sqrt{2}\sigma}$ を行う. このとき, $-\infty < t < \infty$ であり, $dt = \displaystyle \frac{1}{\sqrt{2} \sigma}dx$ である.
したがって,
$\begin{aligned}
&\int_{-\infty}^{\infty} f(x) dx \\
&= \int_{-\infty}^{\infty} \frac{1}{\sqrt{2 \pi}\sigma} e^{-\frac{(x-\mu)^2}{2\sigma^2}} dx \\
& \displaystyle = \int_{-\infty}^{\infty} \frac{1}{\sqrt{\pi}} e^{-\left( \frac{x-\mu}{\sqrt{2}\sigma} \right)^2} \cdot \frac{dx}{\sqrt{2}\sigma} \\
& \displaystyle= \int_{-\infty}^{\infty} \frac{1}{\sqrt{\pi}} e^{-t^2}dt
\end{aligned}$
となる. ガウス積分を仮定すると,
$\begin{aligned}
& \int_{-\infty}^{\infty} \frac{1}{\sqrt{\pi}} e^{-t^2}dt \\
& = \frac{1}{\sqrt{\pi}} \int_{-\infty}^{\infty} e^{-t^2}dt \\
& = \frac{1}{\sqrt{\pi}} \cdot \sqrt{\pi} \\
& = 1. \\
\end{aligned}$
が得られる.
ゆえに, $\displaystyle \int_{-\infty}^{\infty} f(x) dx = 1$ が成り立つ.

次のグラフのいずれも面積が $1$ である.
$\displaystyle F(x)= \frac{1}{\sqrt{2\pi}\sigma} \int_{-\infty}^{x} e^{-\frac{(t-\mu)^2}{2\sigma^2}} dt$(累積分布関数)
$\displaystyle E \! \left[e^{tX}\right]
= \exp \! \left(\mu t + \tfrac{1}{2}\sigma^2 t^2\right)$(積率母関数)
正規分布の性質について
$X \sim N(\mu, \sigma^2)$ とする.
$E[X] =\mu$(平均値)
正規分布 $N(\mu, \sigma^2)$ の期待値が $\mu$ であることを確かめてみよう。
命題
正規分布 $N(\mu, \sigma^2)$ に従う確率変数 $X$ について,
$E[X] = \mu$
が成り立つ.
証明.
正規分布の確率密度関数は次の通りであった.
$f(x)$ $\displaystyle =\int_{-\infty}^{\infty} \frac{1}{\sqrt{2 \pi}\sigma} e^{-\frac{(x-\mu)^2}{2\sigma^2}} dx$
期待値 $E[X]$ の定義を実際に計算すると,
$\begin{aligned}
& E[X] \\
& =\int_{-\infty}^{\infty} xf(x) dx \\
&= \int_{-\infty}^{\infty} \frac{1}{\sqrt{2 \pi}\sigma} xe^{-\frac{(x-\mu)^2}{2\sigma^2}} dx
\end{aligned}$
となる. ここで, $y = x-\mu$ と変数変換を行う.
$dy=dx$ であり, $y$ は $-\infty$ から $\infty$ を動く.
$\begin{aligned}
& E[X] \\
&= \int_{-\infty}^{\infty} \frac{1}{\sqrt{2 \pi}\sigma} (y + \mu)e^{-\frac{y^2}{2\sigma^2}} dy \\
&= \int_{-\infty}^{\infty} \frac{1}{\sqrt{2 \pi}\sigma} y e^{-\frac{y^2}{2\sigma^2}} dy \\
& \phantom{xxxx}+ \mu \int_{-\infty}^{\infty} \frac{1}{\sqrt{2 \pi}\sigma} e^{-\frac{y^2}{2\sigma^2}} dy
\end{aligned}$
ここで, 第一項目の被積分関数である $\displaystyle y e^{-\frac{y^2}{2\sigma^2}}$ は奇関数であるため, $\displaystyle \int_{-\infty}^{\infty}$ での積分は $0$ となる.
また, 第二項目の被積分関数は $\displaystyle \frac{1}{\sqrt{2 \pi}\sigma} e^{-\frac{y^2}{2\sigma^2}}$ は $N(0, \sigma^2)$ の確率密度関数であるから, この積分の値は $1$ である.
ゆえに, $E[X] = \mu$ が成り立つ.
$N(50, 10^2)$ では, 期待値は $50$ です。
標準正規分布 $N(0,1^2)$ では, 期待値は $0$ です。
$V[X] = \sigma^2$(分散)
$\sigma[X] = \sigma$(標準偏差)
正規分布 $N(\mu, \sigma^2)$ の分散が $\sigma^2$ であることを確かめてみよう。
命題
正規分布 $N(\mu, \sigma^2)$ に従う確率変数 $X$ について,
$V[X] = \sigma^2$
が成り立つ.
証明.
正規分布 $N(\mu, \sigma^2)$ の確率密度関数は次の通りであった.
$f(x)$ $\displaystyle =\frac{1}{\sqrt{2 \pi}\sigma} e^{-\frac{(x-\mu)^2}{2\sigma^2}} $
この期待値は $E[X]=\mu$ であった.
分散 $V[X]$ の定義を実際に計算すると,
$\begin{aligned}
& V[X] \\
& =\int_{-\infty}^{\infty} (x-\mu)^2f(x) dx \\
&= \int_{-\infty}^{\infty} \frac{1}{\sqrt{2 \pi}\sigma} (x-\mu)^2e^{-\frac{(x-\mu)^2}{2\sigma^2}} dx
\end{aligned}$
となる. ここで, $\displaystyle z = \frac{x-\mu}{\sigma}$ と変数変換を行う.
$\sigma dz=dx$ であり, $z$ は $-\infty$ から $\infty$ を動く.
よって, $V[X]$ は次のようになる.
$V[X]$ $\displaystyle = \sigma^2 \int_{-\infty}^{\infty} \frac{1}{\sqrt{2 \pi}} z^2e^{-\frac{z^2}{2}} dz$
$\left( e^{-\frac{z^2}{2}} \right)' = -z e^{-\frac{z^2}{2}}$ であることから,
$\displaystyle \int z e^{-\frac{z^2}{2}} dz= -e^{-\frac{z^2}{2}}+C$
であることに注意する.( $C$ は積分定数.)
上の積分を部分積分により計算する.
$\displaystyle \int_{-\infty}^{\infty} \frac{1}{\sqrt{2 \pi}} z \left( ze^{-\frac{z^2}{2}} \right) dz$
$\displaystyle = \left[ \frac{1}{\sqrt{2 \pi}} z \left(-e^{-\frac{z^2}{2}}\right) \right]_{-\infty}^{\infty} dz$ $\displaystyle -\int_{-\infty}^{\infty} \frac{1}{\sqrt{2 \pi}} (z)' \left(-e^{-\frac{z^2}{2}}\right) dz$
$\displaystyle = 0$ $\displaystyle +\int_{-\infty}^{\infty} \frac{1}{\sqrt{2 \pi}} e^{-\frac{z^2}{2}} dz$
ここで, 第2項目の被積分関数は標準正規分布の確率密度関数であるための積分値は $1$ である.
ゆえに, $V[X] = \sigma^2$ が成り立つ.
$N(50, 10^2)$ では, 分散は $100$ です。
標準正規分布 $N(0,1^2)$ では, 分散は $1$ です。
$X \sim N(\mu, \sigma^2)$, $a, b\in \mathbb{R}$ のとき $aX+b \sim N(a\mu+b, a^2\sigma^2)$(再生性)
確率変数 $X \sim N(\mu, \sigma^2)$ を $Y=aX+b$ と変形すると, $Y \sim N(a \mu + b, (a\sigma)^2)$ であることを確かめてみよう。
命題
$a, b \in \mathbb{R}$ $(a \neq 0)$ とする. 正規分布 $N(\mu, \sigma^2)$ に従う確率変数 $X$ について, 確率変数 $Y=aX+b$ は正規分布 $N(a \mu + b, (a\sigma)^2)$ に従う.
証明.
正規分布 $N(\mu, \sigma^2)$ の確率密度関数は
$f_X(x)$ $\displaystyle =\frac{1}{\sqrt{2 \pi}\sigma} e^{-\frac{(x-\mu)^2}{2\sigma^2}}$
であった. 確率変数の変換 $X \mapsto Y$ は, 確率密度関数において,
$f_X(x) dx = f_Y(y) dy$
が成り立つ必要がある.
$y=ax+b$ について, $dy = a dx$ であるが, 確率の値が正であることを保つ必要があることから, $dy = |a| dx$ である.
また, $\displaystyle -\frac{(x-\mu)^2}{2\sigma^2}$ に $y=ax+b$ の関係式から $y$ に関する式にすると,
$\displaystyle -\frac{(y-(a\mu+b))^2}{2(a\sigma)^2}$
となる. ここで, $f_Y(y)dy = f_X(x)dx$ を実際に計算すると,
$f_X(x)$
$\displaystyle =\frac{1}{\sqrt{2 \pi}\sigma} e^{-\frac{(x-\mu)^2}{2\sigma^2}}dx$
$\displaystyle =\frac{1}{\sqrt{2 \pi}\sigma} e^{-\frac{(\frac{x-b}{a}-\mu)^2}{2\sigma^2}} \frac{1}{|a|}dy$
$\displaystyle =\frac{1}{\sqrt{2 \pi}|a|\sigma} e^{-\frac{(y-(a\mu+b))^2}{2(a\sigma)^2}} dy$
となる. したがって, $Y$ の確率密度関数は
$\displaystyle f_Y(y) =\frac{1}{\sqrt{2 \pi}|a|\sigma} e^{-\frac{(y-(a\mu+b))^2}{2(a\sigma)^2}}$
である. この式は, 平均値 $a\mu + b$, 標準偏差 $|a|\sigma$ の正規分布の確率密度関数を表している.
ゆえに, $Y \sim N(a\mu + b, (a\sigma)^2)$ である.
$N(50, 10^2)$ に従う確率変数を $X$ とすると,
$Y=2X -10$
という変換をした確率変数 $Y$ は, 正規分布 $N(90, 20^2)$ に従います。
$\displaystyle Z=\frac{X-\mu}{\sigma}$(標準化)
$X \sim N(\mu, \sigma^2)$ ならば, $Z \sim N(0,1^2)$ となる.
証明は, $\displaystyle a=\frac{1}{\sigma}$ と $\displaystyle b=-\frac{\mu}{\sigma}$ とすると, $Z=aX+b$ と表せることで上の再生性の証明に帰着することができる.
$X_1 \sim N(\mu_1, \sigma_1^2)$, $X_2 \sim N(\mu_2, \sigma_2^2)$ のとき $X_1+X_2 \sim N(\mu_1+\mu_2, \sigma_1^2 + \sigma_2^2)$(再生性)
$P(\mu -\sigma \leq X \leq \mu + \sigma) \fallingdotseq 0.68$,
$P(\mu -2\sigma \leq X \leq \mu + 2\sigma) \fallingdotseq 0.95$,
$P(\mu -3\sigma \leq X \leq \mu + 3\sigma) \fallingdotseq 0.99$
正規分布 $N(\mu, \sigma^2)$ において, $\mu \pm \sigma$ での確率が約 $68\%$, $\mu \pm 2\sigma$ での確率が約 $95\%$, $\mu \pm 3\sigma$ での確率が約 $99\%$ であることを確かめてみよう。
性質
正規分布 $N(\mu, \sigma^2)$ に従う確率変数 $X$ について,
$P(\mu-\sigma \leq X \leq \mu + \sigma)$ $\fallingdotseq 0.68$,
$P(\mu-2\sigma \leq X \leq \mu + 2\sigma)$ $\fallingdotseq 0.95$,
$P(\mu-3\sigma \leq X \leq \mu + 3\sigma)$ $\fallingdotseq 0.99$
が成り立つ.
証明.
標準正規分布 $N(0, 1^2)$ に従う確率変数を $Z$ とする. この確率密度関数
$f(x)$ $\displaystyle =\frac{1}{\sqrt{2 \pi}} e^{-\frac{x^2}{2}} $
において, 実際に
$P(-1 \leq Z \leq 1)$ $= 0.6827 \cdots$,

$P(-2 \leq Z \leq 2)$ $= 0.9545 \cdots$,

$P(-3 \leq Z \leq 3)$ $= 0.9973 \cdots$

が成り立つ.
正規分布 $N(\mu, \sigma^2)$ に従う確率変数 $X$ について, 標準化 $\displaystyle Z=\frac{X-\mu}{\sigma}$ を行えば, $Z$ は標準正規分布に従う. また, $n$ を自然数とすれば,
$P(\mu - n\sigma \leq X \leq \mu + n \sigma)$
$=P(\mu - n\sigma \leq \sigma Z+ \mu \leq \mu + n \sigma)$
$=P(- n\sigma \leq \sigma Z \leq n \sigma)$
$=P(- n \leq Z \leq n)$
が成り立つ.
ゆえに, $n=1$, $2$, $3$ とすれば,
$P(\mu-\sigma \leq X \leq \mu + \sigma)$ $\fallingdotseq 0.68$,
$P(\mu-2\sigma \leq X \leq \mu + 2\sigma)$ $\fallingdotseq 0.95$,
$P(\mu-3\sigma \leq X \leq \mu + 3\sigma)$ $\fallingdotseq 0.99$
が成り立つ.
$N(50, 10^2)$ では,
$P(40 \leq X \leq 60)$ $\fallingdotseq 0.68$,
$P(30 \leq X \leq 70)$ $\fallingdotseq 0.95$,
$P(20 \leq X \leq 80)$ $\fallingdotseq 0.99$
です。
【ICT】正規分布の値を計算
【表計算】Excel・スプレッドシートで正規分布の計算
正規分布の累積積分関数NORM.DIST(x,mu,sigma,TRUE)
正規分布の確率密度関数NORM.DIST(x,mu,sigma,FALSE)
表計算ソフト(Excelなど)で正規分布のCDFとPDFの値を取得してみよう。
※作業環境はGoogleスプレッドシートです。
NORM.DIST関数
正規分布 $N(\mu, \sigma^2)$ の確率密度関数 $f(x)$ と累積分布関数 $F(x)=\int_{-\infty}^x f(t)dt$ の値を取得するためにNORM.DIST()
関数を利用する。
NORM.DIST(x, mu, sigma, 関数形式)
として入力する。関数形式
には累積分布関数の場合はTRUE
, 確率密度関数の場合はFALSE
を指定する。
★完成イメージ

入力例. 正規分布 $N(50,10^2)$ について, $x=0$, $10$, $\cdots$, $90$, $100$ のときの累積分布関数の値 $F(x)$ と確率密度関数の値 $f(x)$ を取得する。
・A列には $x$ の値を入力した。
・B2
には, =NORM.DIST(A2, 50, 10, TRUE)
と入力した。B列方向に参照して自動入力した。
・C2
には, =NORM.DIST(A2, 50, 10, FALSE)
と入力した。C列方向に参照して自動入力した。

なお, それぞれのグラフを表示すると次のようになった。


【コード】Pythonで正規分布の計算
正規分布の確率密度関数のグラフ scipy.stats.norm.pdf()
平均値と標準偏差から正規分布の確率密度関数のグラフをPythonで出力してみよう。
Pythonコード
scipy.stats.norm
のpdf()
関数を使い正規分布の確率密度関数を扱う。
正規分布 $N(\mu, \sigma^2)$ の確率密度関数の $f(x)$ の値は, pdf(x, mu, sigma)
によって取得できる。
入力例. 正規分布 $N(50, 10^2)$ の確率密度関数のグラフを描く。
import numpy as np
import matplotlib.pyplot as plt
from scipy.stats import norm
#平均値と標準偏差
mu = 50
sigma = 10
#正規分布を表示
X = np.arange(mu-5*sigma, mu+5*sigma, 0.1)
Y = norm.pdf(X, mu, sigma)
plt.plot(X, Y, color="orange", label = "Normal-distribution")
#グラフの表示
plt.legend()
plt.show()

複数の正規分布の確率密度関数のグラフ scipy.stats.norm.pdf()
同じ座標系に複数の正規分布の確率密度関数のグラフを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()

正規分布の累積分布関数のグラフ scipy.stats.norm.cdf()
平均値と標準偏差から正規分布の累積分布関数のグラフをPythonで出力してみよう。
Pythonコード
scipy.stats.norm
のcdf()
関数を使い正規分布の累積分布関数を扱う。
正規分布 $N(\mu, \sigma^2)$ の累積分布関数の $F(x)$ の値は, cdf(x, mu, sigma)
によって取得できる。
入力例. 正規分布 $N(50, 10^2)$ の累積分布関数のグラフを描く。
import numpy as np
import matplotlib.pyplot as plt
from scipy.stats import norm
# 平均と標準偏差
mu = 50
sigma = 10
# x の範囲
X = np.linspace(mu - 5*sigma, mu + 5*sigma, 500)
Y = norm.cdf(X, mu, sigma)
# グラフ描画
plt.plot(X, Y, color="blue", label=f"μ={mu}, σ={sigma}")
plt.xlabel("x")
plt.ylabel("CDF")
plt.title("Normal Distribution CDF")
plt.legend()
plt.grid(True, linestyle="--", alpha=0.6)
plt.show()

正規分布の面積 $P(X \leq c)$ の図示 cdf(c, mu, sigma)
正規分布から確率を計算し、グラフで図示することをPythonでやってみよう。
Pythonコード
scipy.stats.norm
のpdf()
関数で正規分布の確率密度関数, cdf()
関数で累積分布関数を扱う。
入力例. 正規分布 $N(50, 10^2)$ の累積分布関数の値 $F(60) = \int_{-\infty}^{60}f(x)dx$ を出力しグラフで図示する。
import numpy as np
import matplotlib.pyplot as plt
from scipy.stats import norm
# 平均と標準偏差
mu = 50
sigma = 10
# 塗りつぶすxの値
c = 60
# xの範囲
X = np.linspace(mu - 5*sigma, mu + 5*sigma, 500)
pdf = norm.pdf(X, mu, sigma)
cdf_value = norm.cdf(c, mu, sigma)
# グラフ作成
fig, ax1 = plt.subplots(figsize=(8,5))
# PDF描画
ax1.plot(X, pdf, color='orange', label='PDF')
ax1.set_xlabel('x')
ax1.set_ylabel('PDF', color='orange')
ax1.tick_params(axis='y', labelcolor='orange')
# PDF下側の塗りつぶし
X_fill = X[X <= c]
pdf_fill = pdf[X <= c]
ax1.fill_between(X_fill, pdf_fill, color='orange', alpha=0.3)
# CDFを右軸に表示
ax2 = ax1.twinx()
ax2.plot(X, norm.cdf(X, mu, sigma), color='blue', label='CDF')
ax2.set_ylabel('CDF', color='blue')
ax2.tick_params(axis='y', labelcolor='blue')
# x=c の位置にCDF値まで垂直線
ax2.vlines(c, 0, cdf_value, color='blue', linestyle='--', alpha=0.6)
# 水平方向の線:CDF値の高さで右端まで
x_right = ax1.get_xlim()[1] # x軸の右端
ax2.hlines(cdf_value, c, x_right, color='blue', linestyle='--', alpha=0.6)
# CDFのドット
ax2.plot(c, cdf_value, 'bo', markersize=6)
# CDF値を右上に表示(キャプション)
ax2.text(0.95, 0.90, f"CDF(x={c}) = {cdf_value:.3f}", color='blue',
fontsize=12, verticalalignment='top', horizontalalignment='right',
transform=ax2.transAxes, bbox=dict(facecolor='white', alpha=0.5, edgecolor='blue'))
# グリッド・タイトル・凡例
ax1.grid(True, linestyle='--', alpha=0.5)
lines, labels = ax1.get_legend_handles_labels()
lines2, labels2 = ax2.get_legend_handles_labels()
ax1.legend(lines + lines2, labels + labels2, loc='upper left')
plt.title(f'Normal Distribution PDF & CDF (shaded to x={c})')
plt.show()

ちなみに、PDFとCDFの $y$ 軸を同じスケールにすると、次のグラフになります。

正規分布の面積 $P(c_1 \leq X \leq c_2)$ の図示 cdf(c2, mu, sigma)-cdf(c1, mu, sigma)
正規分布から確率を計算し、グラフで図示することをPythonでやってみよう。
Pythonコード
scipy.stats.norm
のcdf()
関数で累積分布関数を扱うことができる。
正規分布 $N(\mu, \sigma)$ の累積分布関数を $F_X(x)$ とすると, $P(c_1 \leq X \leq c_2) = F(c_2)-F(c_1)$ であるので, 確率はcdf(c2, mu, sigma)-cdf(c1, mu, sigma)
で求めることができる。

入力例. 正規分布 $N(50, 10^2)$ の確率 $P(45 \leq X \leq 65)$ を出力しグラフで図示する。
import numpy as np
import matplotlib.pyplot as plt
from scipy.stats import norm
# 平均と標準偏差
mu = 50
sigma = 10
# 塗りつぶす範囲
c1 = 45 #小
c2 = 65 #大
# xの範囲
X = np.linspace(mu - 5*sigma, mu + 5*sigma, 500)
pdf = norm.pdf(X, mu, sigma)
# グラフ作成
fig, ax = plt.subplots(figsize=(8,5))
# PDF描画
ax.plot(X, pdf, color='orange', label='PDF')
ax.set_xlabel('x')
ax.set_ylabel('PDF', color='orange')
ax.tick_params(axis='y', labelcolor='orange')
# 指定範囲を塗りつぶし
mask = (X >= c1) & (X <= c2)
ax.fill_between(X[mask], pdf[mask], color='orange', alpha=0.3)
# 面積を計算
area = norm.cdf(c2, mu, sigma) - norm.cdf(c1, mu, sigma)
# 枠内 左上に表示
ax.text(
0.05, 0.95,
f"P({c1} <= X <= {c2}) = {area:.4f}",
transform=ax.transAxes, # 枠内の相対座標
fontsize=12,
va='top', ha='left',
bbox=dict(facecolor="white", alpha=0.7, edgecolor="gray")
)
# グリッド・タイトル・凡例
ax.grid(True, linestyle='--', alpha=0.5)
ax.legend(loc='upper right')
plt.title(f'Normal Distribution PDF (shaded between {c1} and {c2})')
plt.tight_layout()
plt.show()

二項分布 $B(n,p)$ と正規分布 $N(np, np(1-p))$ の比較
試行回数を大きくしたとき二項分布は正規分布に近づいていくのか、Pythonでグラフを作成することで検証してみました。
二項分布のヒストグラムと正規分布のグラフを重ねて観察する実験①と、実際にどちらも確率を算出して確率が近似できているのかの実験②の2つを行っています。
目次
正規分布のコード【Python】
正規分布のPythonコード
次のコードをコピペすれば正規分布をPythonで描写できます。母平均と母標準偏差のところの数字を変えて、必要な正規分布を作成してください。
import numpy as np
import matplotlib.pyplot as plt
from scipy.stats import norm #normは正規分布
mu = 50 # 母平均
sigma = 10 # 母標準偏差
#正規分布を表示
X = np.arange(mu-5*sigma, mu+5*sigma, 0.1)
Y = norm.pdf(X, mu, sigma)
plt.plot(X, Y, color="orange", label = "Normal-distribution")
#グラフの表示
plt.legend() #凡例表示
plt.show()
正規分布の表示結果

【実験①】二項分布と正規分布の見た目の観察
実験開始(Pythonコード)
試行回数 $n$ の二項分布 $B(n, p)$ と正規分布 $N(np, np(1-p))$ の違いを観察するコードを紹介します。
今回のコードでは、二項分布 $B(100, 0.3)$ と 正規分布 $N(30, 21)$ を比較しています。
import numpy as np
import matplotlib.pyplot as plt
from scipy.stats import binom
from scipy.stats import norm
# 二項分布の情報
n = 100 # Number of trials
p = 0.3 # Probability of success
# Plot the binomial distribution
x_values = np.arange(0, n + 1)
binomial_probs = binom.pmf(x_values, n, p)
plt.bar(x_values, binomial_probs, color='y', alpha=0.7, label = "Binomial-distribution")
#正規分布を表示
mu = n*p # 母平均
sigma = np.sqrt(n*p*(1-p)) # 母標準偏差
X = np.arange(mu-3*sigma, mu+3*sigma, 0.1)
Y = norm.pdf(X, mu, sigma)
plt.plot(X, Y, color="b", label = "Normal-distribution")
# Other Informations
plt.legend() #凡例表示
plt.xlabel("Number of Successes")
plt.ylabel("Probability")
plt.title(f"Binomial Distribution (n={n}, p={p})")
plt.grid(True)
plt.show()
試行結果
試行回数が $n=100$ のときと、他のいくつかの場合で二項分布のヒストグラムと、正規分布を重ねて描写しています。
$B(100, 0.3)$ と $N(30, 21)$ の比較

$n = 100$ のときは,二項分布(黄色)はかなり密なので,正規分布が近似になってそう。
$B(40, 0.3)$ と $N(12, 8.4)$ の比較

$n=40$ では,隙間が見えるが,まだ密なので良い感じで近似になってそう。
$B(30, 0.3)$ と $N(9, 6.3)$ の比較

$n=30$ のときも,まだ正規分布で近似できていると言ってもよさそう。
$B(10, 0.3)$ と $N(3, 2.1)$ の比較

$n=10$ のときは,二項分布の左右非対称性が目立つので,正規分布の対称性と相性が悪そう。
$B(5, 0.3)$ と $N(1.5, 1.05)$ の比較

$n=5$ では,だいぶ左右非対称のスカスカなので,近似の精度が良いのか?って思う。
以上から、試行回数が増えれば、二項分布と正規分布は一致していくと考えてもよさそうですね。
【実験②】二項分布と正規分布の確率の数値比較
二項分布で $P(a<X<b)$ の確率を計算したときと, 正規分布で $P(a<X<b)$ の計算をしたときの値の比較をして近似できているか調べたいと思いました。
実験開始(Pythonコード)
import numpy as np
import matplotlib.pyplot as plt
from scipy.stats import binom
from scipy.stats import norm
from scipy import stats
import math
# 試行回数と成功確率
n = 100 # 試行回数
p = 0.5 # 成功確率
A = 60 # [正規分布]A以上の所の確率を求める [二項分布]Aからnまでの確率の和を求める
# 二項分布を表示
x_values = np.arange(0, n)
binomial_probs = binom.pmf(x_values, n, p)
plt.bar(x_values, binomial_probs, color='y', alpha=0.7, label = "Binomial-distribution")
#正規分布を表示
mu = n*p # 母平均
sigma = np.sqrt(n*p*(1-p)) # 母標準偏差
X = np.arange(0, n+1, 0.1)
Y = norm.pdf(X, mu, sigma)
plt.plot(X, Y, color="b", label = "Normal-distribution")
# Other Informations
plt.legend() #凡例表示
plt.xlabel("Number of Successes")
plt.ylabel("Probability")
plt.title(f"Binomial Distribution (n={n}, p={p})")
plt.grid(True)
plt.fill_between(X[X >= A], Y[X >= A])
plt.show()
def sum_binomial_probs(n, p, m):
total_prob = 0.0
for k in range(math.ceil(m), n+1):
prob = binom.pmf(k, n, p) # 二項分布の確率質量関数を使用
total_prob += prob
return total_prob
sum_prob = sum_binomial_probs(n, p, A)
print(f"[二項分布]{n} 回試行して, 成功回数が {A} 回以上の確率は約{sum_prob*100: .5f}% です.")
probability = 1 - stats.norm.cdf(x = A, loc=mu, scale=sigma)
# 結果の表示
print(f"[正規分布]成功回数が{A}回以上になる確率は約{probability * 100:.5f}%です。")
試行結果
実際に上のPythonコードを実行すると、次の出力が得られます。

試行回数 $n=100$ のとき、成功回数が60回以上の確率を調べています。
黄色の二項分布の方は、約2.84%(0.0284)の確率で、青色の正規分布の方は約2.27%(0.0227)の確率でした。
「近似している」とは言えない感じですね。
「だいたい同じ」ということもできなくもないです。
でも、もっと試行回数が大きければ、もっと良い近似ができそうな気はします。
おおよその値を出すだけならば、どちらかの計算で代用しても良さそうです。
いろいろと数字を変えて、やってみてね!
【事例】正規分布の具体例
※ここは2学期に授業するので、今後早いうちに詳しく付け加えていきます。
偏差値(成績分布)
$N(50,10^2)$
パスタを半分に折る(誤差の分布)
パスタを半分に折る
(参考:青山学院大学寺尾先生HP)
人時計(誤差の分布)
心で数を数える
ゴルトンボード
【まとめ】ポイントノート
「正規分布」とは
実験や製造などの誤差がつくる自然な確率分布のこと。
確率密度関数
$\displaystyle f(x) = \frac{1}{\sqrt{2 \pi}\sigma} e^{-\frac{(x-m)^2}{2\sigma^2}}$($m \in \mathbb{R}$, $\sigma>0$)
A. 期待値 $E[X]$と分散 $V[X]$
正規分布に従う確率変数 $X$ について, $E[X] = m$, $V[X] = \sigma^2$.
記号
平均値 $m$, 標準偏差 $\sigma$ の
正規分布を $N(m, \sigma^2)$
と書く.
B. 正規分布の再帰性
独立な確率変数 $X$ と $Y$ が $N(m_1, \sigma_1^2)$ と $N(m_2, \sigma_2^2)$ にそれぞれ従うとき, $X + Y$ は正規分布 $N(\mu_1 + \mu_2, \sigma_1^2 + \sigma_2^2)$ に従う.
C. 標準化(変数変換)
$N(m,\sigma^2)$ に従う確率変数 $X$ について, 確率変数 $\displaystyle Z=\frac{X-m}{\sigma}$ は 標準正規分布 $N(0,1^2)$ に従う.
D. 性質(確率の目安)
正規分布では, $m \pm 1\sigma$ では約$68 \%$, $m \pm 2\sigma$ では約$95 \%$, $m \pm 3\sigma$ では約$99 \%$の確率に対応する.
ポイント解説
正規分布は
ガウス分布
とも呼ばれ、グラフはベルカーブや釣鐘型と呼ばれる。


標準正規分布
$N(0,1^2)$ のこと:$$f(z) = \frac{1}{\sqrt{2 \pi}} e^{-\frac{z^2}{2}}$$
確率密度関数の証明
$\int_{-\infty}^{\infty} f(x) dx=1$ であることは, ガウス積分 $\int_{-\infty}^{\infty} e^{-t^2} dx=\sqrt{\pi}$ より導かれる。
D
$m-n \sigma \leqq X \leqq m+n\sigma$ の範囲を $m \pm n \sigma$ と略記している。

EXCEL
NORM.DIST関数;引数には①データ範囲②平均値③標準偏差④関数形式(TRUE→下側累積確率, FALSE→確率密度関数の値)を入力する。