バナナでもわかる話

計量経済学・統計学が専門の大学院生です。統計学・経済学・投資理論・マーケティング等々に関する勉強・解説ブログ。ときどき趣味も。極力数式は使わずイメージで説明出来るよう心掛けていますが、時々暴走します。

基礎からイメージで学ぶ統計学~大数法則編~

大数法則は有名ですね。
要は標本サイズをどんどん大きくしていくと、
標本平均真の期待値に(確率的な意味で)収束するという定理です。


今回の記事は、大数法則を直感的に理解するということで、シミュレーションでの確認を行いましょう。



シミュレーション1

期待値10,分散15の正規分布から、標本 X_1,X_2,...を取り出していって、
その都度 \frac{\sum_{i=1}^{n}X_i}{n}を計算してプロットしてみます。

大数法則が正しければ10に近づくはずですね。

というわけで10000個取り出してみました。
f:id:bananarian:20181012011957p:plain


コードはこんな感じ

data=vector()
sample_mean=vector()

for(i in 1:10000){
	data[i]=rnorm(1,10,sqrt(15))
	sample_mean[i]=sum(data)/i
}
plot(1:10000,sample_mean,xlab="サンプルサイズ",ylab="標本平均",type="l")
abline(10,0,col="red")

シミュレーション2

分散だって期待値でしたね。一応確認しておくと
 (分散)=E[(X-\mu)^2]

でした。

ということは \frac{1}{n}\sum_{i=1}^{n}(X_i-\bar{X})^2としてやると、次のような現象が起きるはずです。

①まず、 \bar{X}は標本平均なので、 \muに収束します。
 \muになったとすると、 (X_i-\mu)^2をいっぱい取ってきて、平均していることになるので、分散に収束するはず。


試してみましょう。
f:id:bananarian:20181012012844p:plain


コードはこんな感じ

data=vector()
sample_mean=vector()
sample_var=vector()

for(i in 1:10000){
	data[i]=rnorm(1,10,sqrt(15))
	sample_mean[i]=sum(data)/i
	d=data-sample_mean[i]
	d2=d^2
	sample_var[i]=sum(d^2)/i
}
plot(1:10000,sample_var,xlab="サンプルサイズ",ylab="標本分散",type="l")
abline(15,0,col="red")

大数法則の数学的理解

大数法則については、丁寧に説明しているサイトや本が山ほどあって、この記事で解説する必要は恐らく無いのでURLを示して丸投げしておきます。
※記事書くのが面倒臭いわけではない(?)

弱法則だけですが、ここに詳しくのっているので気になる方はどうぞ
大数の法則の具体例と証明 | 高校数学の美しい物語





ということで、大数法則を確認することが出来ました。
確率的な誤差はあれど、ここまで近い値に収束するのであれば、仮に不偏推定量ではなかったとしても
サンプルサイズが大きい時に限り、適当な基準に基づく推定量として認めることが出来そうです。

次回はその話をします。