首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在顺序回归中从rstanarm获得预测概率

在顺序回归中从rstanarm获得预测概率
EN

Stack Overflow用户
提问于 2021-06-25 03:39:20
回答 1查看 46关注 0票数 0

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

例如,我要找的是:

代码语言:javascript
复制
library(rstanarm)
fit_f <- MASS::polr(tobgp ~ agegp, data = esoph)
predict(fit_f,newdata=data.frame(agegp=factor(levels(esoph$agegp))),type = "probs")

现在使用rstanarm我做到了:

代码语言:javascript
复制
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))))

EN

回答 1

Stack Overflow用户

发布于 2021-06-25 21:15:02

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

代码语言:javascript
复制
PPD <- posterior_predict(fit) # uses esoph
probs <- t(apply(PPD, MARGIN = 2, FUN = table) / nrow(PPD))

名为probs的矩阵的行数等于观察值的数量(在esoph中),列数等于tobgp中的类别数,并且每一行的总和为1。

代码语言:javascript
复制
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
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/68121884

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档