如何从 pymc3 模型中获取日志密度?

How to get the log-denisty from pymc3 model?

我使用 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 获取值?

谢谢

在您的情况下,您可以通过执行以下操作重新计算它

[var_x.logp(i) for i in trace]

或更一般

[[free.logp(i) for i in trace] for free in model.free_RVs]]

您可能还想查看 PyMC3 中如何使用相似的表达式来计算信息标准stats