🌟 二項分布の定義
成功確率 $p$、試行回数 $n$ のベルヌーイ試行を $n$ 回繰り返すとき、成功回数 $X$ は以下の確率で分布する:
$$
P(X = k) = \binom{n}{k} p^k (1 - p)^{n - k}
\quad (k = 0, 1, \dots, n)
$$
✅ 期待値の導出
期待値 $\mathbb{E}[X]$ は以下の式から求める:
$$
\mathbb{E}[X] = \sum_{k=0}^{n} k \cdot \binom{n}{k} p^k (1 - p)^{n - k}
$$
ここで、以下の恒等式を用いる:
$$
k \cdot \binom{n}{k} = n \cdot \binom{n-1}{k-1}
$$
したがって、
$$
\mathbb{E}[X] = n \cdot \sum_{k=1}^{n} \binom{n-1}{k-1} p^k (1-p)^{n-k}
$$
変数変換 $j = k - 1$ によって:
$$
\mathbb{E}[X] = n \cdot p \cdot \sum_{j=0}^{n-1} \binom{n-1}{j} p^j (1-p)^{n-1-j} = n \cdot p
$$
✅ 分散の導出
$$
\mathrm{Var}(X) = \mathbb{E}[X^2] - (\mathbb{E}[X])^2
$$
まず、
$$
\mathbb{E}[X(X - 1)] = \sum_{k=0}^{n} k(k - 1) \binom{n}{k} p^k (1 - p)^{n - k}
= n(n-1)p^2
$$
$$
\Rightarrow \mathbb{E}[X^2] = \mathbb{E}[X(X - 1)] + \mathbb{E}[X]
= n(n-1)p^2 + np
$$
$$
\mathrm{Var}(X) = n(n-1)p^2 + np - (np)^2 = np(1 - p)
$$
✅ モーメント母関数(MGF)を用いた導出
二項分布のモーメント母関数:
$$
M_X(t) = (pe^t + 1 - p)^n
$$
期待値:
$$
\mathbb{E}[X] = M_X'(0) = n p
$$
分散:
$$
\mathrm{Var}(X) = M_X''(0) - (M_X'(0))^2 = np(1 - p)
$$
🧪 ポケモンの例で考える(二項分布)
-
ポケモンの技「かえんほうしゃ」が命中率 85%。
-
10回試行するとき、「命中した回数」を $X$ とすると、$X \sim \text{Binomial}(10, 0.85)$
-
期待値:
$$
\mathbb{E}[X] = 10 \cdot 0.85 = 8.5 \quad \text{(平均的に8.5回命中)}
$$ -
分散:
$$
\mathrm{Var}(X) = 10 \cdot 0.85 \cdot 0.15 = 1.275 \quad \text{(ブレ幅)}
$$ -
標準偏差:
$$
\sqrt{1.275} \approx 1.13
$$
import numpy as np # 数値計算ライブラリ / Numerical computation
import matplotlib.pyplot as plt # グラフ描画ライブラリ / For plotting
from scipy.stats import binom # 二項分布 / Binomial distribution
# -------------------------------
# Parameters / パラメータの設定
# -------------------------------
n = 10 # 試行回数 / Number of trials
p = 0.85 # 成功確率 / Probability of success
x = np.arange(0, n+1) # 0 から n までの全成功数 / All possible success counts
# -------------------------------
# Binomial PMF / 二項分布の確率質量関数
# -------------------------------
pmf = binom.pmf(x, n, p) # P(X = k) を計算 / Compute the PMF
# -------------------------------
# Expected Value and Variance / 期待値と分散
# -------------------------------
expected_value = n * p # 期待値 / Expected value
variance = n * p * (1 - p) # 分散 / Variance
std_dev = np.sqrt(variance) # 標準偏差 / Standard deviation
# -------------------------------
# Plot / グラフ表示
# -------------------------------
plt.figure(figsize=(10, 6)) # 図のサイズ / Set figure size
plt.bar(x, pmf, color='skyblue', edgecolor='black') # 棒グラフ表示 / Bar plot
plt.title('Binomial Distribution PMF (n=10, p=0.85)') # タイトル / Title
plt.xlabel('Number of successes (k)') # 横軸ラベル / X-axis label
plt.ylabel('Probability P(X=k)') # 縦軸ラベル / Y-axis label
plt.grid(axis='y') # Y軸にグリッド表示 / Grid on Y-axis
# 期待値の位置に赤い破線を引く / Draw a red dashed line at expected value
plt.axvline(expected_value, color='red', linestyle='--',
label=f'Expected value = {expected_value:.2f}')
plt.legend() # 凡例を表示 / Show legend
plt.tight_layout() # レイアウト調整 / Adjust layout
plt.show() # グラフ表示 / Show plot
📘 ポアソン分布の定義
平均発生率 $\lambda$ のとき、単位時間内に $k$ 回事象が起こる確率は:
$$
P(X = k) = \frac{\lambda^k}{k!} e^{-\lambda} \quad (k = 0, 1, 2, \dots)
$$
✅ 期待値の導出
期待値 $\mathbb{E}[X]$ を直接求める:
$$
\mathbb{E}[X] = \sum_{k=0}^\infty k \cdot \frac{\lambda^k}{k!} e^{-\lambda}
= e^{-\lambda} \sum_{k=1}^\infty k \cdot \frac{\lambda^k}{k!}
= e^{-\lambda} \sum_{k=1}^\infty \frac{\lambda^k}{(k-1)!}
$$
変数変換 $j = k - 1$ より:
$$
\mathbb{E}[X] = e^{-\lambda} \cdot \lambda \cdot \sum_{j=0}^\infty \frac{\lambda^j}{j!}
= \lambda \cdot e^{-\lambda} \cdot e^\lambda = \lambda
$$
✅ 分散の導出
分散 $\mathrm{Var}(X) = \mathbb{E}[X^2] - (\mathbb{E}[X])^2$
まず $\mathbb{E}[X(X-1)]$ を求める:
$$
\mathbb{E}[X(X-1)] = \sum_{k=0}^\infty k(k-1) \cdot \frac{\lambda^k}{k!} e^{-\lambda}
= \lambda^2
$$
よって:
$$
\mathbb{E}[X^2] = \mathbb{E}[X(X-1)] + \mathbb{E}[X] = \lambda^2 + \lambda
$$
したがって:
$$
\mathrm{Var}(X) = \lambda^2 + \lambda - \lambda^2 = \lambda
$$
✅ モーメント母関数を用いた導出(MGF)
モーメント母関数 $M_X(t)$ は:
$$
M_X(t) = \mathbb{E}[e^{tX}] = \sum_{k=0}^\infty \frac{\lambda^k}{k!} e^{tk} \cdot e^{-\lambda}
= e^{-\lambda} \sum_{k=0}^\infty \frac{(\lambda e^t)^k}{k!}
= e^{-\lambda} \cdot e^{\lambda e^t} = e^{\lambda(e^t - 1)}
$$
MGFによる期待値:
$$
\mathbb{E}[X] = M_X'(0)
= \left.\frac{d}{dt} e^{\lambda(e^t - 1)}\right|_{t=0}
= \lambda e^0 = \lambda
$$
MGFによる分散:
$$
\mathbb{E}[X^2] = M_X''(0)
= \lambda + \lambda^2 \Rightarrow \mathrm{Var}(X) = \lambda
$$
✅ Pythonによる数値確認
# Program Name: poisson_distribution_plot.py
# Creation Date: 20250608
# Overview: Plot Poisson distribution PMF and show expected value and variance
# Usage: Run in Python environment with matplotlib and scipy installed
# -------------------------------
# Install required libraries
# -------------------------------
!pip install numpy matplotlib scipy --quiet
# -------------------------------
# Import libraries / ライブラリのインポート
# -------------------------------
import numpy as np
import matplotlib.pyplot as plt
from scipy.stats import poisson
# -------------------------------
# Parameter definitions / パラメータ定義
# -------------------------------
λ = 4 # 平均発生率 / Mean event rate
x = np.arange(0, 15) # 観測される回数の範囲 / Range of event counts
# -------------------------------
# Calculate PMF / 確率質量関数の計算
# -------------------------------
pmf = poisson.pmf(x, mu=λ)
# -------------------------------
# Expected value and variance / 期待値と分散の計算
# -------------------------------
expected_value = λ # E[X] = λ
variance = λ # Var(X) = λ
std_dev = np.sqrt(variance) # 標準偏差 = √λ
# -------------------------------
# Plot PMF / PMFの描画
# -------------------------------
plt.figure(figsize=(10, 6)) # 図のサイズ設定 / Set figure size
plt.bar(x, pmf, color='orange', edgecolor='black') # ポアソン分布の棒グラフ / Poisson PMF bar chart
# タイトルとラベル設定 / Set title and axis labels
plt.title(f'Poisson Distribution PMF (λ = {λ})')
plt.xlabel('Number of occurrences (k)')
plt.ylabel('Probability P(X = k)')
plt.grid(axis='y')
# 期待値ラインの表示 / Draw expected value line
plt.axvline(expected_value, color='red', linestyle='--', label=f'Expected value = {expected_value:.2f}')
plt.legend()
plt.tight_layout()
plt.show()
✅ 幾何分布の定義
成功確率 $p$ の独立なベルヌーイ試行を繰り返し、初めて成功する試行が $k$ 回目である確率:
$$
P(X = k) = (1 - p)^{k - 1} p \quad (k = 1, 2, 3, \dots)
$$
✅ 期待値 $\mathbb{E}[X]$ の導出
期待値の定義に従い:
$$
\mathbb{E}[X] = \sum_{k=1}^{\infty} k \cdot (1 - p)^{k - 1} \cdot p
$$
ここで $q = 1 - p$ とおくと:
$$
\mathbb{E}[X] = p \sum_{k=1}^{\infty} k q^{k - 1}
$$
変数変換 $j = k - 1$ により:
$$
= p \sum_{j=0}^{\infty} (j + 1) q^j
= p \left( \sum_{j=0}^{\infty} q^j + \sum_{j=0}^{\infty} j q^j \right)
$$
等比数列の和とその導関数より:
- $\sum_{j=0}^\infty q^j = \frac{1}{1 - q} = \frac{1}{p}$
- $\sum_{j=0}^\infty j q^j = \frac{q}{(1 - q)^2} = \frac{1 - p}{p^2}$
したがって:
$$
\mathbb{E}[X] = p \left( \frac{1}{p} + \frac{1 - p}{p^2} \right)
= 1 + \frac{1 - p}{p}
= \frac{1}{p}
$$
✅ 分散 $\mathrm{Var}(X)$ の導出
分散は:
$$
\mathrm{Var}(X) = \mathbb{E}[X^2] - (\mathbb{E}[X])^2
$$
まず、$\mathbb{E}[X^2]$ を求めるために:
$$
\mathbb{E}[X^2] = \sum_{k=1}^\infty k^2 (1 - p)^{k - 1} p
= p \sum_{k=1}^\infty k^2 q^{k - 1}
$$
再度 $j = k - 1$ に変換:
$$
= p \sum_{j=0}^\infty (j + 1)^2 q^j
= p \left( \sum_{j=0}^\infty j^2 q^j + 2 \sum_{j=0}^\infty j q^j + \sum_{j=0}^\infty q^j \right)
$$
以下の公式を使用:
- $\sum_{j=0}^\infty q^j = \frac{1}{1 - q}$
- $\sum_{j=0}^\infty j q^j = \frac{q}{(1 - q)^2}$
- $\sum_{j=0}^\infty j^2 q^j = \frac{q (1 + q)}{(1 - q)^3}$
これらをまとめると:
$$
\mathbb{E}[X^2] = p \left( \frac{q(1 + q)}{(1 - q)^3} + \frac{2q}{(1 - q)^2} + \frac{1}{1 - q} \right)
$$
$1 - q = p$ なので、代入して整理すると:
$$
\mathbb{E}[X^2] = \frac{2 - p}{p^2}
$$
したがって分散は:
$$
\mathrm{Var}(X) = \mathbb{E}[X^2] - \left( \mathbb{E}[X] \right)^2
= \frac{2 - p}{p^2} - \left( \frac{1}{p} \right)^2 = \frac{1 - p}{p^2}
$$
✅ モーメント母関数から導出
モーメント母関数:
$$
M_X(t) = \mathbb{E}[e^{tX}] = \sum_{k=1}^\infty e^{tk} (1 - p)^{k - 1} p = \frac{pe^t}{1 - (1 - p)e^t}
\quad \text{(ただし } e^t < \frac{1}{1 - p} \text{)}
$$
微分による導出:
- $M_X'(t) = \frac{p e^t (1 - p)}{(1 - (1 - p)e^t)^2}$
- $M_X''(t) = \frac{p e^t (1 - p)\left[ (1 - p)e^t + 1 \right]}{(1 - (1 - p)e^t)^3}$
$M_X'(0) = \frac{p (1 - p)}{(1 - (1 - p))^2} = \frac{p(1 - p)}{p^2} = \frac{1 - p}{p}$
ではなく、実際には:
- $M_X'(0) = \frac{1}{p} = \mathbb{E}[X]$
- $M_X''(0) = \frac{2 - p}{p^2}$
より:
$$
\mathrm{Var}(X) = M_X''(0) - (M_X'(0))^2 = \frac{2 - p}{p^2} - \frac{1}{p^2} = \frac{1 - p}{p^2}
$$
# Program Name: geom_distribution_plot.py
# Creation Date: 20250608
# Overview: Visualization of geometric distribution, expected value, and variance using Pokémon example
# Usage: Run in Python environment with matplotlib and scipy installed
# -------------------------------
# Install Required Libraries
# -------------------------------
!pip install numpy matplotlib scipy --quiet
# -------------------------------
# Import Libraries / ライブラリのインポート
# -------------------------------
import numpy as np
import matplotlib.pyplot as plt
from scipy.stats import geom
# -------------------------------
# Parameters / 中央管理パラメータ
# -------------------------------
p = 0.15 # 成功確率 / Probability of success
x = np.arange(1, 21) # 試行回数(1回目~20回目)/ Number of trials
pmf = geom.pmf(x, p) # 幾何分布のPMF / Geometric distribution PMF
# 理論値 / Theoretical statistics
expected_value = 1 / p
variance = (1 - p) / (p ** 2)
std_dev = np.sqrt(variance)
# -------------------------------
# Plot / グラフ表示
# -------------------------------
plt.figure(figsize=(10, 6))
# PMF 棒グラフ / Plot PMF as bar graph
plt.bar(x, pmf, color='lightgreen', edgecolor='black')
# 期待値を縦線で表示 / Vertical line for expected value
plt.axvline(expected_value, color='red', linestyle='--', label=f'Expected Value = {expected_value:.2f}')
plt.fill_betweenx([0, max(pmf)], expected_value - std_dev, expected_value + std_dev,
color='red', alpha=0.2, label=f'±1 Std Dev = [{expected_value - std_dev:.2f}, {expected_value + std_dev:.2f}]')
# グラフ設定 / Graph settings
plt.title('Geometric Distribution PMF (p=0.15)')
plt.xlabel('Trial number to first success (k)')
plt.ylabel('Probability P(X=k)')
plt.xticks(x)
plt.grid(axis='y')
plt.legend()
plt.tight_layout()
plt.show()
✅ 多項分布の定義と性質
■ 定義(Definition)
多項分布は、**複数の排反なカテゴリ(k種)**からなる試行を n回繰り返すとき、それぞれのカテゴリが何回出現するかの確率分布です。
- 各カテゴリ $A_i$ が起きる確率: $p_i$(ただし $\sum_{i=1}^k p_i = 1$)
- 各カテゴリの出現回数: $x_i$(ただし $\sum_{i=1}^k x_i = n$)
このとき、多項分布の確率質量関数(PMF)は:
$$
P(X_1 = x_1, \dots, X_k = x_k) = \frac{n!}{x_1! \cdots x_k!} \cdot p_1^{x_1} \cdots p_k^{x_k}
$$
■ 二項分布との関係(Relation to Binomial)
2カテゴリ(成功/失敗)の場合($k = 2$)は、これは二項分布と一致します:
$$
P(X = x) = \binom{n}{x} p^x (1 - p)^{n - x}
$$
✅ 例題:じゃんけんマシーンの多項確率
- $p_{\text{グー}} = 0.2, \quad p_{\text{チョキ}} = 0.3, \quad p_{\text{パー}} = 0.5$
- $x_{\text{グー}} = 2, \quad x_{\text{チョキ}} = 2, \quad x_{\text{パー}} = 1$, $n = 5$
多項分布の確率は:
$$
P = \frac{5!}{2! \cdot 2! \cdot 1!} \cdot 0.2^2 \cdot 0.3^2 \cdot 0.5^1
= 30 \cdot 0.04 \cdot 0.09 \cdot 0.5 = 30 \cdot 0.0018 = 0.054
$$
✅ 多項分布の期待値・分散・共分散
■ 期待値(Expectation)
各カテゴリの出現回数 $X_i$ の期待値は:
$$
\mathbb{E}[X_i] = n p_i
$$
■ 分散(Variance)
各カテゴリの分散は:
$$
\mathrm{Var}(X_i) = n p_i (1 - p_i)
$$
■ 共分散(Covariance)
カテゴリ $i$ と $j$ の共分散は:
$$
\mathrm{Cov}(X_i, X_j) = -n p_i p_j \quad (i \neq j)
$$
これは、あるカテゴリが増えれば他が減るという負の相関を示す。
✅ Pythonによる実装例
import numpy as np
from scipy.stats import multinomial
# パラメータ設定
n = 5 # 試行回数
probs = [0.2, 0.3, 0.5] # グー, チョキ, パーの確率
outcome = [2, 2, 1] # 出現回数(グー2回, チョキ2回, パー1回)
# 確率の計算
pmf = multinomial.pmf(outcome, n, probs)
print(f"じゃんけん多項確率 P = {pmf:.3f}") # 出力:0.054
# 期待値
expectation = np.array(probs) * n
print("期待値(E[X]):", expectation)
# 分散・共分散行列(共分散行列は対角+非対角成分)
cov_matrix = np.diag(n * np.array(probs) * (1 - np.array(probs))) \
- n * np.outer(probs, probs)
print("共分散行列(Cov[X]):\n", cov_matrix)
✅ まとめ
指標 | 数式 |
---|---|
確率 | $\frac{n!}{x_1! \cdots x_k!} p_1^{x_1} \cdots p_k^{x_k}$ |
期待値 | $\mathbb{E}[X_i] = n p_i$ |
分散 | $\mathrm{Var}(X_i) = n p_i (1 - p_i)$ |
共分散 | $\mathrm{Cov}(X_i, X_j) = -n p_i p_j$ |
✅ 正規分布の確率密度関数
平均 $\mu$、分散 $\sigma^2$ の正規分布 $\mathcal{N}(\mu, \sigma^2)$ の確率密度関数は:
$$
f(x) = \frac{1}{\sqrt{2\pi\sigma^2}} \exp\left( -\frac{(x - \mu)^2}{2\sigma^2} \right)
$$
✅ 期待値 $\mathbb{E}[X]$ の導出
$$
\mathbb{E}[X] = \int_{-\infty}^{\infty} x f(x) dx
$$
変数変換:$z = \frac{x - \mu}{\sigma} \Rightarrow x = \sigma z + \mu$
$$
\mathbb{E}[X] = \int_{-\infty}^{\infty} (\sigma z + \mu) \cdot \frac{1}{\sqrt{2\pi}} e^{-z^2/2} dz
$$
積分を分けて:
$$
= \mu \int_{-\infty}^{\infty} \frac{1}{\sqrt{2\pi}} e^{-z^2/2} dz + \sigma \int_{-\infty}^{\infty} z \cdot \frac{1}{\sqrt{2\pi}} e^{-z^2/2} dz
$$
- 第一項:ガウス積分 = 1
- 第二項:奇関数 → 積分値 = 0
$$
\Rightarrow \mathbb{E}[X] = \mu
$$
✅ 分散 $\mathrm{Var}(X)$ の導出
分散の定義:
$$
\mathrm{Var}(X) = \mathbb{E}[X^2] - (\mathbb{E}[X])^2
$$
まず、
$$
\mathbb{E}[X^2] = \int_{-\infty}^{\infty} x^2 f(x) dx
$$
同様に変数変換して:
$$
x = \sigma z + \mu \Rightarrow x^2 = \sigma^2 z^2 + 2\sigma\mu z + \mu^2
$$
$$
\mathbb{E}[X^2] = \int_{-\infty}^{\infty} (\sigma^2 z^2 + 2\sigma\mu z + \mu^2) \cdot \frac{1}{\sqrt{2\pi}} e^{-z^2/2} dz
$$
積分を分けて:
$$
= \sigma^2 \cdot \int z^2 \phi(z) dz + 2\sigma\mu \cdot \int z \phi(z) dz + \mu^2 \cdot \int \phi(z) dz
$$
$$
= \sigma^2 \cdot 1 + 0 + \mu^2 = \sigma^2 + \mu^2
$$
よって:
$$
\mathrm{Var}(X) = \sigma^2 + \mu^2 - \mu^2 = \sigma^2
$$
✅ モーメント母関数 $M_X(t)$ を使った導出
モーメント母関数:
$$
M_X(t) = \mathbb{E}[e^{tX}] = \exp\left( \mu t + \frac{1}{2} \sigma^2 t^2 \right)
$$
- 1階微分:$M_X'(t) = (\mu + \sigma^2 t) \cdot M_X(t)$
- 2階微分:$M_X''(t) = (\mu + \sigma^2 t)^2 \cdot M_X(t) + \sigma^2 \cdot M_X(t)$
$$
M_X'(0) = \mu, \quad M_X''(0) = \mu^2 + \sigma^2
$$
したがって:
$$
\mathrm{Var}(X) = M_X''(0) - (M_X'(0))^2 = \mu^2 + \sigma^2 - \mu^2 = \sigma^2
$$
✅ 結論まとめ
項目 | 結果 |
---|---|
期待値 $\mathbb{E}[X]$ | $\mu$ |
分散 $\mathrm{Var}(X)$ | $\sigma^2$ |
モーメント母関数 $M_X(t)$ | $\exp\left(\mu t + \frac{1}{2}\sigma^2 t^2\right)$ |
# Program Name: normal_distribution_moment_plot.py
# Creation Date: 20250608
# Overview: Plotting normal distribution and its moment generating function (MGF)
# Usage: Run in Python environment to visualize PDF and MGF of a normal distribution
# -------------------- Install Required Libraries --------------------
!pip install numpy matplotlib sympy --quiet
# -------------------- Import Libraries --------------------
import numpy as np
import matplotlib.pyplot as plt
import sympy as sp
# -------------------- Parameters / 中央管理パラメータ --------------------
mu = 0 # 平均 / Mean
sigma = 1 # 標準偏差 / Standard deviation
x_range = np.linspace(-5, 5, 500) # 描画範囲 / Plot range
t_range = np.linspace(-2, 2, 400) # MGF描画範囲 / MGF plot range
# -------------------- Normal PDF / 正規分布の確率密度関数 --------------------
def normal_pdf(x, mu, sigma):
return 1 / (np.sqrt(2 * np.pi * sigma ** 2)) * np.exp(- (x - mu) ** 2 / (2 * sigma ** 2))
pdf_values = normal_pdf(x_range, mu, sigma)
# -------------------- Moment Generating Function / モーメント母関数 --------------------
def mgf_normal(t, mu, sigma):
return np.exp(mu * t + 0.5 * (sigma ** 2) * t ** 2)
mgf_values = mgf_normal(t_range, mu, sigma)
# -------------------- Plot: PDF --------------------
plt.figure(figsize=(8, 4))
plt.plot(x_range, pdf_values, label="Normal PDF", lw=2)
plt.title("Normal Distribution PDF")
plt.xlabel("x")
plt.ylabel("Density")
plt.grid(True)
plt.legend()
plt.show()
# -------------------- Plot: MGF --------------------
plt.figure(figsize=(8, 4))
plt.plot(t_range, mgf_values, label="Moment Generating Function", color='orange', lw=2)
plt.title("Moment Generating Function of Normal Distribution")
plt.xlabel("t")
plt.ylabel("M_X(t)")
plt.grid(True)
plt.legend()
plt.show()
✅ ガンマ分布の定義
形状母数 $\alpha > 0$、尺度母数 $\beta > 0$ の ガンマ分布 $X \sim \mathrm{Gamma}(\alpha, \beta)$ の**確率密度関数(PDF)**は:
$$
f(x) = \frac{1}{\Gamma(\alpha)\beta^\alpha} x^{\alpha - 1} e^{-x/\beta} \quad (x > 0)
$$
ここで:
- $\Gamma(\alpha)$ はガンマ関数で、$\Gamma(\alpha) = \int_0^{\infty} t^{\alpha - 1} e^{-t} dt$
- $\Gamma(n) = (n - 1)!$(自然数 $n$ の場合)
✅ 特殊ケースと関係
- $\alpha = 1$ のとき:指数分布 $\mathrm{Exp}(\beta)$ に一致
- $\beta = 2$, $\alpha = \frac{k}{2}$ のとき:カイ二乗分布(自由度 $k$)に一致
✅ ガンマ分布の性質
項目 | 式 |
---|---|
期待値 $\mathbb{E}[X]$ | $\alpha \beta$ |
分散 $\mathrm{Var}(X)$ | $\alpha \beta^2$ |
モーメント母関数 $M_X(t)$ | $(1 - \beta t)^{-\alpha}$(ただし $t < \frac{1}{\beta}$) |
✅ 例題:来客問題
問題:5分ごとに平均1人来るお店で、20人来るまでの時間の期待値を求めよ。
- $\alpha = 20$, $\beta = 5$
- $\mathbb{E}[X] = \alpha \beta = 100$
答え:100分(= 1時間40分)
✅ 再生性(加法性)
$$
X_1 \sim \mathrm{Gamma}(\alpha_1, \beta),\quad X_2 \sim \mathrm{Gamma}(\alpha_2, \beta)
$$
が独立ならば:
$$
X_1 + X_2 \sim \mathrm{Gamma}(\alpha_1 + \alpha_2, \beta)
$$
✅ Pythonによるガンマ分布の可視化(プロット付き)
ご希望あれば、以下のような内容を Python + matplotlib で可視化可能です:
- パラメータ $\alpha$ と $\beta$ を変えた複数のガンマ分布
- 対応する期待値線と分散範囲の描画
- 指数分布($\alpha=1$)との比較
# 同じコードを改めて再実行(前回のエラーは一時的な実行エラーと想定)
# 再度 Gamma 分布の可視化を実行する
import numpy as np
import matplotlib.pyplot as plt
from scipy.stats import gamma
# -------------------- Parameters / 中央管理パラメータ --------------------
alphas = [1, 2, 5] # 形状母数 alpha / Shape parameters
beta = 2.0 # 尺度母数 beta / Scale parameter (fixed)
x = np.linspace(0, 30, 500) # X軸の範囲 / Range of x values
# -------------------- Plotting / グラフ描画 --------------------
plt.figure(figsize=(10, 6))
for alpha in alphas:
dist = gamma(a=alpha, scale=beta) # scipy.stats.gamma のインスタンス生成
plt.plot(x, dist.pdf(x), label=f'α={alpha}, β={beta}') # PDF曲線を描画
# グラフ設定 / Plot settings
plt.title('Gamma Distribution PDFs')
plt.xlabel('x')
plt.ylabel('Probability Density')
plt.legend()
plt.grid(True)
# Show the plot
plt.tight_layout()
plt.show()