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

医学情報処理演習:2010年度第3回課題解答例

課題

前回も参照した通り,http://phi.med.gunma-u.ac.jp/medstat/sample02.txtは,ソロモン諸島の首都のとある学校で実施した健診結果を,昨年の実習で入力してもらった後にエラーを訂正したタブ区切りテキスト形式データである。

このファイルをインターネットから直接Rのデータフレームxに読み込み,婚姻状態(変数名はMARITAL)別に,Body Mass Index(変数名はBMI)の記述統計量(サンプルサイズ,平均値,標準偏差,第1四分位,中央値,第3四分位)を求めるコードは以下のように書ける。ただし,わざとBoxで穴をあけてある。

descstat <- function(X) {
XX <- X[!is.na(X)] # removing missing values
Q5S <- Box A(XX)
res <- c(Box B(XX), Box C(XX), sd(XX), Q5S[2], Q5S[3], Q5S[4])
names(res) <- c("N","Mean","SD","Q1","Median","Q3")
return(res) }

x <- Box D("http://phi.med.gunma-u.ac.jp/medstat/sample02.txt")
tapply(x$BMI,x$MARITAL,descstat)

それぞれのBoxに入る正しい関数名を解答せよ。また,求めた記述統計量からいえることを文章で記せ。さらに,もしあれば感想・要望・質問などとともに下のフォームから送信せよ。学籍番号と氏名の入力を忘れないこと。

(The program listed above is to calculate descriptive statistics (sample size, mean, unbiased standard deviation, 1st and 3rd quartiles, and median) of body mass index (BMI) for married and single subjects, separately. Please fill appropriate functions in the boxes. In addition, please explain what the results mean.)

解答例

正しいコードは下記の通り。#以降は注釈である。

descstat <- function(X) {
XX <- X[!is.na(X)] # removing missing values(欠損値を除去)
Q5S <- fivenum(XX) # assign the five numbers for descriptive statistics to Q5S(五数要約値を計算してQ5Sに付値)
res <- c(length(XX), mean(XX), sd(XX), Q5S[2], Q5S[3], Q5S[4]) # assign the result vector to res(欲しい結果を数値ベクトルにしてresに付値)
names(res) <- c("N","Mean","SD","Q1","Median","Q3") # assign the meaningful names to each elements of the result vector(結果が付値されたベクトルresの各要素に適切な名前を付ける)
return(res) } # return the res as the return-value of this function "descstat"(resを関数descstatの戻り値として返す)

x <- read.delim("http://phi.med.gunma-u.ac.jp/medstat/sample02.txt") # read the tab-delimited text data into data.frame "x" via internet(web上のタブ区切りテキストデータをデータフレームxに読み込む)
tapply(x$BMI,x$MARITAL,descstat) # calculate descstat(x$BMI) for each category of x$MARITAL, separately(x$MARITALのカテゴリごとにdescstat(x$BMI)を計算する)

項目解答例
Box Afinvenum
Box Blength
Box Cmean
Box Dread.delim
結果からいえること(What the result means)Divorced(離別者)は2人,Widowed(死別者)は1人しかいないので,それらの記述統計量に意味は無い。Married(既婚者)とSingle(独身者)については,分布の位置を示す平均値や中央値は既婚者の方が独身者より4近く大きいことと,分布の広がりを示す不偏標準偏差や四分位範囲も既婚者の方が独身者より大きいことが顕著である。この特徴は,既婚者の中の肥満者の存在に起因していると考えられる

要望・質問

だんだん難しくなってきたから、なるべくゆっくりで・・・(他にも難しいというコメント多数)
多少複雑な関数定義をしましたが,慣れれば大丈夫だと思います。
課題を完全に自力でやるのは難しいので、これからも今日のようにやってもらいたい/時間が無い時は、答えを言ってくれるのは嬉しいです!!
これからも課題の内容によっては今回のようにガイドしますが,自力解答を基本にしたいと思っています。
復習および補足の時間よりも本題の方に時間を費やして頂きたい。
努力します。ただ,復習および補足の時間は,人が揃うのを待っているという面もあるので,ゼロにはしません。
入力がだんだん長くなってきて、以前の知識も必要なので大変だった/なかなかどういう記号が何をあらわすかを覚えるのが大変
ここは大事なポイントです。Rを使った統計解析はプログラミングなので,基本から応用に進んでいきます。基本を忘れたら応用はできません。「以前の知識」は復習して身につけてください。
最後の応用などをもっと詳しく知りたいのでテキストにも詳しく解説を書いてほしい
この解答例に多少詳しく書いたので,後でじっくり読んでください

リンクと引用について