中心極限定理のよくある誤解に注意！！【サンプルサイズ n と試行回数 N の違い言えますか？】Pythonで実験

## 記事の内容
<br>
　試行回数 $N$ を増やせば正規分布に近づく、と思っていませんか？

<br>
<br>

この記事は、統計学初心者が対象です。

中心極限定理（Central Limit Theorem: CLT）の数学的な定義をまず再確認します。

そして、サンプル数と試行回数の違い、さらにサイコロの例を用いた具体例について解説します。

また、サンプル数と試行回数の違いに注意できるように、Pythonを使って実験します。

## 中心極限定理　数学的定義

**定理の設定：**  
独立同分布（independent and identically distributed: i.i.d.）の確率変数列 $X_1, X_2, \dots, X_n$ を考えます。ここで各 $X_i$ は有限の正の分散 $0 < \sigma^2 < \infty$ を持ち、期待値は $\mu$ であるとします。

**サンプル平均の定義：**  
1回の試行で得られるサンプル平均は  
```math
\bar{X}_n = \frac{1}{n} \sum_{i=1}^n X_i
```
と定義されます。

**中心極限定理の主張：**  
サンプルサイズ $ n $ が十分大きくなると、正規化した変数  
$$
Z_n = \frac{\bar{X}_n - \mu}{\sigma/\sqrt{n}}
$$  
の分布は標準正規分布 $N(0,1)$ に収束します。すなわち、
$$
Z_n \xrightarrow{d} N(0,1) \quad \text{as } n \to \infty.
$$

この定理は、たとえ元の確率変数 $X_i$ の分布が正規分布でなくても、平均と分散が有限であれば、サンプル平均の分布は正規分布に近づくことを保証しています。

*参考：&#8203;:contentReference[oaicite:0]{index=0}*


---

## サンプル数 n 、試行回数 N の違い　

中心極限定理で使われる「$n$」と「$N$」は全く異なる概念です。
中心極限定理の定義に現れる「$n$」は、サンプル数と試行回数、どちらを指しているのか即答できますか？

答えは、サンプル数です。

### サンプル数 n
- **定義：**  
  1回の試行で集めるデータの個数（例：1回の試行でサイコロを30回振る場合の30個のデータ）。
- **効果：**  
  サンプル数 $n$ が大きいほど、サンプル平均の分布のばらつきは小さくなり、標準誤差（$\sigma/\sqrt{n}$）が小さくなります。これにより、平均値の推定がより精密になります。

### 試行回数 N
- **定義：**  
  サンプル平均を計算するために試行を繰り返す回数（例：「30回振って平均を取る」という試行を1000回行う）。
- **効果：**  
  試行回数 $N$ が多いと、得られるサンプル平均のヒストグラムがより滑らかになり、正規分布への収束の様子を視覚的に確認しやすくなります。

まとめると、$n$（サンプル数）は1回の試行あたりのデータ数であり、$N$（試行回数）はその試行を何回繰り返すかを示しています。どちらも中心極限定理の検証には重要ですが、役割が異なります。

---


## よくある誤解
* 少ないサンプル数でも正規分布に近づく
→サンプル数 $n$ が十分大きくないと正規分布にはならない

* 試行回数 $N$ を増やせば正規分布に近づく
→$N$ ではなく $n$ を増やすことで正規分布に近づく


---

## サイコロの目を確率変数とした具体例

ここでは、サイコロの例を用いて中心極限定理の働きを具体的に見てみましょう。

### 例：サイコロの1回の振り
- **サイコロの目：**  
  6面のサイコロの場合、各面（1, 2, 3, 4, 5, 6）が同じ確率 $1/6$ で出ます。  
  この場合、確率変数 $X$ の期待値は  
  $$
  E[X] = \frac{1+2+3+4+5+6}{6} = 3.5
  $$  
  分散は  
  $$
  \sigma^2 = \frac{(1-3.5)^2+(2-3.5)^2+\cdots+(6-3.5)^2}{6}
  $$  
  と計算できます（およそ 2.92）。

### 例：複数回のサイコロ振りによるサンプル平均
- **サンプル数 $n$ の例：**  
  例えば、1回の試行でサイコロを30回振って、その平均値を計算するとします。1回の試行で得られるサンプル平均は  
  ```math
  \bar{X}_{30} = \frac{1}{30}\sum_{i=1}^{30} X_i.
  ```
  このとき、中心極限定理により、$ \bar{X}_{30} $ の分布は  
  ```math
  \bar{X}_{30} \sim N\left(3.5,\frac{\sigma}{\sqrt{30}}\right)
  ```
  に近づきます。

- **試行回数 $N$ の例：**  
  上記の「30回振って平均を取る」試行を、例えば1000回繰り返して、各回の平均値の分布をヒストグラムで描くと、そのヒストグラムは正規分布（ベルカーブ）の形に近づきます。このとき、$N$の効果はできあがる正規分布の滑らかさに関係する量です。

このように、たとえサイコロの元の分布（均一な離散分布）が正規分布ではなくても、サンプル数 $n$ が大きければサンプル平均の分布は正規分布に近づくことが、中心極限定理の核心です。

---


## Pythonで実験
```python
# サンプルサイズと試行回数の変動影響を調査する。

# 試行ごとのサンプル数を、10〜50の間でランダムにする。
# 試行回数を100回、1000回、10000回にする。


import numpy as np
import matplotlib.pyplot as plt
import seaborn as sns

# 試行回数のリスト
num_experiments_list = [100, 1000, 10000]

# サンプル数をランダムにする範囲
sample_size_min = 10
sample_size_max = 50

# グラフを描画
fig, axes = plt.subplots(1, 3, figsize=(18, 5))

for i, num_experiments in enumerate(num_experiments_list):
    averages = []  # 各試行の平均値を格納するリスト

    for _ in range(num_experiments):
        sample_size = np.random.randint(sample_size_min, sample_size_max + 1)  # サンプルサイズをランダムに選択
        samples = np.random.uniform(0, 1, sample_size)  # 0から1の一様分布の乱数を生成
        avg = np.mean(samples)  # サンプルの平均を計算
        averages.append(avg)

    # ヒストグラムを描画
    sns.histplot(averages, bins=30, kde=True, color='blue', alpha=0.7, ax=axes[i])
    axes[i].set_title(f"試行回数: {num_experiments}")
    axes[i].set_xlabel("サンプル平均")
    axes[i].set_ylabel("頻度")
    axes[i].grid(True)

plt.tight_layout()
plt.show()

```