---
title: "Evolocumab popPK and LDL-C exposure-response (Kuchimanchi 2018)"
output: rmarkdown::html_vignette
vignette: >
  %\VignetteIndexEntry{Evolocumab popPK and LDL-C exposure-response (Kuchimanchi 2018)}
  %\VignetteEngine{knitr::rmarkdown}
  %\VignetteEncoding{UTF-8}
---

```{r, include = FALSE}
knitr::opts_chunk$set(
  collapse = TRUE,
  comment  = "#>",
  fig.width  = 7,
  fig.height = 4.5
)
```

```{r setup}
library(nlmixr2lib)
library(rxode2)
library(PKNCA)
library(dplyr)
library(tidyr)
library(ggplot2)
```

# Evolocumab population PK and LDL-C exposure-response (Kuchimanchi 2018)

Kuchimanchi et al. (2018) characterised the population pharmacokinetics
*and* the exposure-response relationship for evolocumab, a fully human IgG2
monoclonal antibody against proprotein convertase subtilisin/kexin type 9
(PCSK9), in patients with hypercholesterolemia. The final population PK
(popPK) model (Table 3, fit to 3414 subjects pooled across 11 phase 1, 2,
and 3 studies) is a one-compartment model with first-order SC absorption
from a depot compartment and parallel linear plus Michaelis-Menten
(target-mediated) elimination from the central compartment. Body weight
entered as a power effect on CL, V, and V~max~; female sex multiplied V;
statin monotherapy, ezetimibe use (functionally the statin + ezetimibe
combination-therapy indicator), and baseline PCSK9 modified V~max~. The
absorption rate constant (k~a~), SC bioavailability (F), Michaelis-Menten
constant (k~m~), and V~max~ typical value were fixed in the updated phase 3
popPK model.

The companion exposure-response model (Table 4, fit to 1314 patients from 4
phase 2 studies) is an algebraic E~max~ relationship linking the AUC of
unbound evolocumab over weeks 8 to 12 of treatment (AUC~wk8-12~) to the
mean LDL-C reduction at weeks 10 and 12. Statin and statin + ezetimibe
combination therapy lowered baseline LDL-C; heterozygous familial
hypercholesterolemia (HeFH) raised it; statin co-administration also
attenuated the maximum drug-induced LDL-C reduction (E~max~). A regimen-
effect multiplier on EC~50~ distinguished the once-monthly (QM) dosing arm
from the once-every-2-weeks (Q2W) arm because the static E~max~-on-AUC
formulation cannot otherwise capture the difference in target-saturation
time courses between regimens with similar AUC values.

The library packages both models as a pair, sharing this vignette:

| Model file (`modellib()` key)                  | Endpoint                                           |
|-----------------------------------------------|----------------------------------------------------|
| `Kuchimanchi_2018_evolocumab`                  | Evolocumab serum concentration (popPK only)        |
| `Kuchimanchi_2018_evolocumab_ldlc`             | popPK + AUC~wk8-12~ tracker + LDL-C E-R response   |

This vignette reproduces the typical-value concentration-time profiles for
the two commercial regimens (140 mg SC Q2W and 420 mg SC QM), documents the
parameter provenance in a source-trace table, validates the simulated NCA
(PKNCA) steady-state exposures against the published mean C~max~ values,
and replicates the paper's predicted maximal LDL-C reduction for the two
commercial regimens at the reference patient.

# Model and source

* Citation: Kuchimanchi M, Monine M, Kandadi Muralidharan K, Woodhead JL,
  Horner TJ. *Population pharmacokinetics and exposure–response modeling
  and simulation for evolocumab in healthy volunteers and patients with
  hypercholesterolemia.* J Pharmacokinet Pharmacodyn. 2019;46(2):133–148.
