Using priors from previous multi-record runs for single-record runs

In 13C breath-test analysis, pharmacological time series are fitted to a non-linear three-parameter curve to determine gastric emptying parameters. See https://apps.menne-biomed.de/breathtestshiny/ for examples and https://github.com/dmenne/breathteststan/blob/master/exec/breath_test_1.stan for the Stan code. This works well for 100+ record samples from clinical context. I use the handwaivingly derived posteriors from this large sample as fixed hyper-priors in the code.

In practice however, most of the time a single patient record has to be fitted; passing a single record works, but currently I recommend using patient data as a mix-in together with a random selection of old records. Clinicians do not like this, because it needs > 5 minutes to run, and it is difficult to explain what happens exactly.

I would prefer feed the multi-record posterior for a given meal type as priors for a single run. Is there a better approach than fitting distributions from the full run manually and feeding the parameters as hyper-priors? Some way to pass a fit to Stan directly?

Nice!

That is one new and bunch of old ones, and making a joint model for that?

Depends.

  1. If the distributions from the full run are well described by some parametric distribution, then that would be the fastest option.
  2. You could choose from the full run a smaller representative set of draws, and for each of those draw run a model with the specific parameters fixed to the draw values and with new data, and combine then the result
  3. Importance sampling where you just ask Stan to compute updated lp__ values given the new data and old draws (which however is bit tricky if you have new parameters for new data)

Aki

That is one new and bunch of old ones, and making a joint model for that?

It’s a quite common approach in pharmacology when using classical population fit the nlme-type.

If the distributions from the full run are well described by some parametric distribution, then that would be the fastest option.

Yes, it’s possible. I did it the quick-and-easy-look-at-the-distribution way before.

For 2) I fear the discussion which subset to use would be something I try to avoid.

I thought that something in the line of 3), but the lp_ manipulation is above my head.

Dieter (Menne),

I stupidly left out the “m” in my login-name, usually its dmenne