So one thing that is different in the out of predictions tutorial you linked compared to what you are doing is for the posterior predictions there they don’t use the observed. For instance this is from a block with sample_posterior_predictive
y_pred = pm.Normal("y_pred", mu=beta * x, sigma=0.1, shape=x.shape)
Are you trying to train sm_toEst using sample posterior predictive? As far as I know sample_posterior_predictive is not used for such purposes. I don’t even know what such a variable with defined observed does during sample_posterior_predictive. sample_posterior_predictive only is used to do prediction using the sampled posteriors in the model. For instance in the page you have linked above, they fit a linear regression and then predict what the outcome would have been if the constant input x had changed. This process simply takes the posteriors sampled from your model and combines it with the new x to see how y would have come out in that context.
So my guess is if you define a new prior that does not depend on anything else, it just samples from there using the prior (you can test this by setting the prior to be tight with say normal sd=0.1). sample_posterior_predictive as far I would guess will have nothing to do with the observed (but might be wrong so I will defer that to devs). For that you would have to have to use sample. Any reason you don’t include it in your first model? I notice you used a constant input for it instead, so it could be perhaps normal priors centred around those constant values.