I have a very simple model:
I have a Uniform prior, p; a Binomial Likelihood that uses the prior as parameter p. I make an observation (e.g. a success) to obtain my posterior belief of p.
This is easily achieved in PyMC3. However, I wish to define a new Random Variable, say, q, that is the reciprocal of p.
I (naively) thought I could just define a new variable q = p**-1
, but this does not allow me to see the trace or sample from q when I call
trace = pm.sample(500)
Is there a way for me to take samples from a RV that is not explicitly used in the model but is deterministically related to a RV that IS in the model?
import pymc3 as pm
from scipy import optimize
basic_model = pm.Model()
with basic_model:
p = pm.Uniform('p', lower=0, upper=1)
q = p**-1 # THIS IS WHAT I WISH TO BE ABLE TO SEE IN THE TRACE
out = pm.Binomial('out', n=1, p=p, observed=1)
trace = pm.sample(500)
_ = pm.traceplot(trace)