ゴルトンボード
概要
- ゴルトンボードは、正規分布を可視化するための装置
- 針をゴルトンボードに落とし、針がどの位置に落ちるかを記録することで、正規分布を再現することができる
- 簡易的なモデルの表現としては、釘の位置で左右どちらかに進むというベルヌーイ分布を利用することができる
- ベルヌーイ分布を何度も繰り返すと、中心極限定理により正規分布に近づく
ゴルトンボードの動画
ゴルトンボードのシミュレーション
import numpy as np
import random
import pandas as pd
import seaborn as sns
import matplotlib.pyplot as plt
from scipy import stats
import statsmodels.api as sm
# 10000個のビー玉について、各ビー玉が2501ステップを踏む
n_marbles = 10000
n_steps = 2501
# 各ステップでの移動を-0.5か0.5でランダムに生成
# 0か1の乱数を生成し、それから1を引くことで、-0.5か0.5を得る
steps = np.random.choice([-0.5, 0.5], size=(n_marbles, n_steps))
# 各ビー玉の全ステップにわたる合計移動距離を計算
final_positions = steps.sum(axis=1)
# 結果をDataFrameに格納
df = pd.DataFrame({"pos": final_positions})
# ヒストグラムを描画
ax = sns.countplot(data=df, x="pos")
ax.set_xticklabels(ax.get_xticklabels(), rotation=90)
# QQプロットを描画
# サンプルデータ (df["pos"]を使用)
data = df["pos"]
# QQプロットの作成
fig = sm.qqplot(data, line='45', fit=True)
plt.title('QQ Plot')
plt.show()