標本分布の平均と分散を検証してみる


標本分布の平均と分散について、実際にプログラムを使って検証してみます。

標本分布の平均と分散

X を、ある分布(distribution)に従う確率変数(random variable)とします。 X1,,Xm を独立な X の標本とし、 Y を次のように定義します。

Y=1mk=1mXk

このとき、 E(Y), V(Y) は次のようになります。

E(Y)=E(X)V(Y)=frac1mE(X)

説明

標本分布の平均と分散の式の算出をみておきましょう。

Xi は独立なので E(Y)=1mk=1mE(Xk)=1mE(X) です。

分散についても 2つの確率変数 A, B が独立ならば V(A+B)=V(A)+V(B) となる。 これより V(Y)=mV(1mX)=1mV(X)

2項分布を使った実験

本当にそうなるのか、2項分布を例に、コンピュータを使って実験してみます。

XtextrmBinomial(n,p) とすれば E(X)=np, V(X)=np(1p) です。

Ym個の独立な標本の平均値とします。 このとき E(Y)=1mnp),\(V(Y)=1mnp(1p) です。

ではここで n=3, p=0.5, m=10 として計算してみます。 E(X)=E(Y)=0.5, V(X)=0.75, V(Y)=0.075 となります。

Kotlin によるコード

まず n, p, m をそれぞれ定義しておきます。

それぞれのベルヌーイ試行から、 X の値をシミュレーションするメソッドを定義します。 Math.random を使って 0以上1未満の乱数を生成し、 p と比較して、 p以上なら 1を足す操作を n 回 行なっています。

この試行の結果を m回取得して平均を計算するメソッドを定義します。 これは Y の値の計算にあたります。

(Y) を10000回計算して、平均と分散を計算します。

以上をまとめると次のようになります。

このコードの出力は次のようになり、 計算通りの E(Y), V(Y) の値になっていることが確認できます。