整形した結果を表示する
ひとりアドベントカレンダー6日目。
glm使ってオッズ比を算出しながら、あーこの辺自動的にやってくれるパッケージあったなと思いだした。
epiCalcというパッケージで、該当関数はlogistic.display。
が、CRANからリムーブされていた。
https://cran.r-project.org/web/packages/epicalc/index.html
なんでやねんと思ったら、名前が変わったということらしい。
http://stackoverflow.com/questions/32316360/why-was-package-epicalc-removed-from-cran
ということでepicalcではなく、epiDisplayを使いましょう。
(下記結果はコピペがうまくいっておらず若干表示が乱れているがRで実行するともっと綺麗。)
> library("epiDisplay") > res_glm <- glm(data=MASS::birthwt, low~age+smoke, family="binomial") > logistic.display(res_glm, simplified = TRUE) OR lower95ci upper95ci Pr(>|Z|) age 0.9514394 0.8936482 1.012968 0.11947826 smoke 1.9974047 1.0630269 3.753080 0.03156366
が、汎用的な「きれいな結果表示」としてはbroomパッケージが便利。
broom(ほうき)の名の通り、ぐちゃっと表示された結果を整形して表示してくれる。
ここではtidy関数を用いて、上記logistic.displayと同様にオッズ比とその信頼区間を算出している。
(下記例もコピペうまくいっておらず…)
> library("broom") > (res_glm_tidy <- tidy(res_glm, exponentiate = TRUE, conf.int = TRUE)) term estimate std.error statistic p.value conf.low conf.high 1 (Intercept) 1.0627985 0.75731970 0.08042249 0.93590124 0.2426549 4.780114 2 age 0.9514394 0.03197195 -1.55696724 0.11947826 0.8918117 1.011394 3 smoke 1.9974047 0.32180606 2.14989327 0.03156366 1.0641120 3.770397 > class(res_glm_tidy) [1] "data.frame"
しかも結果はデータフレームの形で返ってくる(logistic displayの場合はリスト)。
なお、信頼区間の算出には組み込みのconfint関数を用いているようだ。
broomパッケージについてもっと詳しく知りたい人は以下の記事をご覧いただきたい。
http://notchained.hatenablog.com/entry/2015/10/10/113543
さて、そんなbroomパッケージが内部的に使われているggplot2の作者Hadley Wickhamの書いたAdvanced Rの邦訳が出るらしい。
- 作者: Hadley Wickham,石田基広,市川太祐,高柳慎一,福島真太朗
- 出版社/メーカー: 共立出版
- 発売日: 2016/02/10
- メディア: 単行本
- この商品を含むブログ (29件) を見る