群馬大学 | 医学部 | サイトトップ | 医学情報処理演習
下の枠内のコードは,サイズ10000の母集団データを生成し,そこからサイズ10の標本を抽出する数値実験を行うものである。まずRNGkind()関数によって乱数生成アルゴリズムを指定し,set.seed()関数によって乱数の初期値を指定する。次にrunif()関数によって50から100までの値を等確率で取る乱数を1つ発生させ,round()関数によって小数点1位までに丸めてWTという変数に付値し,これを母集団の平均値の期待値とし,標準偏差がこの平均値の10分の1であるような正規分布に従う乱数を1万個発生させ,母集団の値として変数populationに付値する。print(mean(population))で母集団の真の平均値が表示される。さらに,次のsample()関数で,サイズ10の標本をランダムに抽出し,これを変数s10に付値する。
標本s10から母集団の平均値とその95%信頼区間を推定し,母集団の真の平均値と比べて考察せよ。学籍番号・氏名とともに,下のフォームにRのコードと考察を貼り付けて送信すること。
コードは簡単で,次の通りt.test(s10)だけで母集団の平均値と95%信頼区間が推定できる。
# 乱数の初期化 RNGkind("Mersenne-Twister") set.seed(1234567) # 母集団平均を割り振る print(WT <- round(runif(1,50,100),1)) # 母集団データを作る population <- round(rnorm(10000,WT,WT/10),1) print(mean(population)) # サイズ10の標本を抽出する s10 <- sample(population,10) t.test(s10)
解釈としては,10個のサンプルを1度だけ取り出したものであるs10の標本平均は76.6で,母集団の真の平均値である78.027とはやや異なるが,たった10個のサンプルから計算したにもかかわらず,95%信頼区間は[71.89, 81.31]となり,真の平均値を含んでいることを指摘すればよい。
t.test(s10)のところをもう少し細かくやるなら以下の通り。
print(ms10 <- mean(s10)) ss10 <- sd(s10) t975 <- qt(0.975,9) ms10-t975*ss10/sqrt(10) ms10+t975*ss10/sqrt(10)