|
目的
Rで「数式に忠実なプログラムを一から書いてみる」と意外に統計学に対する抵抗感が薄れ,理解が促進されることを示します。
例題
対角の指数であるBMI(Body Mass Index)を計算するプログラムを作成します。BMIの計算式は,体重(kg)/身長(m)^2です。BMIの解釈は,以下の表のようになります。
やせ |
18.5未満 |
適正 |
18.5〜25未満 |
肥満(1度) |
25〜30未満 |
肥満(2度) |
30〜35未満 |
肥満(3度) |
35〜40未満 |
肥満(4度) |
40以上 |
参考URL:体脂肪・BMI計
Rプログラム
Step1: 入力する値を定める
height <- 170
weight <- 62 |
#身長を仮に,170cm
#体重を仮に,62kgと考える |
Step2: 計算式を定める
(statistic <- weight/(height/100)^2) |
#身長の単位を,cmからmに変えるために身長を100で割る |
Step3: function(){計算式}でStep2の計算式を括る
function( ){
statistic <- weight/(height/100)^2
} |
|
Step4: 計算式の右辺に出てくる変数をfunction()に代入する
function(weight, height){
statistic <- weight/(height/100)^2
} |
|
Step5: 算出したい変数をreturn()で括る
function(weight, height){
statistic <- weight/(height/100)^2
return(statistic)
} |
|
Step6: 関数名を定める
BMI <- function(weight,
height){
statistic <- weight/(height/100)^2
return(statistic)
} |
|
Step7: 正しく動作するかチェックする
BMI(weight=62, height=170)
> [1] 21.45329 |
|
Step8: 条件分岐を入れる
BMI <- function(weight, height){
statistic <- weight/(height/100)^2
if(statistic < 18.5){
message <- "やせ"
}
else if (statistic <25){
message <- "適正"
}
else if (statistic <30){
message <- "肥満(1度)"
}
else if (statistic <35){
message <- "肥満(2度)"
}
else if (statistic <40){
message <- "肥満(3度)"
}
else{
message <- "肥満(4度)"
}
return(statistic)
} |
|
Step9: 算出したい変数をdata.frame()で括り,resultと命名する.さらに,return()内は,resultに変更する
BMI <- function(weight, height){
statistic <- weight/(height/100)^2
if(statistic < 18.5){
message <- "やせ"
}
else if (statistic <25){
message <- "適正"
}
else if (statistic <30){
message <- "肥満(1度)"
}
else if (statistic <35){
message <- "肥満(2度)"
}
else if (statistic <40){
message <- "肥満(3度)"
}
else{
message <- "肥満(4度)"
}
result <- data.frame("BMI"=statistic,
"判定"=message)
return(result)
} |
|
Step10: 正しく動作するかチェックする
BMI(weight=62, height=170)
> BMI 判定
> 1 21.45329 適正 |
|
自習を深めたい人は
以下の2つのURLを熟読するだけで大丈夫です
このBMIプログラムを,複数の被験者を同時に算出できるように書き換えてみると,更に勉強になります。
目次: 雑多な知識
Rの導入に関するポイントを書いています。
- テキストエディタを使用する
- 潜在変数を扱うモデルはRでは,今のところ使わないでおこう
- Rを学習する意義とデメリット
- Rを学習する前に…
- 「Rは大変だから勉強しないでおこう」と思う前に…
- Rによる関数の作り方
- Rによるシミュレーション
|
|
What's New
- 今年も,いろいろとありました。当Webサイトを御覧頂いている皆様に深謝致します。例年の目標管理のために,2021年の課題と反省 (妄想/妄言)と2022年の課題と反省 (妄想/妄言)を記載致しました。来年もよろしくお願い申し上げます。(2020/12/30)
- 臨床精神薬理に寄稿しました。(2021/2/4)
- 今年も,いろいろとありました。当Webサイトを御覧頂いている皆様に深謝致します。例年の目標管理のために,2020年の課題と反省 (妄想/妄言)と2021年の課題と反省 (妄想/妄言)を記載致しました。来年もよろしくお願い申し上げます。(2020/12/30)
- 日本疫学会ニュースレターに寄稿する機会を賜りました。(2020/4/15)
- アカデミアを終了して、主に公的研究を支援する非営利型の一般社団法人を開業しました。研究の生産性と質を総合的に高めるために、尽力したいと考えております。町田駅付近にいらした際は、遊びにいらして下さいますと幸いです。(2020/4/1)
- 日本疫学会奨励賞を授与頂きました。これまで,ご支援くださった皆様に,心より感謝いたします。(2020/2/23)
- REQUIRE研究会第37回研究集会 (3/21 (土) 14:00-17:45; ベルサール飯田橋) を開催します。(2020/2/18, 3/14追記)
- 今年も,いろいろとありました。当Webサイトを御覧頂いている皆様に深謝致します。例年の目標管理のために,2019年の課題と反省 (妄想/妄言)と2020年の課題と反省 (妄想/妄言)を記載致しました。来年もよろしくお願い申し上げます。(2019/12/31)
- REQUIRE研究会第36回研究集会 (1/18 (土) 13:00-18:00; 東京医科歯科大学) を開催します。(2019/12/13)
- 株式会社情報機構ヘルスケア系セミナー (2/27(木)12:30-16:30; JAM金属労働会館) にて講演を担当します。(2019/11/5, 2020/1/17追記)
- International Journal of Environmental Research and Public Healthに共著論文が掲載されました。(2019/10/17)
- 編集を分担した認知行動療法辞典が出版されました。(2019/9/3)
- REQUIRE研究会第35回研究集会 (9/7 (土) 13:00-18:00; 東京医科歯科大学) を開催します。(2019/8/2)
- 第2回NDBユーザー会 (8/23 (金) 10:00-17:30) にて講演を担当します。 (2019/7/11, 8/24追記)
- 実務者のためのデータベース研究講座 その2 (7/10 (水) 13:30-17:30) にて講演を担当します。(2019/6/10)
- 北里大学医学部精神科学教室研究会 (7/4 (木) 18:00-19:00) にて講演します。(2019/6/10)
- 第33回臨床研究の日 (5/21 (火) 12:00-13:00; 琉球大学) にて講演しました。(2019/6/4)
- REQUIRE研究会第34回研究集会 (5/11 (土) 14:30-17:45; 東京医科歯科大学) を開催します。(2019/4/20)
- Journal of Attention Disorders誌に主著論文が掲載されました。(2019/4/4)
- 臨床研究セミナー (2019/3/22 (金) 18:30-19:30; 倉敷中央病院) にて講演しました。(2019/3/23)
- 臨床精神薬理に寄稿しました。(2019/2/22)
- 第1回NDBユーザー会 (2/27 (水) 10:20-16:30@グランフロント大阪) にて講演を担当します。(2019/1/29, 3/1追記)
- 今年も,いろいろとありました。当Webサイトを御覧頂いている皆様に深謝致します。例年の目標管理のために,2018年の課題と反省 (妄想/妄言)と2019年の課題と反省 (妄想/妄言)を記載致しました。来年もよろしくお願い申し上げます。(2018/12/31)
- 第24回疫学の未来を語る若手の集い (1/30 (水) 18:15-20:00@国立がん研究センター) にて講演を担当します。
- レセプト情報・特定健診等情報データベース(NDB)の使用経験 (スライド) を新設しました。(2018/11/25, 2019/1/11追加)
|
|
|
|
|
|
|