Problems in defining weakly informative priors for a categorical multilevel mixture model

You can create new random variables from manipulations of existing random variables using pm.CustomDist. For example:

import pymc as pm
import arviz as az

def my_dist(nu, shape=None):
    t = pm.HalfStudentT.dist(nu=nu, shape=shape)
    return pm.math.clip(1 / (2 * t) ** 2, 1e-9, np.inf)

with pm.Model() as m:
    sigma = pm.CustomDist('sigma', 2, dist=my_dist)
    prior = pm.sample_prior_predictive()
    
az.plot_posterior(prior.prior)

Generates this absolute beauty:

1 Like