我使用pymc3从简单的模型中提取样本:
import pymc3 as pm
with pm.Model() as model:
var_x = pm.Normal(name='var_x', mu = 0, sd = 1)
trace = pm.sample(10)
print(trace['var_x'])
我想知道trace
是否包含trace['var_x']
中每个值的对数密度值(pm.Normal)以及如何提取它。
如果trace
没有保留对数密度,是否还有其他可能通过使用pymc3获取值?
由于
答案 0 :(得分:1)
在您的情况下,您可以通过执行
重新计算它[var_x.logp(i) for i in trace]
或更一般
[[free.logp(i) for i in trace] for free in model.free_RVs]]
您可能还想检查PyMC3中如何使用相似的表达式来计算信息标准stats