How does that fit with sampling posterior predictive results?
When I create a new model, with new dimensions, then try to sample, I get a shape compatibility error.
train_x = np.random.rand(10)*10
y = 1 + 0.5*train_x + np.random.rand(10)
train_x[5] = np.nan
train_x[3]= np.nan
with pm.Model() as model:
y = pm.MutableData('y',y)
x = pm.Normal('x', 0,1,observed = train_x)
a = pm.Normal('a', 0,1)
w = pm.Normal('w', 0,1)
mu = pm.Deterministic('mu', a + w*x)
sigma = pm.HalfNormal('sigma', 1)
pm.Normal('y_obs', mu=mu, sigma=sigma, observed=y)
with model:
trace = pm.sample()
train_x2 = np.random.rand(20)*10
#y = 1 + 0.5*train_x2 + np.random.rand(10)
train_x2[15] = np.nan
train_x2[11]= np.nan
train_x2[7]= np.nan
with pm.Model() as model2:
y = pm.MutableData('y',np.zeros(len(train_x2)))
x = pm.Normal('x', 0,1,observed = train_x2)
a = pm.Normal('a', 0,1)
w = pm.Normal('w', 0,1)
mu = pm.Deterministic('mu', a + w*x)
sigma = pm.HalfNormal('sigma', 1)
pm.Normal('y_obs', mu=mu, sigma=sigma, observed=y)
with model2:
ppc_samples = pm.sample_posterior_predictive(
trace,
var_names=["mu"],
random_seed=1,
)
trace.extend(ppc_samples)