【統計の基礎３】中心極限定理って、なに？

# 目次
[1.はじめに](#1-はじめに)
[2.中心極限定理とは](#2-中心極限定理とは)
[3.見える化](#3-見える化)
[4.参考](#4-参考)
[5.おわりに](#5-おわりに)

# 1. はじめに
「中心極限定理」って、難しそうな印象ですよね。でも、ザックリ、勉強すると、要するに、「データが多くなると、正規分布になる」ってことのようです。
数学的には、厳密性を欠きますが、調べたことをメモしておきます。

# 2. 中心極限定理とは
**中心極限定理** (Central Limit Theorem)は、たくさんの独立なものの合計を考えると、その合計がどんな形のグラフを描く確率分布でも、大きな数になるほど「ちょうどいい形」のグラフ、つまり正規分布（ガウス分布）に似てくるという考え方です。

例えば、サイコロを何回も振って出た目の合計を考えてみましょう。サイコロの出る目自体は一様な確率で、1から6までの整数が出ます。最初は1回だけ振った場合、出た目の合計は1から6までのどれかになります。でも、サイコロを何回も振って合計を取ると、だんだんと合計が正規分布のような形に近づいてくるのです。

この定理が意味するのは、たとえばお菓子の重さやテストの点数など、様々な独立な要素が影響を与える場合でも、その合計や平均が大きくなるほど、正規分布の形に近づくということです。これは統計学の基本的な考え方で、大きなデータを分析する際にとても便利な原則となっています。

# 3. 見える化
中心極限定理をPythonコードを使って可視化してみましょう。

以下では、サイコロの出目をシミュレーションしてみます。

まず、必要なライブラリをインポートします。

```python
import numpy as np
import matplotlib.pyplot as plt
```
次に、サイコロを何回か振って、その合計を取ることを繰り返してみましょう。

以下、４つのケースに分けて、実施してみます。

### ケース１．シミュレーションの回数：千回、サイコロを振る回数：10回


```python
num_simulations = 1000  # シミュレーションの回数
num_rolls = 10  # サイコロを振る回数

sums = np.zeros(num_simulations)

for i in range(num_simulations):
    dice_rolls = np.random.randint(1, 7, num_rolls)  # サイコロをnum_rolls回振った結果
    sums[i] = np.sum(dice_rolls)  # サイコロの合計を記録
```

ここで、sumsにはシミュレーションごとのサイコロの合計が格納されています。

最後に、得られた合計のヒストグラムを描画してみましょう。

```python
plt.hist(sums, bins=30, density=True, alpha=0.6, color='b', label='Simulated Sum')
plt.xlabel('Sum of Dice Rolls')
plt.ylabel('Probability Density')
plt.title('Central Limit Theorem Simulation')
plt.legend()
plt.show()
```
このコードを実行すると、サイコロを振った結果の合計のヒストグラムが以下のように表示されるます。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/76072/eb9f39c3-1716-a621-c8cb-9f6a1e3040b8.png)

まあまあ、いい感じですが、山が、結構、平べったいイメージですね。

### ケース２．シミュレーションの回数：一万回、サイコロを振る回数：10回

次に、シミュレーションの回数を10倍にして、一万回とします。サイコロを振る回数は10回のままです。

以下、コードは、シミュレーションの回数とサイコロを振る回数だけを変更しているので、省略します。

サイコロを振った結果の合計のヒストグラムが以下のように表示されるます。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/76072/18e8d83f-6012-2c58-6c95-2bd066a3cb34.png)


たまたまでしょうが、今度は、かなりギザギザが強くなりました。

### ケース３．シミュレーションの回数：千回、サイコロを振る回数：100回

今度は、シミュレーションの回数を元に戻して、千回として、サイコロを振る回数を100回に増やしてみます。

サイコロを振った結果の合計のヒストグラムが以下のように表示されるます。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/76072/aa76c528-d6d2-acd8-3728-f0696dc37f1f.png)

これは、個人的には、かなり良いなっていう感じです。ほぼ正規分布かな？

### ケース４．シミュレーションの回数：一万回、サイコロを振る回数：100回

最後に、シミュレーションの回数もサイコロを振る回数も、両方、増やして、それぞれ、一万回、100回にしてみます。

サイコロを振った結果の合計のヒストグラムが以下のように表示されるます。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/76072/f62feede-60ae-5b86-eb8d-1f2eeaee870d.png)

これで、ほぼ正規分布ですね！
個人的には、正規分布は、かなり急な山というイメージです。

正規分布については、別途、記事を書いていますので、参考にしてみて下さい。

https://qiita.com/ka201504/items/c3d7a8f5e6c509b53b26

### ここまでのまとめ

<INS>中心極限定理において、シミュレーションの回数とサイコロを振る回数の両方が重要な要素ですが、特に中心極限定理の本質を確認するためには、「サイコロを振る回数」を増やすことが重要ですね。</INS>

中心極限定理は、多くの独立なランダムな要因の合計（または平均）が、その要因がどのような確率分布に従っていようとも、大きなサンプルサイズ（要因の数）において正規分布に近づくという性質を述べています。

したがって、<INS>シミュレーションの回数を多くすることも重要ですが、中心極限定理を視覚的に確認するためには、サイコロを振る回数を増やしていくことで、その結果の分布が正規分布に近づいていく様子を確認することができます。</INS>

今回も、サイコロを振る回数を増やすことで、ランダムな要因の合計の分布が正規分布の形に近づいていくことが観察されました。サイコロを振る回数が多くなればなるほど、中心極限定理の効果が顕著になるということですね。

# 4. 参考
中心極限定理が成り立つためには、以下の条件が必要なようです。

**独立性**: 各確率変数は互いに独立である必要があります。つまり、一つの確率変数の値が他の確率変数の値に影響を与えない状況であることが求められます。

**同一の分布**: 各確率変数は同じ確率分布に従っている必要があります。ただし、分布の形がどのようなものでも構いません。例えば、指数分布や二項分布など、正規分布以外の分布でも成り立つことがあります。

**有限の平均と分散**: 各確率変数の平均値と分散が有限である必要があります。この条件により、合計の大きさが制限され、正規分布に収束することが保証されます。

中心極限定理は、実際のデータ解析や統計的推測において、大標本の場合に正規分布を仮定して解析する際に非常に役立つ概念です。また、複数の独立な要因が影響を及ぼす場合に、それらの要因の合計や平均の分布が正規分布に近づく現象を説明する際にも用いられます。

# 5. おわりに
個人的には、ザックリと、「中心極限定理」≒「結局、サンプルが多くなると正規分布になる」って考えています。

数学的な証明や厳密な議論は大切ですが、まずは、ひとまず、イメージとして分かって、統計のスタート台に立ちたいと思います（笑）

間違っていたり、ご意見がある場合は、ぜひ、コメント欄に、お願いします。
よろしく、お願いします。m(__)m