Multivariate Truncated Normal


I would like to specify multivariable truncated normal prior with known covariances. Is this possible in pymc? If not, potential work arounds are welcome!


There is no implementation of truncated multivariate normal. If you know the expression for the additional normalization term (the log cdf between upper and lower) you can add (its negative?) as a separate Potential term.

If you are using it as a likelihood that is all you need.

If you are using it as an unobserved variable, you would also want to specify an interval transform so that NUTS can sample the variable in unconstrained space. I think the interval transform will work out of the box for vectors instead of scalars but I haven’t ever seen it being used like that, so double check it (and the jacobian correction).

1 Like