Hello, I am porting an old PyMC3 model (written in 2019, so I assume it was v3.7 or similar) to the PyMC and am struggling. Does there exist a vocabulary from ‘old’ to ‘new’ way of doing things? For example, what should I use instead of
.astype(floatX) in an expression like
np.random.normal(loc=0, scale=1, size=[2, 3]).astype(floatX)
- how to get access to posterior of a specific parameter? I reran this example in Colab, and it breaks with the new PyMC at the expression
Most of the times it’s enough to replace
pytensor.x. In your case
Re: the last point, all the
pm.sample functions return arviz
InferenceData by default now, so you can grab variables as if you had first done
az.from_pymc3 in older versions. This notebook also does a lot grabbing stuff out of InferenceData, so it might be good to check out.
Thanks both @ricardoV94 @jessegrabowski,
pytensor got me a long way. The item I am stuck with now is
1). getting samples of a particular variable from trace,
2). getting samples of a particular variable from prior/posterior predictive.
For example, the code below produces errors on the last two lines. What am I doing wrong? Here is a link to Colab with the same code for reproducibility.
import pymc as pm
n = 250
with pm.Model() as model:
alpha = pm.Gamma('alpha', alpha=4, beta=0.5)
beta = pm.Gamma('beta', alpha=4, beta=0.5)
x1 = pm.Beta('x1', alpha, beta)
x2 = pm.Beta('x2', alpha, beta)
k1 = pm.Binomial('k1', n=n, p=x1, observed=140)
k2 = pm.Binomial('k2', n=n, p=x2, observed=110)
trace_prior = pm.sample_prior_predictive(500)
trace_sample = pm.sample(500)
trace_prior will have groups
prior_predictive. Since alpha isn’t observed, you can get it out of the prior group like this:
trace_sample will have a bunch of groups, but the relevant one here is
If you’re working in a notebook, you run a cell with only
trace_sample to get a nice interactive object you can click around inside to explore the structure.