* Article:
  [doi:10.1007/s10928-018-9592-y](https://doi.org/10.1007/s10928-018-9592-y).
* No errata were identified (PubMed search `Kuchimanchi 2018 evolocumab
  erratum`, 2026-04-24, returned no results).

# Population

Kuchimanchi 2018 Table 2 (phase 1, 2, and 3 pooled column; N = 3414):

| Field              | Value                                                                |
|--------------------|----------------------------------------------------------------------|
| N subjects         | 3414 (receiving evolocumab; pooled from 5474 across all arms)        |
| N observations     | 16 179 evolocumab concentrations                                     |
| N studies          | 11 (1 phase 1a, 1 phase 1b, 4 phase 2, 5 phase 3)                    |
| Age                | 18–80 years (mean 57)                                                |
| Weight             | 41–175 kg (mean 84.2)                                                |
| Sex                | 50% female / 50% male                                                |
| Race / ethnicity   | 87% White, 7% Black, 4% Asian, 2% other                              |
| Disease state      | Healthy volunteers (phase 1a) + hypercholesterolemia patients        |
| Baseline PCSK9     | Mean 402 ng/mL (range 15.5–1233)                                     |
| Baseline albumin   | Mean 4.3 g/dL (range 2.6–5.6)                                        |
| HeFH (%)           | 9%                                                                   |
| Diabetes (%)       | 11%                                                                  |
| Statin (any) (%)   | ~72%                                                                 |
| Ezetimibe (%)      | 12%                                                                  |
| Dose range         | 7–420 mg IV or SC across single- and multiple-dose regimens          |
| Phase 3 regimens   | 140 mg SC Q2W and 420 mg SC QM                                       |
| Reference patient  | 84 kg male, no lipid-lowering meds, baseline PCSK9 = 425 ng/mL       |

The population metadata is also available programmatically via
`readModelDb("Kuchimanchi_2018_evolocumab")$population`.

# Source trace

Every numeric value in the model file
`inst/modeldb/specificDrugs/Kuchimanchi_2018_evolocumab.R` is sourced from
Kuchimanchi 2018. Final estimates are the **updated phase 3 population PK
model** column in Table 3; V~max~ and k~m~ were fixed in that column from
the phase 1+2 run because phase 3 used only two dose regimens.

| Quantity                                   | Source location                         | Value used                                  |
|--------------------------------------------|-----------------------------------------|---------------------------------------------|
| Structural model (1-cmt, linear + MM)      | Methods § PopPK analysis / Figure 1a    | Depot → central, CL + V·V~max~·C/(k~m~+C)   |
| F (SC bioavailability)                     | Table 3                                 | 0.72 (FIXED)                                |
| k~a~                                       | Table 3                                 | 0.319 day^-1^ (FIXED)                       |
| CL                                         | Table 3                                 | 0.105 L/day                                 |
| V                                          | Table 3                                 | 5.18 L                                      |
| V~max~                                     | Table 3                                 | 9.85 nM/day (FIXED)                         |
| k~m~                                       | Table 3                                 | 27.3 nM (FIXED)                             |
| Reference body weight                      | Methods, reference-patient definition   | 84 kg (male)                                |
| WT exponent on CL                          | Table 3                                 | 0.276                                       |
| WT exponent on V                           | Table 3                                 | 1.04                                        |
| Female exponent on V                       | Table 3                                 | 1.11                                        |
| WT exponent on V~max~                      | Table 3                                 | 0.145                                       |
| Statin (monotherapy) exponent on V~max~    | Table 3                                 | 1.13                                        |
| Statin + ezetimibe exponent on V~max~      | Table 3                                 | 1.20                                        |
| Baseline PCSK9 exponent on V~max~          | Table 3                                 | 0.194                                       |
| Reference PCSK9                            | Methods, reference-patient definition   | 425 ng/mL (= 5.9 nM)                        |
| IIV on CL                                  | Table 3                                 | 54.3% CV                                    |
| IIV on V                                   | Table 3                                 | 28.3% CV                                    |
| IIV on V~max~                              | Table 3                                 | 31.1% CV                                    |
| IIV on k~a~                                | Table 3                                 | 74.6% CV (FIXED)                            |
| IIV on k~m~                                | Table 3                                 | 0% (FIXED)                                  |
| Full-block CL/V/V~max~ omega structure     | Table 3 note; Table 4 referenced but    | Correlations not published — diagonal used  |
|                                            | actually E-R parameters                 | (see Assumptions and deviations)            |
| Proportional residual error (PK)           | Table 3                                 | 0.282 (28.2% CV)                            |
| Additive residual error (PK)               | Table 3                                 | 5.41 nM (= 0.767 µg/mL at MW 141.8 kDa)     |
| Evolocumab molecular weight                | FDA-approved Repatha label              | 141 800 g/mol                               |
| Typical baseline LDL-C (E-R)               | Table 4                                 | 150 mg/dL                                   |
| E~max~ (max LDL-C reduction)               | Table 4                                 | -99.7 mg/dL                                 |
| EC~50~ at Q2W (E-R)                        | Table 4                                 | 51.5 (µg/mL)·day                            |
| Regimen multiplier `reg_qm` (QM/Q2W)       | Table 4 (REG)                           | 2.30                                        |
| Statin exponent on baseline LDL-C          | Table 4                                 | 0.797                                       |
| Ezetimibe exponent on baseline LDL-C       | Table 4                                 | 0.768                                       |
| HeFH exponent on baseline LDL-C            | Table 4                                 | 1.28                                        |
| Statin exponent on E~max~                  | Table 4                                 | 0.937                                       |
| IIV on baseline LDL-C                      | Table 4                                 | 20.0% CV                                    |
| Additive residual error (LDL-C)            | Table 4                                 | 19.3 mg/dL                                  |
| Proportional residual error (LDL-C)        | Table 4                                 | 0 (FIXED)                                   |
| AUC~wk8-12~ integration window             | Methods, paragraph defining E-R metric  | days 56-84 (week 8 to week 12)              |

PCSK9 MW (~72 kDa), used only to cross-check the paper's nM↔ng/mL
conversion (5.9 nM ≈ 425 ng/mL), is not a model parameter.

# Virtual cohort

The original patient-level data are not public. To replicate the paper's
reference-patient C~max~ we simulate a small typical-value cohort at the
two commercial regimens (140 mg SC Q2W and 420 mg SC QM) with the model's
random effects zeroed (`rxode2::zeroRe()`), i.e. a single "average" subject
per regimen matching the Methods-section reference definition (84 kg male,
no lipid-lowering medication, baseline PCSK9 = 425 ng/mL).

```{r cohort}
set.seed(20260424)

reference_covariates <- tibble::tibble(
  WT          = 84,
  SEXF        = 0L,
  CONMED_STATIN_MONO = 0L,
  CONMED_EZE         = 0L,
  PCSK9       = 425
)

make_regimen <- function(amt, ii, addl, label) {
  ev <- rxode2::et(amt = amt, cmt = "depot", ii = ii, addl = addl) |>
    rxode2::et(seq(0, 12 * 14, by = 0.5))
  df <- as.data.frame(ev)
  df$id          <- 1L
  df$WT          <- reference_covariates$WT
  df$SEXF        <- reference_covariates$SEXF
  df$CONMED_STATIN_MONO <- reference_covariates$CONMED_STATIN_MONO
  df$CONMED_EZE         <- reference_covariates$CONMED_EZE
  df$PCSK9       <- reference_covariates$PCSK9
  df$regimen     <- label
  df
}

events <- dplyr::bind_rows(
  make_regimen(amt = 140, ii = 14, addl = 11, label = "140 mg SC Q2W"),
  make_regimen(amt = 420, ii = 28, addl = 5,  label = "420 mg SC QM")  |>
    dplyr::mutate(id = 2L)
)
stopifnot(!anyDuplicated(unique(events[, c("id", "time", "evid")])))
```

# Simulation

```{r simulate}
mod <- readModelDb("Kuchimanchi_2018_evolocumab")
ui  <- rxode2::rxode(mod)

# Typical-value prediction: no between-subject variability and no residual error.
mod_typical <- rxode2::zeroRe(ui)
sim <- rxode2::rxSolve(mod_typical, events = events, keep = c("regimen"))
```

# Replicate published figures

```{r figure-4a, fig.cap = "Typical serum evolocumab concentration time-course after 140 mg SC Q2W and 420 mg SC QM (reference patient). Replicates the shape and range of Figure 4a/4c of Kuchimanchi 2018."}
ggplot(sim, aes(time, Cc, colour = regimen)) +
  geom_line(linewidth = 0.7) +
  labs(x = "Time (day)", y = "Serum evolocumab (µg/mL)",
       colour = "Regimen",
       title = "Typical serum evolocumab concentration-time profiles",
       caption = "Reference patient: 84 kg male, no lipid-lowering Rx, PCSK9 = 425 ng/mL.") +
  theme_minimal(base_size = 11)
```

```{r figure-4a-log, fig.cap = "Same simulation on a log scale, showing the dose-proportional scaling between Q2W and QM trough concentrations."}
ggplot(sim, aes(time, Cc, colour = regimen)) +
  geom_line(linewidth = 0.7) +
  scale_y_log10() +
  labs(x = "Time (day)", y = "Serum evolocumab (µg/mL, log)",
       colour = "Regimen") +
  theme_minimal(base_size = 11)
```

# PKNCA validation

Use PKNCA to compute steady-state AUC, C~max~, T~max~, C~min~, and C~avg~
over the last dosing interval of each regimen (days 154–168 for Q2W,
days 140–168 for QM). We keep observations between the final dose and
the end of simulation, one per regimen, so NCA runs on the steady-state
window.

```{r pknca}
tau_by_regimen <- c("140 mg SC Q2W" = 14, "420 mg SC QM" = 28)

sim_nca <- sim |>
  dplyr::filter(!is.na(Cc)) |>
  dplyr::mutate(
    tau       = tau_by_regimen[regimen],
    dose_last = 12 * 14 - tau
  ) |>
  dplyr::filter(time >= dose_last) |>
  dplyr::mutate(tad = time - dose_last) |>
  dplyr::select(id, time, tad, Cc, regimen)

dose_df <- events |>
  dplyr::filter(evid == 1) |>
  dplyr::group_by(id, regimen) |>
  dplyr::slice_tail(n = 1) |>     # final dose only
  dplyr::ungroup() |>
  dplyr::select(id, time, amt, regimen)

conc_obj <- PKNCA::PKNCAconc(
  sim_nca, Cc ~ time | regimen + id,
  concu = "ug/mL", timeu = "day"
)
dose_obj <- PKNCA::PKNCAdose(
  dose_df, amt ~ time | regimen + id,
  doseu = "mg"
)

intervals <- data.frame(
  start   = c(12 * 14 - 14, 12 * 14 - 28),
  end     = c(12 * 14,      12 * 14),
  cmax    = TRUE,
  tmax    = TRUE,
  cmin    = TRUE,
  auclast = TRUE,
  cav     = TRUE
)

nca_res <- PKNCA::pk.nca(
  PKNCA::PKNCAdata(conc_obj, dose_obj, intervals = intervals)
)
nca_tbl <- as.data.frame(nca_res$result) |>
  dplyr::select(regimen, PPTESTCD, PPORRES) |>
  tidyr::pivot_wider(names_from = PPTESTCD, values_from = PPORRES)
knitr::kable(nca_tbl,
             caption = "Steady-state NCA parameters from the simulated reference patient.")
```

## Comparison against published C~max~

Kuchimanchi 2018 Results, paragraph following Table 3, reports mean
observed unbound evolocumab C~max~ of **18.6 µg/mL** after 140 mg SC Q2W
and **59 µg/mL** after 420 mg SC QM. These values are population means
observed across the phase 1–3 dataset (i.e., they include
between-subject variability and covariate effects that differ from the
Methods-defined reference patient), so an exact match is not expected
for the typical-value simulation here; agreement within ~10% would be
a reasonable sanity check. The T~max~ of the SC profile is not reported
as a typical value in the paper; the simulated T~max~ is driven by the
fixed k~a~ = 0.319 day^-1^ and the regimen-specific dose accumulation.

```{r cmax-comparison}
cmax_obs <- tibble::tibble(
  regimen = c("140 mg SC Q2W", "420 mg SC QM"),
  cmax_paper_ugmL = c(18.6, 59)
)
cmax_sim <- sim |>
  dplyr::filter(time >= 12 * 14 - 28) |>  # within last QM interval window
  dplyr::group_by(regimen) |>
  dplyr::filter(time >= (12 * 14 - tau_by_regimen[regimen[1]])) |>
  dplyr::summarise(cmax_sim_ugmL = max(Cc), .groups = "drop")
cmax_cmp <- dplyr::left_join(cmax_obs, cmax_sim, by = "regimen") |>
  dplyr::mutate(pct_diff = round(100 * (cmax_sim_ugmL - cmax_paper_ugmL)
                                  / cmax_paper_ugmL, 1))
knitr::kable(cmax_cmp,
  caption = "Simulated (typical-value) steady-state C~max~ vs published mean observed C~max~.")
```

# Exposure-response model (LDL-C)

The joint PK + LDL-C model lives in the second model file,
`Kuchimanchi_2018_evolocumab_ldlc`. It carries the same one-compartment PK
structure as the popPK-only file plus an extra rxode2 state, `auc_wk8_12`,
that integrates the simulated central-compartment concentration over the
window from day 56 (start of week 8) to day 84 (end of week 12). At
`t = 84`, `auc_wk8_12` equals the predictor AUC~wk8-12~ used by the paper's
E~max~ equation:

$$
\mathrm{LDLC}\;=\;\mathrm{rbase\_cov}\;+\;\mathrm{emax\_cov}\,\frac{\mathrm{auc\_wk8\_12}}{\mathrm{ec50\_cov}\,+\,\mathrm{auc\_wk8\_12}}
$$

where `rbase_cov`, `emax_cov`, and `ec50_cov` carry the covariate effects
listed in Table 4: statin / ezetimibe / HeFH on `rbase`, statin on `emax`,
and the regimen multiplier `reg_qm` on `ec50` exponentiated by `REGI_QM`.
Because the AUC window only finishes accumulating at `t = 84`, the LDLC
observable is meaningful only at observation times at or after day 84.

## Reference-patient simulation

We simulate the joint model out to day 168 (24 weeks) for the two
commercial regimens, with REGI_QM toggled to match each arm. The reference
patient is again the Methods-section definition (84 kg male, no
lipid-lowering medication, non-HeFH, baseline PCSK9 = 425 ng/mL).

```{r ldlc-simulate}
mod_ldlc <- readModelDb("Kuchimanchi_2018_evolocumab_ldlc")
ui_ldlc  <- rxode2::rxode(mod_ldlc)
mod_ldlc_typical <- rxode2::zeroRe(ui_ldlc)

# Build a multi-output event table: PK observations carry dvid = 1L and PD
# (LDLC) observations carry dvid = 2L. We observe Cc daily across the full
# 24-week window and LDLC at day 84 only (the "mean of weeks 10 and 12"
# surrogate time point used by the paper's E-R model). The dvid mapping
# follows the order of the two `~` residual lines in the model file (Cc
# first, LDLC second).
make_ldlc_regimen <- function(amt, ii, addl, regi_qm, label) {
  dose <- rxode2::et(amt = amt, cmt = "depot", ii = ii, addl = addl)
  dose_df <- as.data.frame(dose)
  dose_df$dvid <- NA_integer_

  obs_cc <- data.frame(
    time = seq(0, 24 * 7, by = 1), amt = NA_real_, evid = 0L,
    cmt = NA_character_, dvid = 1L
  )
  obs_ldlc <- data.frame(
    time = 84, amt = NA_real_, evid = 0L,
    cmt = NA_character_, dvid = 2L
  )

  ev_df <- dplyr::bind_rows(dose_df[, intersect(names(dose_df),
                                                c("time","amt","evid","cmt","ii","addl","dvid"))],
                            obs_cc, obs_ldlc) |>
    dplyr::arrange(time, dplyr::desc(evid))
  ev_df$id          <- 1L
  ev_df$WT          <- 84
  ev_df$SEXF        <- 0L
  ev_df$CONMED_STATIN_MONO <- 0L
  ev_df$CONMED_EZE         <- 0L
  ev_df$PCSK9       <- 425
  ev_df$DIS_HEFH    <- 0L
  ev_df$REGI_QM     <- regi_qm
  ev_df$regimen     <- label
  ev_df
}

events_ldlc <- dplyr::bind_rows(
  make_ldlc_regimen(amt = 140, ii = 14, addl = 11, regi_qm = 0L,
                    label = "140 mg SC Q2W"),
  make_ldlc_regimen(amt = 420, ii = 28, addl = 5,  regi_qm = 1L,
                    label = "420 mg SC QM") |>
    dplyr::mutate(id = 2L)
)

sim_ldlc <- rxode2::rxSolve(mod_ldlc_typical, events = events_ldlc,
                            keep = c("regimen"))
```

## AUC accumulation and LDL-C time course

```{r ldlc-figures, fig.cap = "AUC accumulation inside the week-8-12 window (top) and the resulting LDLC algebraic observable (bottom). The LDLC trace is meaningful only at t >= 84 (vertical grey line); before then, the AUC window is still accumulating and the algebraic value is not the paper's predicted response."}
auc_panel <- ggplot(sim_ldlc, aes(time, auc_wk8_12, colour = regimen)) +
  geom_line(linewidth = 0.7) +
  geom_vline(xintercept = c(56, 84), linetype = "dashed", colour = "grey50") +
  labs(x = NULL, y = "auc_wk8_12 ((mu g/mL)*day)", colour = "Regimen",
       title = "AUC integrator over the wk 8-12 window") +
  theme_minimal(base_size = 11)

ldlc_panel <- ggplot(sim_ldlc, aes(time, LDLC, colour = regimen)) +
  geom_line(linewidth = 0.7) +
  geom_vline(xintercept = 84, linetype = "dashed", colour = "grey50") +
  labs(x = "Time (day)", y = "Modelled LDL-C (mg/dL)", colour = "Regimen",
       title = "LDLC algebraic observable",
       caption = "Reference patient (84 kg male, no lipid-lowering Rx, non-HeFH).") +
  theme_minimal(base_size = 11)

print(auc_panel)
print(ldlc_panel)
```

## Comparison against the paper's predicted maximal response

The paper reports that the model-predicted maximal LDL-C reduction at the
mean of weeks 10 and 12 is 99.7 mg/dL from a typical baseline of 150 mg/dL
(approximately a 66% reduction), achieved as the AUC predictor approaches
infinity. At the two commercial regimens, the paper's reference-patient
prediction is approximately 80% of the maximal reduction. The next chunk
extracts the modelled `LDLC` at day 84 (the canonical "mean of weeks 10
and 12" time point in the model) and compares against this expectation.

```{r ldlc-comparison}
sim_day84 <- sim_ldlc |>
  dplyr::filter(time == 84) |>
  dplyr::select(regimen, auc_wk8_12, LDLC)

ldlc_cmp <- sim_day84 |>
  dplyr::mutate(
    baseline_ldlc_mgdL   = 150,
    pct_reduction        = round(100 * (baseline_ldlc_mgdL - LDLC) / baseline_ldlc_mgdL, 1),
    pct_of_maximal       = round(100 * (baseline_ldlc_mgdL - LDLC) / 99.7,  1)
  )

knitr::kable(ldlc_cmp,
  caption = "Modelled LDL-C at day 84 (mean week-10-12 surrogate) and percentage of the published maximal reduction (99.7 mg/dL).")
```

Both regimens should land near the paper's 80%-of-maximal target, with the
QM arm sitting slightly farther from the asymptote than the Q2W arm because
of the regimen multiplier on EC~50~ (`reg_qm = 2.30`).

# Assumptions and deviations

- **IIV block matrix approximated as diagonal.** Kuchimanchi 2018 states
  that CL, V, and V~max~ share a full-block variance matrix and refers
  the reader to "Table 4" for the inter-parameter correlations. However,
  the paper's Table 4 is the exposure-response model parameter table and
  does not list the population-PK omega-block correlations; the
  correlations are not published anywhere in the article or supplement.
  Both model files therefore encode independent diagonal IIV on CL, V,
  and V~max~. This understates the individual-level covariance structure
  relative to the published fit (in particular the high CL-V~max~
  correlation that the paper calls out as influencing body-weight
  covariate-effect precision) but has no effect on typical-value
  (`rxode2::zeroRe()`) simulation or on population-level summaries.
- **Exposure-response model represented as a coupled rxode2 simulator.**
  Kuchimanchi 2018 fit the E~max~ relationship as a cross-sectional
  algebraic model with individual-predicted AUC~wk8-12~ from the popPK
  fit as the predictor. The packaged `Kuchimanchi_2018_evolocumab_ldlc`
  rebuilds the same algebraic relationship inside an rxode2 model by
  carrying an extra `auc_wk8_12` state that integrates Cc only in the
  56-84-day window. The numerical LDLC value at `t = 84` matches what
  the paper's equation produces for a given AUC~wk8-12~, but the
  intermediate values for `t < 84` are not interpretable as the paper's
  E-R prediction.
- **Molecular weight** used to convert between the paper's target-unit
  scale (nM) and the model's concentration scale (µg/mL) is 141 800 g/mol
  (evolocumab, FDA-approved Repatha label). The paper does not state the
  molecular weight explicitly; the same value reproduces the paper's
  5.9 nM ≈ 425 ng/mL reference-PCSK9 relationship within rounding when
  the PCSK9 molecular weight (~72 kDa) is applied to PCSK9.
- **Reference patient characteristics** used in the virtual cohort are
  the Methods-section reference definition: 84 kg male, not on
  lipid-lowering medication, baseline PCSK9 = 425 ng/mL. Body weight
  distribution and PCSK9 distribution in the broader trial population
  (which shifts observed mean C~max~ slightly relative to the reference
  patient) are not reproduced in this typical-value simulation.
- **Time-fixed covariates.** All covariates in the PK-only model
  (`WT`, `SEXF`, `CONMED_STATIN_MONO`, `CONMED_EZE`, `PCSK9`) and the
  joint PK + LDL-C model (the same five plus `DIS_HEFH` and `REGI_QM`)
  are treated as baseline time-fixed. Kuchimanchi 2018's dataset used
  baseline values for these covariates; concomitant-medication status
  was required to be stable (>4 weeks of administration before study
  day 1) in the exposure-response analysis, though the popPK analysis
  used any duration of administration.
- **`REGI_QM` is a per-subject covariate, not a derived quantity.** The
  joint PK + LDL-C model carries the canonical covariate `REGI_QM` (1 = QM
  dosing, 0 = Q2W) as a per-subject input. The model does not infer the
  regimen from the dosing-interval column; users must set REGI_QM
  explicitly to match the regimen they are simulating. Mismatched values
  (e.g., REGI_QM = 1 with a 14-day dosing interval) produce a valid
  simulation but do not correspond to the paper's E-R fit.
- **`auc_wk8_12` window discipline.** The LDLC algebraic observable is
  only meaningful at `t >= 84` (end of the AUC integration window).
  Observation events placed before day 84 will produce LDLC values that
  reflect an only-partially-accumulated AUC and do not correspond to the
  paper's E-R prediction. For population summaries the canonical
  observation time is day 84 ("mean of weeks 10 and 12" surrogate, per
  Methods).
