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日発売です!たぶん!
- 作者: Hadley Wickham,石田基広,市川太祐,高柳慎一,福島真太朗
- 出版社/メーカー: 共立出版
- 発売日: 2016/02/10
- メディア: 単行本
- この商品を含むブログ (29件) を見る
追記
ご指摘にしたがい上記コードを修正しました。ありがとうございます。
@dichika https://t.co/7Gl8SkUuOP で formula オブジェクトを毎回 as.formula してるのってあまり意味がないので最初から fml <- low ~ age + smoke で良いのでは説。
— kos59125 (@kos59125) 2015, 12月 15