Why does my new data with length of 12, give me 48 posterior predictive observations?

You define these variables here but then don’t use them in the model. When you use pm.set_data those are the variables being modified, but modifying them has no effect on the model because the model uses the numpy/pandas objects directly.