使用 pymc 解释 MCMC 运行 的后验分布

Interpreting the posterior distributions of a MCMC run using pymc

pymc太棒了!它真的为 MCMC 打开了我的世界,所以感谢你编写代码。

目前我正在使用 pymc 通过将函数拟合到观察值来估计一些参数和置信区间。对于大多数观察集,参数的后验分布 (pymc.Matplot.plot(MCMCrun)) 形状很好,类似高斯分布,并且某个参数(在这种情况下为参数 a)的最佳估计和不确定性来自来自 :

param_estimate = MCMCrun.a.stats()['mean']

param_estimate = MCMCrun.a.stats()['standard deviation']

和来自

的置信区间

lower,upper = scipy.stats.mstats.mquantiles(MCMCrun.a.trace(), [0.025, 0.975])

但是在某些情况下后验分布看起来像

如您所见,A 不应低于零,在我之前,我将 A 和 B 都设置为均匀、正并覆盖足够的合理参数 space。我的问题是:

解释 A 的后验分布的正确方法是什么?

取轨迹的平均值现在将产生一个不在后验分布峰值处的值,因此不具有真正的代表性。我应该继续 运行 次迭代吗?或者这是我将得到的 A 的最佳估计值,即它在 0 到 ~7 之间?

后验分布总结了参数中的后验不确定性,条件是你拟合模型的数据集,当然还有模型结构本身。从后验中,您可以提取集中趋势的度量(均值或中位数)和后验可信区间,这可以从后验的适当分位数中获得。