如何从pymc3模型中获取log-denisty?

时间:2016-07-20 07:32:29

标签: probability-density pymc3

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

由于

1 个答案:

答案 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