0

如何为序数回归中的每个预测变量生成每个结果的后验概率分布?

例如,我正在寻找的是:

library(rstanarm)
fit_f <- MASS::polr(tobgp ~ agegp, data = esoph)
predict(fit_f,newdata=data.frame(agegp=factor(levels(esoph$agegp))),type = "probs")

现在使用 rstanarm 我做:

fit <- stan_polr(tobgp ~ agegp, data = esoph, method = "logit",
                    prior = R2(0.2, "mean"), init_r = 0.1, seed = 12345)

但是我如何获得各个结果/预测变量的分布?我确实使用 epred 得到了概率分布,但我不明白哪个结果/预测变量?

posterior_epred(fit, newdata=data.frame(agegp=factor(levels(esoph$agegp))))

4

1 回答 1

1

在 rstanarm 中执行此操作的最简单方法是使用该posterior_predict函数获得后验预测,然后通过观察计算落入每个结果类别的预测的比例。在代码中,

PPD <- posterior_predict(fit) # uses esoph
probs <- t(apply(PPD, MARGIN = 2, FUN = table) / nrow(PPD))

调用的矩阵probs的行数等于观察数 (in esoph),列数等于 in 中的类别数,tobgp并且其每一行的总和为 1。

head(probs)
  0-9g/day   10-19   20-29     30+
1  0.26400 0.26250 0.22875 0.24475
2  0.25650 0.26750 0.23050 0.24550
3  0.25175 0.27975 0.22450 0.24400
4  0.25575 0.26000 0.24025 0.24400
5  0.26350 0.26625 0.23575 0.23450
6  0.28275 0.26025 0.21500 0.24200
于 2021-06-25T13:15:02.180 回答