2016-07-20 3 views
1

я нарисованные образцы из простой модели с использованием pymc3:Как получить лог-denisty из модели 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 содержит значение лога-плотность (pm.Normal) для каждого значения в trace['var_x'] и как извлечь его.

Если trace не сохраняет логарифмическую плотность, есть ли другая возможность получить значения с помощью pymc3?

Благодаря

ответ

1

В вашем случае вы можете пересчитывать его, делая

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

или более общий

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

Вы также можете проверить, как аналогичные выражения используются в PyMC3 для вычисления информационные критерии stats

+0

Большое спасибо aloctavodia! Ваш ответ работал правильно. –