rstanの結果も整形して描画する

ひとりアドベントカレンダー9日目です。
昨日と同じ話をrstanでもやってみます。
昨日の例は以下のようなロジスティック回帰でした。

res_glm <- glm(data=MASS::birthwt, low~age+smoke, family="binomial")

ですがStanのコードを書きたくない。
ということで、glmmstanを使います。
glmmstanパッケージはかのHADの開発者である清水先生が開発した大便利パッケージです。
詳しくは以下をご覧ください。
http://norimune.net/2675

glmmstanパッケージを使うとこうなります。

devtools::install_github("norimune/glmmstan")
library("glmmstan")
fml <- low~age+smoke
res_glmmstan <- glmmstan(data=MASS::birthwt, as.formula(fml), family="binomial",
                         chains=4, iter=1000)

stanfitオブジェクトはformula情報が保存されていないので、文字列で用意した上でglmmstan関数に渡しています。
こうしておくと以下のようにformulaの左辺と右辺の変数を取り出すのが楽です。

library("formula.tools")
l_v <- lhs.vars(fml)
r_v <- rhs.vars(fml)
res_glmmstan_tidy <- broom::tidy(res_glmmstan)

あとは推定結果とformulaから取り出した変数名を併せて描画します。

library("DiagrammeR")
nodes <- create_nodes(nodes = c("Intercept", r_v))
edges <- create_edges(from = c("Intercept", r_v), 
                      to = rep(l_v, nrow(nodes)),
                      label=round(exp(res_glmmstan_tidy$estimate)[seq(length(r_v)+1)], 2)
)
graph <- create_graph(nodes_df = nodes,
                      edges_df = edges)
render_graph(graph)

formulaの構造や操作はAdvanced Rを見るといいですよ。
邦訳も1月24日発売です!たぶん!

R言語徹底解説

R言語徹底解説

追記

ご指摘にしたがい上記コードを修正しました。ありがとうございます。