群馬大学 | 医学部 | サイトトップ | 医学情報処理演習

医学情報処理演習:2008年度第4回課題の解答例

課題

下の枠内のコードは,サイズ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)

リンクと引用について