One thing I could pick up from your posteriors is that the range of your λ values are very large for this type of ODE (between 0.1 and 1). Is that your force of infection term? You could try to use pymc.TruncatedNormal or other truncated distributions to get a sense of where your priors on them should be (and also to , artificially, reduce your variance). After you have a good set of priors, you might consider pymc.Potential to put weights around your observed values, and remove all the Truncated stuffs you used before.
From my own experience, the usual Bayesian statistics (divergences, ess, r_hat) are not reliable/ not good indicators whether your ODE model is sufficient if your posteriors are not anywhere near the observed values.
2 Likes