0

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)

各カテゴリの予測確率をプロットするにはどうすればよいですか?

4

0 に答える 0