以下の統計検定2級対策動画で用いられているスライドの一部です。
今回のテーマ
- 統計学における 確率分布 を理解するための重要なツール…
- それが 累積分布関数 です。
- 具体例 から考え方を学び、その後に 一般的な定義 と 性質 を理解する流れで解説します。
まずは具体例から
- 累積分布関数は、扱うデータの種類によって振る舞いが異なります。
-
離散型確率変数
- 値が飛び飛びになる変数 (例: サイコロの目、アンケートの評価点)
-
連続型確率変数
- 値が連続的な変数 (例: 身長、体重、製品の重量)
具体例①:離散型 (1/4)
小テストの点数分布
-
状況設定
- 20人の学生が受けた10点満点の小テスト
- データは以下の通り
| 点数 (x) | 度数(人数) |
|---|---|
| 5点 | 2人 |
| 6点 | 3人 |
| 7点 | 5人 |
| 8点 | 6人 |
| 9点 | 3人 |
| 10点 | 1人 |
| 合計 | 20人 |
具体例①:離散型 (2/4)
「ある点数以下」の割合を考える
- 「ある点数以下の学生は、全体の何割か?」 を考えます。
- そのために、2つの指標を計算します。
-
累積度数
- ある点数までの人数を すべて合計 した値
-
累積相対度数
- 累積度数を全体(20人)で割った値
- これが「ある点数 $x$ 以下である確率」 $P(X \le x)$ になります
-
累積度数
具体例①:離散型 (3/4)
累積相対度数を計算する
| 点数 (x) | 度数 | 累積度数 | 累積相対度数 $P(X \le x)$ |
|---|---|---|---|
| 5 | 2 | $2$ | $2/20 = 0.10$ |
| 6 | 3 | $2+3=5$ | $5/20 = 0.25$ |
| 7 | 5 | $5+5=10$ | $10/20 = 0.50$ |
| 8 | 6 | $10+6=16$ | $16/20 = 0.80$ |
| 9 | 3 | $16+3=19$ | $19/20 = 0.95$ |
| 10 | 1 | $19+1=20$ | $20/20 = 1.00$ |
この右端の 累積相対度数 の列が、各点数に対応する
累積分布関数 $F(x)$ の値です。
具体例①:離散型 (4/4)
グラフと解釈
- 例えば、「点数が 8点以下 である確率」は?
- 表から $F(8) = P(X \le 8) = 16/20 = 0.8$
- つまり、80%の確率で点数が8点以下となります。
- グラフにすると、値がジャンプする 階段状 になります。
import numpy as np
import matplotlib.pyplot as plt
scores = np.array([5, 6, 7, 8, 9, 10])
counts = np.array([2, 3, 5, 6, 3, 1])
total_students = counts.sum()
cdf_values = np.cumsum(counts) / total_students
plot_scores = np.concatenate(([scores[0] - 1], scores))
plot_cdf = np.concatenate(([0], cdf_values))
plt.figure(figsize=(10, 6))
plt.step(plot_scores, plot_cdf, where='post', marker='o', linestyle='-')
plt.title('Cumulative Distribution Function (Discrete Variable)')
plt.xlabel('Test Score (x)')
plt.ylabel('Cumulative Probability F(x) = P(X <= x)')
plt.xticks(np.arange(4, 12, 1))
plt.yticks(np.arange(0, 1.1, 0.1))
plt.grid(True, which='both', linestyle='--', linewidth=0.5)
plt.ylim(-0.05, 1.05)
plt.xlim(4, 11)
plt.show()
具体例②:連続型 (1/3)
工場で製造される部品の重量
-
状況設定
- ある部品の重量 $X$ は、平均50g, 標準偏差2gの正規分布に従う
* **問題** * この部品の重量が「 **53g以下** である確率」はいくつか?
具体例②:連続型 (2/3)
考え方
- 連続型の場合、特定の一点の値をとる確率は 0 になります。
例: $P(X = 50) = 0$ - そのため、「ある値以下」や「ある範囲内」の確率を考えることが重要です。
- この問題は、累積分布関数 $F(53)$ の値を求めることに相当します。
$$
F(53) = P(X \le 53)
$$
具体例②:連続型 (3/3)
グラフと解釈
- 連続型の場合、CDFは 確率密度関数 を積分して求めます。
- グラフにすると、なめらかな S字状の曲線 を描きます。
- $F(53)$ は、下のグラフで$x=53$までの青い部分の面積に相当します。
import numpy as np
import matplotlib.pyplot as plt
from scipy.stats import norm
mu, sigma = 50, 2
x = np.linspace(mu - 4*sigma, mu + 4*sigma, 1000)
pdf_values = norm.pdf(x, mu, sigma)
cdf_values = norm.cdf(x, mu, sigma)
fig, ax1 = plt.subplots(figsize=(12, 7))
color_pdf = 'tab:blue'
ax1.set_xlabel('Weight (g)')
ax1.set_ylabel('Probability Density (PDF)', color=color_pdf)
ax1.plot(x, pdf_values, color=color_pdf, label='PDF f(x)')
ax1.tick_params(axis='y', labelcolor=color_pdf)
ax1.grid(True, linestyle='--', linewidth=0.5)
x_fill = np.linspace(mu - 4*sigma, 53, 500)
ax1.fill_between(x_fill, norm.pdf(x_fill, mu, sigma), color=color_pdf, alpha=0.3, label='Area for P(X <= 53)')
ax2 = ax1.twinx()
color_cdf = 'tab:red'
ax2.set_ylabel('Cumulative Probability (CDF)', color=color_cdf)
ax2.plot(x, cdf_values, color=color_cdf, linestyle='--', label='CDF F(x)')
ax2.tick_params(axis='y', labelcolor=color_cdf)
cdf_at_53 = norm.cdf(53, mu, sigma)
ax2.plot(53, cdf_at_53, 'ro')
ax1.axvline(x=53, color='grey', linestyle=':', linewidth=2)
ax2.axhline(y=cdf_at_53, color='grey', linestyle=':', linewidth=2)
ax2.text(53.5, cdf_at_53 - 0.05, f'F(53) = {cdf_at_53:.4f}', color=color_cdf)
fig.suptitle('PDF and CDF of a Normal Distribution (mu=50, sigma=2)', fontsize=16)
lines1, labels1 = ax1.get_legend_handles_labels()
lines2, labels2 = ax2.get_legend_handles_labels()
ax2.legend(lines1 + lines2, labels1 + labels2, loc='upper left')
fig.tight_layout(rect=[0, 0.03, 1, 0.95])
plt.show()
一般化 (1/2)
- ここまでの具体例を踏まえて、一般化しましょう。
累積分布関数 $F(x)$ とは、確率変数 $X$ がある特定の値 $x$ 以下になる確率を示す関数です。
- この考え方は、離散型・連続型どちらにも共通です。
$$
F(x) = P(X \le x)
$$
一般化 (2/2)
-
CDFを使うと、特定の範囲の確率も計算できます。
「$a$ より大きく $b$ 以下である確率」$P(a < X \le b)$ は、$F(b) - F(a)$ で計算可能です。 -
連続型の場合は、 確率密度関数 $f(t)$ の積分で表されます。
グラフの面積を求めることに相当します。
$$
F(x) = \int_{-\infty}^{x} f(t) dt
$$
CDFの3つの基本的な性質 (1/3)
どのような確率分布でも、CDFは共通の性質を持ちます。
-
性質1:値の範囲は0以上1以下
- $F(x)$ は確率なので、0から1の間の値しかとりません。
$$
0 \le F(x) \le 1
$$
CDFの3つの基本的な性質 (2/3)
-
性質2:非減少関数である
- $x$ が大きくなっても、$F(x)$ の値が 減少することはありません 。
(同じ値をとり続けるか、増加します)
数式で書くと、$x_1 < x_2$ であれば、必ず $F(x_1) \le F(x_2)$ が成り立ちます。 - 理由:$P(X \le x)$ の対象範囲は、$x$ が増えると広がる一方だからです。
- $x$ が大きくなっても、$F(x)$ の値が 減少することはありません 。
CDFの3つの基本的な性質 (3/3)
-
性質3:極限の値
- $x$ を限りなく小さくすると、$F(x)$ は 0 に近づきます。
- $x$ を限りなく大きくすると、$F(x)$ は 1 に近づきます。
$$
\lim_{x \to -\infty} F(x) = 0
$$
$$
\lim_{x \to \infty} F(x) = 1
$$
まとめ
-
累積分布関数 $F(x)$
- 確率変数 $X$ がある値 $x$ 以下である確率 $P(X \le x)$
-
離散型
- CDFは 階段状 のグラフになる
-
連続型
- CDFは確率密度関数を積分したもので、 S字状 のなめらかなグラフになる
- CDFは、確率分布の特性を理解するための基本的なツールです

