整形した結果を表示する

ひとりアドベントカレンダー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の邦訳が出るらしい。

R言語徹底解説

R言語徹底解説

楽しみですね。