Margossian 2022 - Population Two-Compartment Model

Summary

Patient-level PK parameters are drawn from a lognormal population distribution , with clearances and volumes scaled allometrically by body weight. A constraint removes the ‘flip-flop’ non-identifiability. Posterior predictive checks are done for the observed patients and for hypothetical new patients drawn from the population distribution.

Overview

A population (nonlinear mixed-effects, NLME) model captures between-patient heterogeneity while pooling information: what is learned about one patient says something, but not everything, about others. The Bayesian reading: is a prior for the individual parameters, with hyperparameters estimated. The authors warn such models can frustrate samplers (Part II examines a harder case).

Main Content

Population model (Sec. 3.1)

For patient with weight-normalized parameters :

with initially diagonal. Individual parameters after allometric scaling (reference weight 70 kg): , , , ; is not scaled. Likelihood as before, computed per patient.

Flip-flop constraint

In a model with first-order absorption, and the dominant elimination rate are exchangeable in the concentration curve (‘flip-flop’), causing a bimodal, non-identified posterior. The Stan code constrains the population absorption rate to be above the larger eigenvalue of the disposition system,

computed from the population values; the declaration illustrates that bounds may be expressions of other parameters.

Priors used. , , , , ; independent lognormal priors on each element of (the code uses lognormal(0.25, 0.1)); half-normal. Torsten’s pmx_solve_twocpt is called inside a loop over subjects.

Predictive checks (Figs. 5-6). (i) Same code as in the single-patient case to simulate new observations for the same patients; (ii) for hypothetical new patients: draw PK parameters from the population distribution, solve the ODEs, and apply the measurement model. A composite PPC across all individuals is also shown. Generated-quantities cost is small relative to sampling.

Examples

Why partial pooling here. With few samples per patient, individual CL is noisy; the population distribution shrinks it toward by an amount that depends on vs the individual’s information, exactly the normal-normal shrinkage in Hierarchical Linear Models on the log scale.

PyMC sketch (untested), noncentered.

with pm.Model() as pop:
    mu = pm.Normal("log_theta_pop", pt.log(theta_prior), 0.5, shape=5)
    omega = pm.LogNormal("omega", 0.25, 0.1, shape=5)
    z = pm.Normal("z", 0, 1, shape=(J, 5))                    # noncentered individual effects
    theta = pm.Deterministic("theta", pt.exp(mu + omega*z))    # (J, 5)
    scale = weight/70
    CL = theta[:,0]*scale**0.75; Q = theta[:,1]*scale**0.75
    Vc = theta[:,2]*scale;      Vp = theta[:,3]*scale;  ka = theta[:,4]
    # ... per-subject closed-form concentration -> pm.LogNormal("y", log(c), sigma, observed=y)

The noncentered form (not shown in the paper’s Part I; mentioned as important in Part II topics) is the standard guard against funnel geometry; see Hierarchical Models and HMC and Stan in Practice.

Relevance to marketing measurement

A geo-level MMM with partially pooled carry-over and saturation parameters on the log scale is the same structure ( across geos). Allometric scaling corresponds to normalizing geo effects by market size. See Hierarchical Models, Partial Pooling as Multiple Comparisons Correction.

Connections

Meager 2019 - Hierarchical Model Specifications (hierarchical Bayesian across sites), Roever 2020 - Normal-Normal Hierarchical Model and Likelihood.

See Also

Margossian 2022 - Bayesian Pharmacometrics - Overview, Margossian 2022 - Nonlinear PKPD and ODE Solvers.