python-Pystan后不确定性间隔

我看到on another forum PyStan与RStan的功能不同,后者使用posterior_interval(),但是我们可以使用numpy.percentile().我目前正在使用PyStan中的pystan.StanModel.optimizing()函数来获取使后验可能性最大化的参数集.我现在也想获得后验结果的外部95%置信区间,因此我想知道numpy.percentile()函数是否将与优化函数一起使用?

我尝试找到参数分布的95%区间,但是在结果周围并没有给出良好的置信区间.特别是,我不认为这很好,因为当我期望后验呈现多峰分布时,我使用numpy.percentile()进行的置信区间位于后验2D高斯斑块内.

我认为必须从后方采取95%的间隔.我将百分位数函数与优化函数一起使用以获得95%的后验置信度吗?

解决方法:

要获得后验估计的界限,需要对后验进行采样,而pystan.StanModel.optimizing则不这样做.而是使用pystan.StanModel.sampling方法从后验生成MCMC抽奖.

如果只需要读出标准置信范围,则pystan.StanFit.stansummary()方法可能就足够了,因为这将为每个参数打印2.5%,25%,50%,75%和97.5%的分位数.例如,

fit = sm.sampling(...) # eight schools model
print(fit.stansummary())

06001

或者,如果您需要特定的分位数,则可以使用numpy.percentile.

但是,正如您正确观察到的那样,这不适用于多峰分布.这种情况在a different answer中得到了解决,但请注意,如果先验地期望多个模式,则通常使用混合模型将模式分离为不同的单峰随机变量.

上一篇:加速将rtf转换为纯文本


下一篇:php-在每个页面上进行检查时使用会话或数据库查询吗?