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


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

標本分布の平均と分散

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

[ Y = frac{1}{m} sum _{k=1}^{m} X_k]

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

begin{eqnarray*} E(Y) & = & E(X) \ V(Y) & = & frac{1}{m} E(X) end{eqnarray*}

説明

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

(X_i) は独立なので (E(Y) = frac{1}{m} sum _{k=1}^{m} E(X_k) = frac{1}{m} E(X)) です。

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

2項分布を使った実験

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

(X sim textrm{Binomial}(n, p)) とすれば (E(X) = np), (V(X) = np(1-p)) です。

(Y) を (m)個の独立な標本の平均値とします。 このとき (E(Y) = frac{1}{m} np), (V(Y) = frac{1}{m} np(1-p) ) です。

ではここで (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)) の値になっていることが確認できます。