brms パッケージで順序回帰モデルを構築しました。
bmodel<- brm(pop ~ RDB2000pop + Temperature2003 + Artificial.land2003 + Wasteland2003 + Volcanic.area + Agricultural.land2003 + RiverLake2003 + Seashore2003 + Protected.area +
(1+RDB2000pop+Temperature2003+Artificial.land2003+ Wasteland2003 + Volcanic.area + Agricultural.land2003 + RiverLake2003 + Seashore2003 + Protected.area |species_id),
data = dfpop_chenv,
family = cumulative(link = "logit", threshold = "flexible"),
prior = c(set_prior("normal(0,10)", class = "b")),
warmup = 1000,
iter = 10000,
chains = 4,
save_all_pars = TRUE,
save_model = "grass_w_stanscript",
file = "grass_w")
次に、結果の条件付き効果をプロットしようとしました (「序数 = TRUE」は廃止されました)。
rplot<- plot(conditional_effects(bmodel, categorical =TRUE)) #categorical
pp <- do.call("grid.arrange", c(rplot, ncol=4))
これらの推定値は、特定のカテゴリで結果が得られる確率であり、特定の条件下ですべてのカテゴリの合計が 1 になるはずです。conditional_effects() からではなく、posterior_epred() から。
同様の状況を検索すると、デフォルトで conditional_effects がサンプルの平均ではなく中央値を返すことがわかりました。
そこで、次のページ(連続予測子を持つ順序モデル)を参照して、もう一度試してみました。 https://cran.r-project.org/web/packages/tidybayes/vignettes/tidy-brms.html#ordinal-model-with-categorical-predictor
fit_plot = dfpop_chenv %>%
data_grid(Temperature2003 = seq_range(Temperature2003, n = 101)) %>%
add_epred_draws(bmodel, value = "P(pop | Temperature2003)", category = "pop")
ggplot(aes(x = Temperature2003, y = `P(pop | Temperature2003)`, color = pop)) +
stat_lineribbon(aes(fill = pop), alpha = 1/5) +
scale_color_brewer(palette = "Dark2") +
scale_fill_brewer(palette = "Dark2")
しかし、「RDB2000popが見つかりませんでした」というエラーが表示されました。RDB2000pop は説明変数の 1 つです。そして、「dfpop_chenv」にあるはずです。
問題は「add_epred_draws()」に関連しているようです。「add_epre_draws()」を単純に使用しようとすると、同じエラーが表示されます。
tibble(Temperature2003 = 2) %>%
add_epred_draws(bmodel) %>%
median_qi(.epred)
各カテゴリの予測確率をプロットするにはどうすればよいですか?