如何从 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
我使用 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