2016-07-20 5 views
1

Ich habe von einem einfachen Modell gezogenen Proben pymc3 mit:Wie bekomme ich die Log-Denisty von Pymc3 Modell?

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']) 

Ich frage mich, ob trace die Werte der log-Dichte (pm.Normal) für jeden Wert in trace['var_x'] und wie es enthält zu extrahieren.

Wenn trace nicht die log-Dichte beibehält, gibt es eine andere Möglichkeit, die Werte mit pymc3 zu erhalten?

Dank

Antwort

1

In Ihrem Fall können Sie es neu berechnen von

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

oder allgemeinere tun

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

Sie auch, wie ähnliche Ausdrücke in PyMC3 verwendet werden, um überprüfen möchten zu berechnen Informationskriterien stats

+0

Vielen Dank Aloctavodia! Deine Antwort hat richtig funktioniert. –

Verwandte Themen