我想在样本点和一些手动输入的点(例如,合成数据集的真实参数值点)上评估对数后验(最好分别对数先验和对数似然)值。如何在PyMC3中实现这一目标?
更新:
我已经找到了logp()
方法,但是对多个点使用它不是很方便。是否有一些标准/惯用的方法?
更新:
此[y.logp(trace[i]) for i in range(len(trace))]
有效,但速度较慢。
更新:
缓慢是由y
是观察到的随机变量这一事实引起的,调用模型的logp
方法可以快速进行。
最佳答案
好的,现实情况是,最好在其discourse forum.上询问与PyMC3相关的问题
所以to get the values of log-posterior after sampling使用logp = mvg_model.logplnp = np.array([logp(trace.point(i,chain=c)) for c in trace.chains for i in range(len(trace))])
To save them during sampling使用
```
with model:
llk = pm.Deterministic(likelihood_name, model.logpt)
```