確率分布


## 🌟 二項分布の定義

成功確率 $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
  $$

---

```Python
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による数値確認

```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}
$$

---



```Python
# 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による実装例

```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)$ |

---
```Python
# 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\$）との比較


```Python
# 同じコードを改めて再実行（前回のエラーは一時的な実行エラーと想定）
# 再度 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()

```