大数の法則

大数の法則

大数の法則とその証明

大数の法則の定理

ある確率変数列\({X_1,X_2,\dots,X_n}\)が独立で同一分布に従う場合、

\begin{equation*} \lim_{n \to \infty} P\left(\left|\frac{1}{n}\sum_{i=1}^{n}X_i – \mu\right| \geq \epsilon\right) = 0 \end{equation*} を満たす。ここで、\(\mu=E(X_1)\)であり、\(\epsilon\)は任意の正数である。

大数の法則の証明

独立性から、各\(X_i\)の期待値は\(\mu=E(X_1)\)である。

したがって、期待値の線形性より、

\begin{equation*} E\left(\frac{1}{n}\sum_{i=1}^{n}X_i\right) = \frac{1}{n}\sum_{i=1}^{n}E(X_i) = \mu \end{equation*} である。

また、分散の線形性から、

\begin{align*} Var\left(\frac{1}{n}\sum_{i=1}^{n}X_i\right) &= \frac{1}{n^2}Var\left(\sum_{i=1}^{n}X_i\right) \\ &= \frac{1}{n^2}\sum_{i=1}^{n}Var(X_i) \\ &= \frac{\sigma^2}{n} \end{align*} ここで、\(\sigma^2 = Var(X_1)\)である。

これらの結果から、

\begin{equation*} P\left(\left|\frac{1}{n}\sum_{i=1}^{n}X_i – \mu\right| \geq \epsilon\right) \leq \frac{Var\left(\frac{1}{n}\sum_{i=1}^{n}X_i\right)}{\epsilon^2} = \frac{\sigma^2}{n\epsilon^2} \end{equation*} である。

ここで、右辺は\(n\to \infty\)のとき0に収束するため、左辺も0に収束する。

大数の法則を確認するためのRのプログラム

# 真の平均
true_mean <- 10

# サンプル数
n <- 1000

# シミュレーション回数
sim_num <- 100

# 標本平均を保存するベクトル
sample_means <- numeric(sim_num)

# シミュレーションを実行
for (i in 1:sim_num) {
  # 標本を生成
  sample <- rnorm(n, true_mean)
  
  # 標本平均を計算して保存
  sample_means[i] <- mean(sample)
}

# 標本平均の推移をグラフ化
plot(sample_means, type = "l", col = "blue")

# 真の平均を赤い線で表示
abline(h = true_mean, col = "red", lwd = 2)

# グラフのタイトル等を設定
title("Sample Means Converging to True Mean")
xlab("Simulation Iteration")
ylab("Sample Mean")
legend("topleft", legend = c("True Mean", "Sample Mean"), col = c("red", "blue"), lwd = 2)

大数の法則を確認するためのPythonのプログラム

import random

n = 1000  # 試行回数
mu = 5    # 真の平均

sum_x = 0  # Xの合計を初期化
for i in range(n):
    x = random.normalvariate(mu, 1)  # 平均mu, 分散1の正規分布からランダムにサンプリング
    sum_x += x
    print(f"Trial {i+1}: Sampled x = {x:.3f}, Running mean = {sum_x/(i+1):.3f}")

print(f"Final mean estimate: {sum_x/n:.3f}")

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です