Stan simple model for pharmacokinetics

If you can’t find priors directly from domain expertise, the current best way are prior predictive checks - discussed within the recent workflow preprint and the Visualisation paper.

In the most simple approach I can just look what my priors do on the parameters. My understanding of PK is relatively shallow, so I hope I am not messing up, but say I take the drug you describe as at least a bit similar to the one I am studying, so - to stay on the safe side - I can assume V to be a priori within two orders of magnitude of 22, i.e. roughly between 0.2 and 2000. If you are good at math, you can solve (or have your computer solve) for the parameters of the lognormal that would match 95% or 99% prior interval to those values. Or you can just do a bit of trial and error (using R here to draw 30 values from a lognormal distribution with given params ):

set.seed(522364)
center <- 20
rlnorm(30, meanlog = log(center), sdlog = 5)
#  [1] 3.523340e+01 5.241080e+00 4.183498e+04 1.943986e+00 5.580033e+02 9.400129e+06 5.330368e+00 1.387772e+06 5.595159e+02 2.086984e+00
# [11] 4.520441e+02 8.767097e+01 6.771238e+01 3.838290e+02 3.606970e-01 1.013651e+01 1.483323e+05 1.497356e+04 6.265917e-01 5.003035e+00
# [21] 1.370033e+04 9.536687e-01 1.896423e+02 1.322343e-02 1.429113e-02 1.831241e+02 7.630693e+01 8.471494e+00 2.835572e-01 1.170597e+06

OK so I see a bunch of values on the order of 1e6 and there is also some at 1e-2, so my sd is probably too large, let’s try a bit smaller:

rlnorm(30, meanlog = log(center), sdlog = 4)
#  [1] 9.228254e-01 5.863253e+01 1.388731e+00 2.389572e-03 1.147771e+05 3.814239e+00 1.206882e+02 5.894352e+01 3.165645e+00 9.371014e-04
# [11] 3.983885e+00 2.498825e+01 3.555730e-01 4.597215e-01 6.055531e-02 4.430602e+01 1.066487e-01 4.154448e+05 5.076735e+01 5.629688e-01
# [21] 1.001600e+03 1.065909e+01 6.832729e+01 3.306314e+00 1.321551e+03 4.618202e-01 1.773967e+02 1.534803e+03 1.972578e+02 1.018798e+01

Now most of the values are within the range AND the whole range is represented, I would say that’s good for a start.

You could then do a next step and use the params drawn form priors to compute the concentration curve and tweak the priors until many (but not all) curves look somewhat sensible.

Does that make sense?

3 Likes