Each of the 45 population pharmacokinetic (PopPK) models in Chorus was extracted from a peer-reviewed publication. This walkthrough explains that process — how a published NONMEM model is read, understood, and translated into the parameters that drive patient-specific Bayesian forecasting.
The Goti 2018 vancomycin model is used throughout as a worked example.
What is NONMEM?
NONMEM (Nonlinear Mixed-Effects Modeling) is the standard statistical platform for developing population PK models from clinical data. It simultaneously estimates two things:
- The typical pharmacokinetic parameters for the study population.
- The between-subject variability around those typical values.
Accurate extraction of both allows the Bayesian estimator to weight the population prior against a patient's observed drug concentrations.
Step 1: Identify the Structural Model
The first step is determining the compartmental structure. The Goti 2018 abstract states that a "2-compartment model… best fit the data", which means the model is built on four primary parameters:
- Clearance (CL) — volume of plasma cleared of drug per unit time.
- Central volume ($V_c$) — apparent volume of the initial distribution space.
- Peripheral volume ($V_p$) — volume of the secondary distribution compartment.
- Intercompartmental clearance (Q) — rate of drug transfer between compartments.
Step 2: Extract Base Population Parameters ($\theta$)
Population parameters (denoted $\theta$ in NONMEM) represent typical values for an average patient in the study before individual factors such as weight or renal function are applied. From Table 2 of Goti 2018:
- CL: $4.5$ L/h
- $V_c$: $58.4$ L
- $V_p$: $38.4$ L
- Q: $6.5$ L/h
Step 3: Map Covariate Relationships
Covariates are patient-specific factors that scale the base parameters. The covariate equations are typically buried in a table footnote — Goti 2018 provides:
Matching the $\theta$ indices to the parameter table identifies each modifier:
- $\theta_1$ (base CL) $= 4.5$
- $\theta_2$ (power exponent for CrCL on CL) $= 0.8$
- $\theta_4$ (base $V_c$) $= 58.4$
Step 4: Calculate Between-Subject Variability (BSV / $\eta$)
Between-subject variability (BSV) describes how much individual patients deviate from the calculated population mean. Papers typically report BSV as a coefficient of variation (%CV). From Goti 2018:
- BSV on CL: 39.8%
- BSV on $V_c$: 81.6%
- BSV on $V_p$: 57.1%
Bayesian estimation requires variance ($\omega^2$), not %CV. For an exponential (multiplicative) eta model, the conversion is:
Applying this to each parameter:
- CL: $\ln(1 + 0.398^2) \approx 0.147$
- $V_c$: $\ln(1 + 0.816^2) \approx 0.510$
- $V_p$: $\ln(1 + 0.571^2) \approx 0.282$
Parameter Transformation Models
Variability is applied by transforming the population typical value ($P_{pop}$) by the individual's random deviation ($\eta$). Goti 2018 uses the exponential form:
Step 5: Construct the Omega ($\Omega$) Matrix
BSV is structured into the Omega ($\Omega$) matrix — a covariance matrix that captures both the variance of each parameter and any correlations between them. When parameters vary independently (no covariance), the off-diagonal entries are zero:
| CL | $V_c$ | $V_p$ | |
|---|---|---|---|
| CL | 0.147 | 0 | 0 |
| $V_c$ | 0 | 0.510 | 0 |
| $V_p$ | 0 | 0 | 0.282 |
Step 6: Extract Residual Error ($\sigma$)
Residual error captures the gap between model-predicted and observed concentrations — a composite of measurement noise, assay imprecision, and model misspecification. From Goti 2018, Table 2 under "Residual Variability":
- Additive error: $3.4$ mg/L
- Proportional error: $22.7\%$ CV