Multilevel conditional multinomials in MCMC

Depending on whether the parent process is observed or not. If it is observed, then you can write down the child process nested under each parent process:

for parent in ['A', 'B', 'C']:
    pm.Multinomial('child', n, p=p[parent], observed=...)

If the parent is not observed, then some thing like a latent dirichlet allocation model should work. You can have a look at a recent discussion: Naive Bayes model with PyMC3