I noticed that the default ODE tuning parameters for
pmx_solve_bdf are 1e-6, 1e-6, 1e+6; while the defaults for
integrate_ode_bdf is 1e-10, 1e-10, 1e+8. Is the difference deliberate?
+1 for having the algebraic solver tuning parameters for the steady states.
I would agree with that 1E-6 is more appropriate for properly scaled data in the pharmacometrics field where you often model concentrations.
Does that mean we should change the defauls on
integrate_ode_bdf? This is a big deal in that
1e-10 is a very stringent requirement for ODE solving.
if Stan only solves properly scaled data as in pharmacometrics… then maybe yes…generally we should leave the defaults to err on the conservative side. Though, our current defaults really tight for most problems I think; still it’s a safer bet for the general user base.
Are the tolerances set up so we need both absolute and relative tolernace in range? If so,
that’s is already going to behave badly if the scale is >> 1. If not, then the relative tolerance will take over when the value is > 1 and absolute will take over when < 1.
Are there problems where the higher tolerance works but lower tolerances don’t?
What’s the performance penalty on a problem that does work for tightening from (1e-6, 1e-6) to (1e-10, 1e-10)?
That’s a huge penalty for problems I worked on. It makes a massive difference in speed.
I have seen that when tolerances are too loose then the sampler is not properly exploring the posterior or is behaving oddly…so tolerances cannot be pushed up too much.
Yes. Note that this is different from
pmx_integrate_ode_bdf, which is torsten’s counterpart of
integrate_ode_bdf. There the default values are the same. Actually to me even 1e6 is too much to ask as default mxstep. In NONMEM this is 1e5.