![見出し画像](https://assets.st-note.com/production/uploads/images/169542422/rectangle_large_type_2_05fe925aa062fc96b4a91f801f4645f5.jpeg?width=1200)
高校数学10分プログラミング(数学B編 4.確率分布と統計的な推測)13日目「標本平均の分布を考える」
マガジンリスト > 数学B編 4.確率分布と統計的な推測 > 13日目 課題
おはようございます。
本日は、高校数学10分プログラミング(数学B編 4.確率分布と統計的な推測)の13日目です。
本日の課題は、標本平均の分布について、大数の法則が成り立っているかどうかを確かめるためのプログラムを作成することです。
標本平均の分布
まず、標本平均の分布、大数の法則について解説しておきます。
標本平均$${\bar{X}}$$の分布
母平均$${m}$$、母標準偏差$${\sigma}$$の母集団から大きさ$${n}$$の無作為標本を抽出するものとする。
①標本平均$${\bar{X}}$$の期待値、標準偏差
$$
E(\bar{X})=m, \ \ \sigma(\bar{X})=\frac{\sigma}{\sqrt{n}}
$$
②標本平均$${\bar{X}}$$の分布
母集団が正規分布$${N(m,\sigma^2)}$$に従うときは、$${\bar{X}}$$も正規分布に従い、どのような母集団でも、$${n}$$が大きいときは、正規分布$${N(m, \sigma^2/n)}$$に従う。
大数の法則
母平均$${m}$$の母集団から大きさ$${n}$$の無作為標本を抽出するとき、その標本平均$${\bar{X}}$$は、$${n}$$が大きくなるに従って、母平均$${m}$$に近づく。
課題
$${a}$$を正の整数として$${0}$$以上$${a}$$未満の実数を母集団とします。この母集団を用いて、大数の法則が成り立っていることを確かめるプログラムを作成して、実際に確かめてください。
確認方法
課題の母集団の母平均は、$${m=a/2}$$となります。
この母集団から大きさ$${n}$$の無作為標本を抽出してその標本平均$${\bar{X}}$$を計算します。この試行を trails_num 回繰り返し実施して、その trails_num 個の結果をもとに、階級の幅を$${1}$$としてヒストグラムを作成します。もし、大数の法則が成り立つのであれば、ヒストグラムは$${n}$$が大きくなるに従って$${m=a/2}$$にピークが立つグラフになっていくはずです。
プログラム
今回の課題の大数の法則が成り立っていることを確かめるプログラムは、以下のように記述することができます。
// 大数の法則を確かめる
void setup(){
size(500,200);
translate(0,height);
scale(1,-1);
// 標本数
int n = 100;
// 母集団の上限
int a = width;
// 試行回数
int trials_num = 1000000;
// 度数の幅が1のときの標本平均の数を表す配列
int[] sample_mean_num = new int[a];
for(int i=0; i<a; i++){
sample_mean_num[i] = 0;
}
float x_mean;
for(int i=0; i<trials_num; i++){
// 標本平均の計算
x_mean = 0;
for(int j=0; j<n; j++){
x_mean = x_mean + random(a);
}
x_mean = x_mean / n;
// 計算した標本平均の値が入る度数を1増やす
sample_mean_num[int(x_mean)] = sample_mean_num[int(x_mean)] + 1;
}
// ヒストグラムを描く
for(int i=0; i<a; i++){
line(i, 0.0, i, (float)sample_mean_num[i] * height / trials_num * 3.0);
}
}
ソースコード1 大数の法則が成り立っていることを確かめるプログラム
今回のプログラムは完成版になっています。ソースコード1を Processing の開発環境ウィンドウを開いて(スケッチ名を「LawofAverages」とします)、テキストエディタ部分に書いて実行してみてください。
そして、標本数
// 標本数
int n = 100;
の値を大きくしていって、ヒストグラムの変化を確認してみてください。
なお、標本数を大きくするにつれてプログラムの処理時間が長くなるので、しばらく実行ウィンドウには何も表示されない状態になることに注意してください。
それでは、よろしくお願いします。
MK's papa