Hi! Just wondering if there is a way to implement this model: Constraint or prior dependent on multiple parameters - Questions - PyMC Discourse in numpyro?
i didn’t look at the post very closely but you should just be able to use
factor, which is the equivalent of
Potential. numpyro also has
Thanks Martin for that link! Can we also place a “prior” on the
factor? In the PyMC3 discussion linked, the
factor added is a ratio between two parameters, and a normal distribution prior was placed on this quantity.
hi @tcuongd please refer to the docs. afaik
factor is more or less exactly equivalent to
deterministic is more or less exactly equivalent to
deterministic. if that isn’t enough information to enable you to do what you want to do please try to formulate a specific self-contained question about a specific model (without reference to external posts) and we can likely be of more help.
Thanks Martin, fair call and you’re totally right! I dug into the docs a little deeper and was able to replicate that bit of the PyMC3 code using
factor. For completeness, I think the translation is:
with pm.Model() as model: inv_b0 = pm.Flat('inv_b0') b1 = pm.Flat('b1') b0b1 = pm.Deterministic('b1/b0', b1*inv_b0) pm.Potential('constraint', pm.Normal.dist(5., 1.).logp(b0b1)) ...
import numpyro import numpyro.dist as dist def model(): inv_b0 = numpyro.sample("inv_b0", dist.Uniform(0, 1)) b1 = numpyro.sample("b1", dist.Uniform(0, 1)) b0b1 = numpyro.deterministic("b0b1", b1 * inv_b0) constraint = dist.Normal(5, 1).log_prob(b0b1) numpyro.factor("constraint", constraint) ...