R 中函数 bic.glm 的后验概率

Posterior probabilities from function bic.glm in R

提问人:Chris J 提问时间:7/5/2020 更新时间:7/5/2020 访问量:203

问:

我正在查看 R 中函数“bic.glm”输出的后验概率,它们只显示 3 位数字。此外,当我尝试“options(digits = 16)”时,我仍然只能获得 3 位数字的后验概率。我的问题分为两部分:有没有办法看到更多后验概率的数字?当 R 使用“预测”函数从贝叶斯模型进行预测时,它使用多少位数的后验概率精度?

R 模型 贝叶斯 浮动精度

评论


答:

2赞 Ian Campbell 7/5/2020 #1

后验概率以全精度存储在 中。$postprob

小插图为例:

library(BMA)
data(UScrime, package = "MASS")
f <- formula(log(y) ~  log(M)+So+log(Ed)+log(Po1)+log(Po2)+log(LF)+
                       log(M.F)+ log(Pop)+log(NW)+log(U1)+log(U2)+
                       log(GDP)+log(Ineq)+log(Prob)+log(Time))
glm.out.crime <- bic.glm(f, data = UScrime, glm.family = gaussian()) 

summary(glm.out.crime)
#...                                                                                                
#nVar                                       7           8           7           8           6    
#BIC                                   -108.92725  -108.75890  -108.07840  -107.70043  -107.56949
#post prob                                0.051       0.047       0.033       0.028       0.026  

 glm.out.crime$postprob[1:5]
#[1] 0.05105381 0.04693225 0.03339668 0.02764572 0.02589375

查看源代码表明,它们在限制中进行了硬编码。也许是由于格式化输出,但也许是出于另一个原因。

predict.bic.glm 的源代码中,我们可以看到使用了完整的值:

predict.bic.glm <-
function(object,newdata,...){
...
pred <- apply(object$postprob * rhs, 2, sum)
...
}