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中得到了解决,但请注意,如果先验地期望多个模式,则通常使用混合模型将模式分离为不同的单峰随机变量.
标签:confidence-interval,optimization,python,uncertainty,pystan 来源: https://codeday.me/bug/20191108/2007528.html