Deterministic variable in posterior predictive samples

When generating posterior predictive samples using pm.sample_posterior_predictive the result only shows the observed variable. How can I access deterministic variables after sampling?

Here is an example. After using pm.sample_posterior_predictive I would like to access mu, which is a pm.Deterministic variable but the result only includes y.

import pymc3 as pm
from numpy.random import default_rng
rng = default_rng(seed=0)
x1 = rng.standard_normal((1000, 1)) + 3
y = 10 + x1 * 2
with pm.Model() as model: # Define priors sigma = pm.HalfCauchy("sigma", beta=10, testval=1.0) intercept = pm.Normal("Intercept", 0, sigma=20) x_coeff = pm.Normal("x", 0, sigma=20) # I would like this variable in the posterior predictive samples mu = pm.Deterministic("mu", intercept + x_coeff * x1) # Define likelihood likelihood = pm.Normal("y", mu=mu, sigma=sigma, observed=y) # Sample trace = pm.sample(1000, return_inferencedata=True, cores=1)
ppc = pm.sample_posterior_predictive(trace, model=model)
print(ppc.keys()) # Only shows y
1

1 Answer

The deterministic variable can be accessed in the posterior predictive after explicitly naming it in var_names.

ppc = pm.sample_posterior_predictive(trace, model=model, var_names=['y', 'mu'])

This shows both y and mu.

Your Answer

Sign up or log in

Sign up using Google Sign up using Facebook Sign up using Email and Password

Post as a guest

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge that you have read and understand our privacy policy and code of conduct.

You Might Also Like