Ceftazidime-avibactam in children (Franzese 2022)
Source:vignettes/articles/Franzese_2022_ceftazidime_avibactam.Rmd
Franzese_2022_ceftazidime_avibactam.RmdModel and source
Franzese 2022 extended the adult ceftazidime-avibactam population PK
models of Li 2019 (see
vignette("Li_2019_ceftazidime_avibactam") on the package
site) to children aged 3 months to < 18 years by adding PK data from
one single-dose phase I study and two multiple-dose phase II studies
(complicated intra-abdominal infection, cIAI, and complicated urinary
tract infection, cUTI). As in Li 2019, the two analytes were modelled
separately – two NONMEM control streams, two data sets (9,628
observations from 2,130 subjects for ceftazidime, 14,223 from 2,403 for
avibactam) and two parameter tables – so the extraction is two model
files sharing this vignette.
uiCaz <- rxode2::rxode(readModelDb("Franzese_2022_ceftazidime"))
#> ℹ parameter labels from comments will be replaced by 'label()'
uiAvi <- rxode2::rxode(readModelDb("Franzese_2022_avibactam"))
#> ℹ parameter labels from comments will be replaced by 'label()'Both are two-compartment models with first-order elimination after IV infusion. The pediatric adaptations shared by both analytes are body-weight scaling of all four disposition parameters, BSA-normalized creatinine clearance (NCrCL; bedside Schwartz in children, Cockcroft-Gault x 1.73 / BSA in adults) for subjects older than 2 years, and a Rhodin renal-maturation function of postmenstrual age that replaces NCrCL at 2 years and younger. The ceftazidime weight effect on clearance is a normalized Emax function rather than a power law.
Sources: the main text (Tables 1-4), the supplementary material (CPT-111-635-s001: both final NONMEM control streams, the derivation of the ceftazidime weight function, Tables S1-S3), and the 2024 erratum (doi:10.1002/cpt.3143), which corrects the Table 2 column headings – in the original the ceftazidime and avibactam headings were transposed. No parameter value is affected by the erratum.
Population
| Characteristic | Phase I (any infection) | Phase II cIAI | Phase II cUTI | Overall |
|---|---|---|---|---|
| N | 32 | 58 | 63 | 153 |
| Female, n (%) | 17 (53.1) | 16 (27.6) | 52 (82.5) | 85 (55.6) |
| Age, years, median (range) | 5.7 (0.33-17.3) | 10.5 (3.00-17.0) | 3.8 (0.25-17.7) | 7.57 (0.25-17.7) |
| Weight, kg, median (range) | 20.6 (5.4-60.5) | 37.9 (15.4-80.0) | 15.3 (4.1-71.0) | 25.0 (4.1-80.0) |
| NCrCL, mL/min/1.73 m^2, median (range) | 130 (85.5-489) | 107 (59-271) | 89 (43-158) | 104 (43-489) |
| Chinese, n (%) | 0 | 6 (10.3) | 12 (19.0) | 18 (11.8) |
The 153 children were added to the adult data sets of Li 2019 (adults with cIAI, cUTI or nosocomial pneumonia including ventilator-associated pneumonia, subjects with renal impairment, and healthy volunteers). No child with HAP/VAP was studied, and no child younger than 2 years was enrolled in the cIAI trial. Pediatric doses (2-hour infusions, Table S1) were 50-12.5 mg/kg q8h (maximum 2,000-500 mg) for children 6 months and older and 40-10 mg/kg q8h for 3 to < 6 months, halved for CrCL 30 to < 50 mL/min.
Source trace
| Quantity | Analyte | Value | Source |
|---|---|---|---|
| CL, Vc, Q, Vp | Ceftazidime | 7.75 L/h, 11.2 L, 5.33 L/h, 6.52 L | Table S2 theta1-theta4 |
| NCrCL slopes on CL (hinge 100, cap 150) | Ceftazidime | 0.0103036 / 0.00125182 | Table S2 ‘Slope 1’ / ‘Slope 2’; control stream SLOPE1, SLOPE2, NCLCR cap |
| Emax weight effect on CL | Ceftazidime | WT50 = 53.5 kg, Hill 1, intercept 0 | Table S2 theta14, theta15; Supplementary Methods derivation; control stream TH13 |
| Weight exponents Q / Vc / Vp | Ceftazidime | 0.67 / 1 / 1 | Results ‘Ceftazidime’; control stream TH12, TH5 |
| cIAI and HAP/VAP on CL (bare multipliers) | Ceftazidime | 1.33 / 1.10 | Table S2 theta16, theta17 |
| cUTI and cIAI-or-HAP/VAP on Vc (bare multipliers) | Ceftazidime | 1.49 / 1.83 | Table S2 theta20, theta21 |
| Ventilator on Vc; Asian race on CL and Vc | Ceftazidime | +0.202; -0.136 (ASN), -0.0844 (CHN); -0.135 (Vc) | Table S2 theta22, theta18, theta19, theta23 |
| IIV variances CL, Vc, Q, Vp | Ceftazidime | 0.154, 0.108, 0.203, 0.0236 | Table S2 eta rows; control stream $OMEGA |
| Residual SDs phase I / phase II-III | Ceftazidime | 0.172 + 125 ng/mL / 0.374 + 2,560 ng/mL | Table S2 theta8-theta11 |
| CL, Vc, Vp, Q | Avibactam | 10.7 L/h, 11.5 L, 7.56 L, 6.94 L/h | Table S3 theta1-theta4 |
| ESRD factor; dialysis CL | Avibactam | 0.0674; 21.1 L/h | Table S3 theta5, theta6 |
| NCrCL power below 80 / slope at or above 80 (cap 150) | Avibactam | 0.986 / 0.00344 | Table S3 theta7, theta8; control stream CLCLCR |
| Weight exponents CL, Q / Vc, Vp | Avibactam | 0.67 / 1 | Results ‘Avibactam’; control stream TH30, TH14 |
| Adult phase II cIAI on Vc and CL | Avibactam | +2.17 / +0.431 | Table S3 theta9, theta10 |
| cUTI on Vc; phase III cIAI, HAP/VAP, pediatric cIAI on Vc | Avibactam | +0.412; +0.214 | Table S3 theta11, theta12; control stream V1POP |
| APACHE II on CL; ventilator on Vc | Avibactam | -0.192; +0.267 | Table S3 theta15, theta28 |
| IIV 4x4 block CL, Vc, Vp, Q | Avibactam | variances 0.3453, 1.139, 1.156, 5.487 | Table S3 eta rows |
| Residual SDs phase I / II / III | Avibactam | 0.174 + 43.8 ng/mL / 0.498 / 0.364 | Table S3 theta17-theta20 |
| Renal maturation (AGE <= 2 y) | Both | TM50 47.7 weeks, Hill 3.4 | Methods ‘Model development’; control streams |
| Unbound fractions | Both | 0.85 ceftazidime, 0.92 avibactam | Methods ‘Simulations and PK/PD targets’ |
Covariate-effect reproduction
Each model is solved for one typical subject (no IIV) at a reference
covariate setting and at a perturbed one; the ratio of the
cl or vc the model computes is compared with
the value implied by the source. This has no Monte Carlo component and
is asserted tightly.
baseCov <- data.frame(
AGE = 30, PAGE = 30 * 52.18 + 40, WT = 70, CRCL = 80,
DIS_CIAI = 0, DIS_CUTI = 0, DIS_HABP = 0, DIS_VABP = 0, MECH_VENT = 0,
RACE_ASIAN_OTH = 0, RACE_CHINESE = 0, RACE_JAPANESE = 0,
APACHE_II_SEV = 0, RENALIMP_ESRD = 0, RRT_HEMODIAL_STATUS = 0,
STUDY_CIAI_PH2 = 0, STUDY_CAZAVI_PHASE2 = 0, STUDY_CAZAVI_PHASE3 = 1,
STUDY_CAZAVI_PED_PHASE2 = 0
)
typicalParams <- function(ui, ...) {
cov <- baseCov
ch <- list(...)
for (nm in names(ch)) cov[[nm]] <- ch[[nm]]
cov <- cov[, intersect(names(cov), ui$all.covs), drop = FALSE]
ev <- data.frame(
id = 1L, time = c(0, 1), amt = c(1000, 0), evid = c(1L, 0L),
dur = c(2, 0), cmt = "central"
)
ev <- cbind(ev, cov[rep(1L, 2L), , drop = FALSE])
s <- rxode2::rxSolve(rxode2::zeroRe(ui), ev, returnType = "data.frame")
c(cl = s$cl[1], vc = s$vc[1], q = s$q[1], vp = s$vp[1])
}
crefCaz <- 1 / 0.0103036 # CRCL where the ceftazidime spline equals 1
refCaz <- typicalParams(uiCaz, CRCL = crefCaz)
#> Warning: No sigma parameters in the model
#> ℹ omega/sigma items treated as zero: 'etalcl', 'etalvc', 'etalq', 'etalvp'
refAvi <- typicalParams(uiAvi)
#> Warning: No sigma parameters in the model
#> ℹ omega/sigma items treated as zero: 'etalcl', 'etalvc', 'etalvp', 'etalq'
emaxWt <- function(wt) wt / (53.5 + wt) * (53.5 + 70) / 70
checks <- tribble(
~Check, ~Analyte, ~Model, ~Expected,
"CL at reference (L/h)", "Ceftazidime", unname(refCaz["cl"]), 7.75,
"CL, CRCL 300 / CRCL 150 (cap)", "Ceftazidime",
unname(typicalParams(uiCaz, CRCL = 300)["cl"] / typicalParams(uiCaz, CRCL = 150)["cl"]), 1,
"CL, CRCL 150 / reference", "Ceftazidime",
unname(typicalParams(uiCaz, CRCL = 150)["cl"] / refCaz["cl"]), 0.0103036 * 100 + 0.00125182 * 50,
"CL, WT 53.5 / 70 kg (Emax at WT50)", "Ceftazidime",
unname(typicalParams(uiCaz, CRCL = crefCaz, WT = 53.5)["cl"] / refCaz["cl"]), 0.5 * (1 + 53.5 / 70),
"CL, WT 15 / 70 kg", "Ceftazidime",
unname(typicalParams(uiCaz, CRCL = crefCaz, WT = 15)["cl"] / refCaz["cl"]), emaxWt(15),
"CL, AGE 1 y at PMA 47.7 wk / reference", "Ceftazidime",
unname(typicalParams(uiCaz, CRCL = crefCaz, AGE = 1, PAGE = 47.7)["cl"] / refCaz["cl"]), 0.5,
"Q, WT 35 / 70 kg", "Ceftazidime",
unname(typicalParams(uiCaz, CRCL = crefCaz, WT = 35)["q"] / refCaz["q"]), 0.5^0.67,
"CL, cIAI", "Ceftazidime", unname(typicalParams(uiCaz, CRCL = crefCaz, DIS_CIAI = 1)["cl"] / refCaz["cl"]), 1.33,
"CL, HAP", "Ceftazidime", unname(typicalParams(uiCaz, CRCL = crefCaz, DIS_HABP = 1)["cl"] / refCaz["cl"]), 1.1,
"Vc, cUTI", "Ceftazidime", unname(typicalParams(uiCaz, CRCL = crefCaz, DIS_CUTI = 1)["vc"] / refCaz["vc"]), 1.49,
"Vc, VAP + ventilator", "Ceftazidime",
unname(typicalParams(uiCaz, CRCL = crefCaz, DIS_VABP = 1, MECH_VENT = 1)["vc"] / refCaz["vc"]), 1.83 * 1.202,
"CL, Chinese", "Ceftazidime", unname(typicalParams(uiCaz, CRCL = crefCaz, RACE_CHINESE = 1)["cl"] / refCaz["cl"]), 1 - 0.0844,
"CL, Japanese", "Ceftazidime", unname(typicalParams(uiCaz, CRCL = crefCaz, RACE_JAPANESE = 1)["cl"] / refCaz["cl"]), 1,
"Vc, Japanese", "Ceftazidime", unname(typicalParams(uiCaz, CRCL = crefCaz, RACE_JAPANESE = 1)["vc"] / refCaz["vc"]), 1 - 0.135,
"CL at reference (L/h)", "Avibactam", unname(refAvi["cl"]), 10.7,
"CL, CRCL 150 / 80", "Avibactam", unname(typicalParams(uiAvi, CRCL = 150)["cl"] / refAvi["cl"]), 1 + 0.00344 * 70,
"CL, CRCL 250 / 80 (cap)", "Avibactam", unname(typicalParams(uiAvi, CRCL = 250)["cl"] / refAvi["cl"]), 1 + 0.00344 * 70,
"CL, CRCL 40 / 80", "Avibactam", unname(typicalParams(uiAvi, CRCL = 40)["cl"] / refAvi["cl"]), 0.5^0.986,
"CL, ESRD (any CRCL)", "Avibactam", unname(typicalParams(uiAvi, CRCL = 5, RENALIMP_ESRD = 1)["cl"] / refAvi["cl"]), 0.0674,
"CL, ESRD on hemodialysis (L/h)", "Avibactam",
unname(typicalParams(uiAvi, CRCL = 5, RENALIMP_ESRD = 1, RRT_HEMODIAL_STATUS = 1)["cl"]), 21.1,
"CL, WT 35 / 70 kg", "Avibactam", unname(typicalParams(uiAvi, WT = 35)["cl"] / refAvi["cl"]), 0.5^0.67,
"Vp, WT 35 / 70 kg", "Avibactam", unname(typicalParams(uiAvi, WT = 35)["vp"] / refAvi["vp"]), 0.5,
"CL, AGE 1 y at PMA 47.7 wk", "Avibactam",
unname(typicalParams(uiAvi, AGE = 1, PAGE = 47.7, CRCL = 150)["cl"] / refAvi["cl"]), 0.5,
"CL, APACHE II elevated", "Avibactam", unname(typicalParams(uiAvi, APACHE_II_SEV = 1)["cl"] / refAvi["cl"]), 1 - 0.192,
"CL, adult phase II cIAI study", "Avibactam",
unname(typicalParams(uiAvi, DIS_CIAI = 1, STUDY_CIAI_PH2 = 1)["cl"] / refAvi["cl"]), 1.431,
"Vc, adult phase II cIAI study", "Avibactam",
unname(typicalParams(uiAvi, DIS_CIAI = 1, STUDY_CIAI_PH2 = 1)["vc"] / refAvi["vc"]), 1 + 2.17,
"Vc, phase III or pediatric cIAI", "Avibactam", unname(typicalParams(uiAvi, DIS_CIAI = 1)["vc"] / refAvi["vc"]), 1.214,
"Vc, cUTI", "Avibactam", unname(typicalParams(uiAvi, DIS_CUTI = 1)["vc"] / refAvi["vc"]), 1.412,
"Vc, HAP + ventilator", "Avibactam",
unname(typicalParams(uiAvi, DIS_HABP = 1, MECH_VENT = 1)["vc"] / refAvi["vc"]), 1.214 * 1.267
) |>
mutate(`Rel. diff` = Model / Expected - 1)
#> Warning: No sigma parameters in the model
#> ℹ omega/sigma items treated as zero: 'etalcl', 'etalvc', 'etalq', 'etalvp'
#> Warning: No sigma parameters in the model
#> ℹ omega/sigma items treated as zero: 'etalcl', 'etalvc', 'etalq', 'etalvp'
#> Warning: No sigma parameters in the model
#> ℹ omega/sigma items treated as zero: 'etalcl', 'etalvc', 'etalq', 'etalvp'
#> Warning: No sigma parameters in the model
#> ℹ omega/sigma items treated as zero: 'etalcl', 'etalvc', 'etalq', 'etalvp'
#> Warning: No sigma parameters in the model
#> ℹ omega/sigma items treated as zero: 'etalcl', 'etalvc', 'etalq', 'etalvp'
#> Warning: No sigma parameters in the model
#> ℹ omega/sigma items treated as zero: 'etalcl', 'etalvc', 'etalq', 'etalvp'
#> Warning: No sigma parameters in the model
#> ℹ omega/sigma items treated as zero: 'etalcl', 'etalvc', 'etalq', 'etalvp'
#> Warning: No sigma parameters in the model
#> ℹ omega/sigma items treated as zero: 'etalcl', 'etalvc', 'etalq', 'etalvp'
#> Warning: No sigma parameters in the model
#> ℹ omega/sigma items treated as zero: 'etalcl', 'etalvc', 'etalq', 'etalvp'
#> Warning: No sigma parameters in the model
#> ℹ omega/sigma items treated as zero: 'etalcl', 'etalvc', 'etalq', 'etalvp'
#> Warning: No sigma parameters in the model
#> ℹ omega/sigma items treated as zero: 'etalcl', 'etalvc', 'etalq', 'etalvp'
#> Warning: No sigma parameters in the model
#> ℹ omega/sigma items treated as zero: 'etalcl', 'etalvc', 'etalq', 'etalvp'
#> Warning: No sigma parameters in the model
#> ℹ omega/sigma items treated as zero: 'etalcl', 'etalvc', 'etalq', 'etalvp'
#> Warning: No sigma parameters in the model
#> ℹ omega/sigma items treated as zero: 'etalcl', 'etalvc', 'etalq', 'etalvp'
#> Warning: No sigma parameters in the model
#> ℹ omega/sigma items treated as zero: 'etalcl', 'etalvc', 'etalvp', 'etalq'
#> Warning: No sigma parameters in the model
#> ℹ omega/sigma items treated as zero: 'etalcl', 'etalvc', 'etalvp', 'etalq'
#> Warning: No sigma parameters in the model
#> ℹ omega/sigma items treated as zero: 'etalcl', 'etalvc', 'etalvp', 'etalq'
#> Warning: No sigma parameters in the model
#> ℹ omega/sigma items treated as zero: 'etalcl', 'etalvc', 'etalvp', 'etalq'
#> Warning: No sigma parameters in the model
#> ℹ omega/sigma items treated as zero: 'etalcl', 'etalvc', 'etalvp', 'etalq'
#> Warning: No sigma parameters in the model
#> ℹ omega/sigma items treated as zero: 'etalcl', 'etalvc', 'etalvp', 'etalq'
#> Warning: No sigma parameters in the model
#> ℹ omega/sigma items treated as zero: 'etalcl', 'etalvc', 'etalvp', 'etalq'
#> Warning: No sigma parameters in the model
#> ℹ omega/sigma items treated as zero: 'etalcl', 'etalvc', 'etalvp', 'etalq'
#> Warning: No sigma parameters in the model
#> ℹ omega/sigma items treated as zero: 'etalcl', 'etalvc', 'etalvp', 'etalq'
#> Warning: No sigma parameters in the model
#> ℹ omega/sigma items treated as zero: 'etalcl', 'etalvc', 'etalvp', 'etalq'
#> Warning: No sigma parameters in the model
#> ℹ omega/sigma items treated as zero: 'etalcl', 'etalvc', 'etalvp', 'etalq'
#> Warning: No sigma parameters in the model
#> ℹ omega/sigma items treated as zero: 'etalcl', 'etalvc', 'etalvp', 'etalq'
#> Warning: No sigma parameters in the model
#> ℹ omega/sigma items treated as zero: 'etalcl', 'etalvc', 'etalvp', 'etalq'
#> Warning: No sigma parameters in the model
#> ℹ omega/sigma items treated as zero: 'etalcl', 'etalvc', 'etalvp', 'etalq'
checks |>
mutate(across(c(Model, Expected), \(x) signif(x, 5)), `Rel. diff` = signif(`Rel. diff`, 2)) |>
knitr::kable(caption = "Typical-value covariate effects computed by the models against the source values.")| Check | Analyte | Model | Expected | Rel. diff |
|---|---|---|---|---|
| CL at reference (L/h) | Ceftazidime | 7.75000 | 7.75000 | 0 |
| CL, CRCL 300 / CRCL 150 (cap) | Ceftazidime | 1.00000 | 1.00000 | 0 |
| CL, CRCL 150 / reference | Ceftazidime | 1.09300 | 1.09300 | 0 |
| CL, WT 53.5 / 70 kg (Emax at WT50) | Ceftazidime | 0.88214 | 0.88214 | 0 |
| CL, WT 15 / 70 kg | Ceftazidime | 0.38634 | 0.38634 | 0 |
| CL, AGE 1 y at PMA 47.7 wk / reference | Ceftazidime | 0.50000 | 0.50000 | 0 |
| Q, WT 35 / 70 kg | Ceftazidime | 0.62851 | 0.62851 | 0 |
| CL, cIAI | Ceftazidime | 1.33000 | 1.33000 | 0 |
| CL, HAP | Ceftazidime | 1.10000 | 1.10000 | 0 |
| Vc, cUTI | Ceftazidime | 1.49000 | 1.49000 | 0 |
| Vc, VAP + ventilator | Ceftazidime | 2.19970 | 2.19970 | 0 |
| CL, Chinese | Ceftazidime | 0.91560 | 0.91560 | 0 |
| CL, Japanese | Ceftazidime | 1.00000 | 1.00000 | 0 |
| Vc, Japanese | Ceftazidime | 0.86500 | 0.86500 | 0 |
| CL at reference (L/h) | Avibactam | 10.70000 | 10.70000 | 0 |
| CL, CRCL 150 / 80 | Avibactam | 1.24080 | 1.24080 | 0 |
| CL, CRCL 250 / 80 (cap) | Avibactam | 1.24080 | 1.24080 | 0 |
| CL, CRCL 40 / 80 | Avibactam | 0.50488 | 0.50488 | 0 |
| CL, ESRD (any CRCL) | Avibactam | 0.06740 | 0.06740 | 0 |
| CL, ESRD on hemodialysis (L/h) | Avibactam | 21.10000 | 21.10000 | 0 |
| CL, WT 35 / 70 kg | Avibactam | 0.62851 | 0.62851 | 0 |
| Vp, WT 35 / 70 kg | Avibactam | 0.50000 | 0.50000 | 0 |
| CL, AGE 1 y at PMA 47.7 wk | Avibactam | 0.50000 | 0.50000 | 0 |
| CL, APACHE II elevated | Avibactam | 0.80800 | 0.80800 | 0 |
| CL, adult phase II cIAI study | Avibactam | 1.43100 | 1.43100 | 0 |
| Vc, adult phase II cIAI study | Avibactam | 3.17000 | 3.17000 | 0 |
| Vc, phase III or pediatric cIAI | Avibactam | 1.21400 | 1.21400 | 0 |
| Vc, cUTI | Avibactam | 1.41200 | 1.41200 | 0 |
| Vc, HAP + ventilator | Avibactam | 1.53810 | 1.53810 | 0 |
Virtual cohort
Franzese 2022 simulated 1,000 patients per indication, age group and dose group, bootstrapping weight, age and NCrCL from a Pfizer database of 457 children with infections (older than 2 years) and taking weight from CDC growth charts (2 years and younger), with between-subject variability resampled from the post hoc random effects of the fitted subjects. None of that subject-level material is published, so the cohort below is a reconstruction (see Assumptions and deviations). Each arm has 100 subjects.
# set.seed() seeds R's RNG, not rxode2's; rxode2 streams are partitioned per
# solver thread, so a CI runner draws a different cohort than a workstation.
# Every assertion below is written to hold for any cohort the model produces.
set.seed(20220301)
rxode2::rxSetSeed(20220301)
N_ARM <- 100L
# Approximate median weight-for-age (kg), sexes pooled (growth-chart medians).
wfa <- data.frame(
age = c(0.25, 0.5, 0.75, 1, 1.5, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18),
wt = c(6.0, 7.6, 8.9, 9.8, 11.0, 12.3, 14.3, 16.3, 18.4, 20.7, 23.0, 25.6, 28.6, 32.0, 36.0, 40.5, 45.5, 50.5, 55.0, 58.5, 61.0, 63.0)
)
ageGroups <- tribble(
~grp, ~lo, ~hi, ~mgkg,
"12 to <18 years", 12, 18, 50,
"6 to <12 years", 6, 12, 50,
"2 to <6 years", 2, 6, 50,
"1 to <2 years", 1, 2, 50,
"6 to <12 months", 0.5, 1, 50,
"3 to <6 months", 0.25, 0.5, 40,
"Adults", 18, 80, NA
)
# Adult CrCL bands >= 80 mL/min from Li 2019 Table 3 (bottom block).
adultCrcl <- data.frame(lo = c(80, 150, 180), hi = c(150, 180, 610), n = c(955, 123, 116))
drawCrcl <- function(n, adult, renal) {
if (renal == "Mild") {
return(runif(n, 51, 80))
}
if (adult) {
b <- sample(seq_len(nrow(adultCrcl)), n, replace = TRUE, prob = adultCrcl$n)
return(runif(n, adultCrcl$lo[b], adultCrcl$hi[b]))
}
x <- rlnorm(n, log(125), 0.25)
while (any(x < 80)) {
low <- x < 80
x[low] <- rlnorm(sum(low), log(125), 0.25)
}
x
}
makeArm <- function(grp, ind, renal, idOffset) {
g <- ageGroups[ageGroups$grp == grp, ]
adult <- grp == "Adults"
age <- runif(N_ARM, g$lo, g$hi)
wt <- if (adult) {
pmin(pmax(rlnorm(N_ARM, log(70), 0.23), 40), 150)
} else {
approx(wfa$age, wfa$wt, age)$y * exp(rnorm(N_ARM, 0, ifelse(age < 2, 0.12, 0.18)))
}
race <- if (adult) {
sample(c("other", "ASN", "CHN", "JPN"), N_ARM, replace = TRUE, prob = c(1209, 248, 262, 45))
} else {
sample(c("other", "ASN", "CHN"), N_ARM, replace = TRUE, prob = c(86.9, 1.3, 11.8))
}
vap <- if (ind == "HAP/VAP") rbinom(N_ARM, 1L, 138 / 413) else rep(0L, N_ARM)
apache <- if (adult && ind != "cUTI") rbinom(N_ARM, 1L, 438 / 1115) else rep(0L, N_ARM)
amtCaz <- if (adult) rep(2000, N_ARM) else pmin(g$mgkg * wt, 2000)
data.frame(
id = idOffset + seq_len(N_ARM), grp = grp, ind = ind, renal = renal,
AGE = age, PAGE = age * 52.18 + 40, WT = wt, CRCL = drawCrcl(N_ARM, adult, renal),
DIS_CIAI = as.integer(ind == "cIAI"), DIS_CUTI = as.integer(ind == "cUTI"),
DIS_VABP = vap, DIS_HABP = as.integer(ind == "HAP/VAP") * (1L - vap),
MECH_VENT = vap,
RACE_ASIAN_OTH = as.integer(race == "ASN"), RACE_CHINESE = as.integer(race == "CHN"),
RACE_JAPANESE = as.integer(race == "JPN"),
APACHE_II_SEV = apache, RENALIMP_ESRD = 0L, RRT_HEMODIAL_STATUS = 0L,
STUDY_CIAI_PH2 = 0L, STUDY_CAZAVI_PHASE2 = 0L,
STUDY_CAZAVI_PHASE3 = as.integer(adult), STUDY_CAZAVI_PED_PHASE2 = as.integer(!adult),
amtCaz = amtCaz, amtAvi = amtCaz / 4
)
}
arms <- bind_rows(
expand.grid(grp = ageGroups$grp, ind = c("cIAI", "cUTI", "HAP/VAP"), renal = "Normal", stringsAsFactors = FALSE),
expand.grid(
grp = c("12 to <18 years", "6 to <12 years", "2 to <6 years", "Adults"),
ind = c("cIAI", "cUTI", "HAP/VAP"), renal = "Mild", stringsAsFactors = FALSE
)
)
cohort <- bind_rows(lapply(seq_len(nrow(arms)), function(i) {
makeArm(arms$grp[i], arms$ind[i], arms$renal[i], (i - 1L) * N_ARM)
}))
cohort |>
group_by(Renal = renal, `Age group` = grp) |>
summarise(
N = n(), `Median WT (kg)` = round(median(WT), 1),
`Median NCrCL` = round(median(CRCL)),
`Median ceftazidime dose (mg)` = round(median(amtCaz)), .groups = "drop"
) |>
knitr::kable(caption = "Virtual cohort by renal stratum and age group (all three indications pooled).")| Renal | Age group | N | Median WT (kg) | Median NCrCL | Median ceftazidime dose (mg) |
|---|---|---|---|---|---|
| Mild | 12 to <18 years | 300 | 53.7 | 66 | 2000 |
| Mild | 2 to <6 years | 300 | 16.0 | 66 | 802 |
| Mild | 6 to <12 years | 300 | 29.2 | 66 | 1461 |
| Mild | Adults | 300 | 71.4 | 66 | 2000 |
| Normal | 1 to <2 years | 300 | 11.2 | 129 | 561 |
| Normal | 12 to <18 years | 300 | 53.2 | 128 | 2000 |
| Normal | 2 to <6 years | 300 | 16.1 | 125 | 806 |
| Normal | 3 to <6 months | 300 | 6.8 | 126 | 271 |
| Normal | 6 to <12 months | 300 | 8.7 | 129 | 434 |
| Normal | 6 to <12 years | 300 | 29.2 | 128 | 1459 |
| Normal | Adults | 300 | 68.2 | 124 | 2000 |
Simulation
Steady state is imposed with ss = 1 on the first 2-hour
infusion and two further q8h doses are given explicitly, so the 0-24 h
window is the paper’s AUCss,0-24. The first dosing interval
is sampled every 0.1 h for the time-above-threshold calculation; the
rest of the window hourly. The paper’s PTA simulations used individual
predictions, so residual error is switched off
(sigma = NA).
TINF <- 2
obsTimes <- sort(unique(c(seq(0, 8, by = 0.1), 9:24)))
covCols <- setdiff(names(cohort), c("grp", "ind", "renal", "amtCaz", "amtAvi"))
makeEvents <- function(amtCol) {
dose <- cohort[rep(seq_len(nrow(cohort)), each = 3L), covCols]
dose$time <- rep(c(0, 8, 16), nrow(cohort))
dose$amt <- rep(cohort[[amtCol]], each = 3L)
dose$evid <- 1L
dose$dur <- TINF
dose$ss <- rep(c(1L, 0L, 0L), nrow(cohort))
dose$ii <- 8
obs <- cohort[rep(seq_len(nrow(cohort)), each = length(obsTimes)), covCols]
obs$time <- rep(obsTimes, nrow(cohort))
obs$amt <- 0
obs$evid <- 0L
obs$dur <- 0
obs$ss <- 0L
obs$ii <- 0
ev <- rbind(dose, obs)
ev$cmt <- "central"
ev[order(ev$id, ev$time, -ev$evid), ]
}
simOne <- function(ui, amtCol, drug) {
s <- rxode2::rxSolve(ui, makeEvents(amtCol),
sigma = NA, maxsteps = 500000L, returnType = "data.frame"
)
s |>
transmute(id = as.integer(as.character(id)), time, Cc, drug = drug) |>
left_join(cohort |> select(id, grp, ind, renal, WT), by = "id")
}
sim <- bind_rows(
simOne(uiCaz, "amtCaz", "Ceftazidime"),
simOne(uiAvi, "amtAvi", "Avibactam")
)
# The avibactam OMEGA block gives Q a variance of 5.5 (SD 2.3 on the log
# scale), so a handful of draws are extreme enough (Vc < 0.5 L with Q in the
# hundreds of L/h) that the steady-state solver gives up. Those subjects are
# dropped and counted; more than 1% would signal a real problem.
naIds <- unique(sim$id[sim$drug == "Avibactam" & !is.finite(sim$Cc)])
cat("Avibactam subjects with a failed steady-state solve:", length(naIds), "of", nrow(cohort), "\n")
#> Avibactam subjects with a failed steady-state solve: 0 of 3300
stopifnot(
all(is.finite(sim$Cc[sim$drug == "Ceftazidime"])),
length(naIds) <= 0.01 * nrow(cohort)
)
sim <- sim |> filter(!(drug == "Avibactam" & id %in% naIds))Steady-state profiles
sim |>
filter(renal == "Normal", grp %in% c("12 to <18 years", "2 to <6 years", "3 to <6 months", "Adults")) |>
group_by(drug, ind, grp, time) |>
summarise(med = median(Cc), lo = quantile(Cc, 0.05), hi = quantile(Cc, 0.95), .groups = "drop") |>
ggplot(aes(time, med, colour = grp, fill = grp)) +
geom_ribbon(aes(ymin = lo, ymax = hi), alpha = 0.1, colour = NA) +
geom_line() +
facet_grid(drug ~ ind, scales = "free_y") +
scale_y_log10() +
labs(
x = "Time within the steady-state 24-hour window (h)",
y = "Total plasma concentration (mg/L)", colour = "Age group", fill = "Age group"
) +
theme_bw()
Median and 90% prediction interval at the approved doses, normal renal function.
Exposure by body weight
expo <- sim |>
group_by(drug, id, grp, ind, renal, WT) |>
summarise(cmax = max(Cc), .groups = "drop") |>
filter(renal == "Normal")
expo |>
mutate(population = ifelse(grp == "Adults", "Adults", "Children")) |>
ggplot(aes(WT, cmax, colour = population)) +
geom_point(alpha = 0.3, size = 0.8) +
geom_smooth(method = "loess", formula = y ~ x, se = FALSE) +
facet_grid(drug ~ ind, scales = "free_y") +
scale_x_log10() +
scale_y_log10() +
labs(x = "Body weight (kg)", y = "Simulated Cmax,ss (mg/L)", colour = NULL) +
theme_bw()
Replicates the simulated part of Figure 1b of Franzese 2022 (Cmax,ss against body weight, children against adults with normal renal function): pediatric peak concentrations sit at or above the adult band across the weight range, the pattern the paper describes for its Figure 1 and Table 3.
PKNCA validation
ncaConc <- sim |>
filter(!is.na(Cc), time %in% c(0:24)) |>
select(id, time, Cc, drug)
ncaDose <- sim |>
filter(time == 0) |>
distinct(id, drug) |>
mutate(time = 0)
concObj <- PKNCA::PKNCAconc(ncaConc, Cc ~ time | drug + id, concu = "mg/L", timeu = "h")
doseObj <- PKNCA::PKNCAdose(ncaDose, ~ time | drug + id)
intervals <- data.frame(start = 0, end = 24, cmax = TRUE, auclast = TRUE)
ncaRes <- PKNCA::pk.nca(PKNCA::PKNCAdata(concObj, doseObj, intervals = intervals))
ncaInd <- as.data.frame(ncaRes$result) |>
select(drug, id, PPTESTCD, PPORRES) |>
left_join(cohort |> select(id, grp, ind, renal), by = "id")
stopifnot(all(is.finite(ncaInd$PPORRES)))
# Franzese 2022 tabulates geometric means.
ncaGm <- ncaInd |>
group_by(drug, renal, ind, grp, PPTESTCD) |>
summarise(PPORRES = exp(mean(log(PPORRES))), .groups = "drop")auclast over the 0-24 h steady-state window is
AUCss,0-24; cmax over the window is
Cmax,ss (end of infusion).
Comparison against the published simulations (Table 3)
grpLev <- c("12 to <18 years", "6 to <12 years", "2 to <6 years", "1 to <2 years", "6 to <12 months", "3 to <6 months", "Adults")
grpMild <- c("12 to <18 years", "6 to <12 years", "2 to <6 years", "Adults")
# Franzese 2022 Table 3, read column by column (cIAI, cUTI, HAP/VAP).
table3 <- bind_rows(
tibble(drug = "Ceftazidime", renal = "Normal", grp = rep(grpLev, 3), ind = rep(c("cIAI", "cUTI", "HAP/VAP"), each = 7),
cmax = c(64.6, 72.4, 68.2, 68.1, 72.1, 64.2, 58.9, 81.5, 91.5, 86.3, 86.0, 90.8, 80.7, 74.0, 71.8, 80.8, 76.4, 76.2, 80.4, 71.4, 65.1),
auclast = c(618, 650, 572, 577, 637, 617, 602, 821, 864, 760, 767, 846, 820, 828, 747, 785, 691, 698, 769, 745, 712)),
tibble(drug = "Avibactam", renal = "Normal", grp = rep(grpLev, 3), ind = rep(c("cIAI", "cUTI", "HAP/VAP"), each = 7),
cmax = c(12.3, 14.2, 13.0, 13.6, 14.0, 12.1, 10.5, 11.9, 13.7, 12.5, 12.9, 13.3, 11.5, 9.73, 13.0, 15.1, 13.8, 14.4, 14.9, 12.9, 10.2),
auclast = c(121, 136, 118, 125, 132, 121, 107, 121, 136, 118, 125, 132, 121, 113, 121, 136, 118, 125, 132, 121, 105)),
tibble(drug = "Ceftazidime", renal = "Mild", grp = rep(grpMild, 3), ind = rep(c("cIAI", "cUTI", "HAP/VAP"), each = 4),
cmax = c(81.6, 93.4, 88.2, 74.9, 103.0, 118.0, 111.0, 94.3, 90.9, 104.0, 98.0, 83.8),
auclast = c(940, 1020, 892, 917, 1250, 1350, 1190, 1240, 1140, 1230, 1080, 1100)),
tibble(drug = "Avibactam", renal = "Mild", grp = rep(grpMild, 3), ind = rep(c("cIAI", "cUTI", "HAP/VAP"), each = 4),
cmax = c(14.7, 17.4, 15.9, 12.7, 14.2, 16.7, 15.3, 11.8, 15.5, 18.5, 17.0, 12.5),
auclast = c(164, 192, 167, 148, 164, 192, 167, 152, 164, 192, 167, 147))
)
cmp <- nlmixr2lib::ncaComparisonTable(
simulated = ncaGm, reference = table3,
by = c("drug", "renal", "ind", "grp"),
units = c(cmax = "mg/L", auclast = "mg*h/L, 0-24 h at steady state")
)
cmp |>
dplyr::rename(Analyte = drug, `Renal function` = renal, Indication = ind, `Age group` = grp) |>
knitr::kable(caption = "Geometric-mean steady-state exposures: Franzese 2022 Table 3 (Reference) against this simulation.")| NCA parameter | Analyte | Renal function | Indication | Age group | Reference | Simulated | % diff |
|---|---|---|---|---|---|---|---|
| Cmax (mg/L) | Ceftazidime | Normal | cIAI | 12 to <18 years | 64.6 | 68.9 | +6.7% |
| Cmax (mg/L) | Ceftazidime | Normal | cIAI | 6 to <12 years | 72.4 | 78.2 | +7.9% |
| Cmax (mg/L) | Ceftazidime | Normal | cIAI | 2 to <6 years | 68.2 | 67.8 | -0.5% |
| Cmax (mg/L) | Ceftazidime | Normal | cIAI | 1 to <2 years | 68.1 | 70.1 | +3.0% |
| Cmax (mg/L) | Ceftazidime | Normal | cIAI | 6 to <12 months | 72.1 | 74.3 | +3.0% |
| Cmax (mg/L) | Ceftazidime | Normal | cIAI | 3 to <6 months | 64.2 | 64.8 | +0.9% |
| Cmax (mg/L) | Ceftazidime | Normal | cIAI | Adults | 58.9 | 54.9 | -6.8% |
| Cmax (mg/L) | Ceftazidime | Normal | cUTI | 12 to <18 years | 81.5 | 86.5 | +6.1% |
| Cmax (mg/L) | Ceftazidime | Normal | cUTI | 6 to <12 years | 91.5 | 97.3 | +6.4% |
| Cmax (mg/L) | Ceftazidime | Normal | cUTI | 2 to <6 years | 86.3 | 84.8 | -1.8% |
| Cmax (mg/L) | Ceftazidime | Normal | cUTI | 1 to <2 years | 86 | 87.6 | +1.9% |
| Cmax (mg/L) | Ceftazidime | Normal | cUTI | 6 to <12 months | 90.8 | 93.6 | +3.1% |
| Cmax (mg/L) | Ceftazidime | Normal | cUTI | 3 to <6 months | 80.7 | 82.3 | +2.0% |
| Cmax (mg/L) | Ceftazidime | Normal | cUTI | Adults | 74 | 74 | +0.1% |
| Cmax (mg/L) | Ceftazidime | Normal | HAP/VAP | 12 to <18 years | 71.8 | 74.3 | +3.6% |
| Cmax (mg/L) | Ceftazidime | Normal | HAP/VAP | 6 to <12 years | 80.8 | 83.4 | +3.2% |
| Cmax (mg/L) | Ceftazidime | Normal | HAP/VAP | 2 to <6 years | 76.4 | 78.8 | +3.1% |
| Cmax (mg/L) | Ceftazidime | Normal | HAP/VAP | 1 to <2 years | 76.2 | 79.9 | +4.9% |
| Cmax (mg/L) | Ceftazidime | Normal | HAP/VAP | 6 to <12 months | 80.4 | 78.7 | -2.1% |
| Cmax (mg/L) | Ceftazidime | Normal | HAP/VAP | 3 to <6 months | 71.4 | 72.5 | +1.6% |
| Cmax (mg/L) | Ceftazidime | Normal | HAP/VAP | Adults | 65.1 | 66.5 | +2.2% |
| Cmax (mg/L) | Ceftazidime | Mild | cIAI | 12 to <18 years | 81.6 | 87.1 | +6.7% |
| Cmax (mg/L) | Ceftazidime | Mild | cIAI | 6 to <12 years | 93.4 | 97.1 | +4.0% |
| Cmax (mg/L) | Ceftazidime | Mild | cIAI | 2 to <6 years | 88.2 | 91.1 | +3.3% |
| Cmax (mg/L) | Ceftazidime | Mild | cIAI | Adults | 74.9 | 75.4 | +0.7% |
| Cmax (mg/L) | Ceftazidime | Mild | cUTI | 12 to <18 years | 103 | 112 | +9.0% |
| Cmax (mg/L) | Ceftazidime | Mild | cUTI | 6 to <12 years | 118 | 127 | +7.7% |
| Cmax (mg/L) | Ceftazidime | Mild | cUTI | 2 to <6 years | 111 | 111 | +0.4% |
| Cmax (mg/L) | Ceftazidime | Mild | cUTI | Adults | 94.3 | 93.3 | -1.1% |
| Cmax (mg/L) | Ceftazidime | Mild | HAP/VAP | 12 to <18 years | 90.9 | 92.8 | +2.1% |
| Cmax (mg/L) | Ceftazidime | Mild | HAP/VAP | 6 to <12 years | 104 | 108 | +3.6% |
| Cmax (mg/L) | Ceftazidime | Mild | HAP/VAP | 2 to <6 years | 98 | 96.4 | -1.6% |
| Cmax (mg/L) | Ceftazidime | Mild | HAP/VAP | Adults | 83.8 | 77.3 | -7.7% |
| Cmax (mg/L) | Avibactam | Normal | cIAI | 12 to <18 years | 12.3 | 14.7 | +19.6% |
| Cmax (mg/L) | Avibactam | Normal | cIAI | 6 to <12 years | 14.2 | 17.3 | +21.6%* |
| Cmax (mg/L) | Avibactam | Normal | cIAI | 2 to <6 years | 13 | 15 | +15.4% |
| Cmax (mg/L) | Avibactam | Normal | cIAI | 1 to <2 years | 13.6 | 15 | +10.7% |
| Cmax (mg/L) | Avibactam | Normal | cIAI | 6 to <12 months | 14 | 18.3 | +30.7%* |
| Cmax (mg/L) | Avibactam | Normal | cIAI | 3 to <6 months | 12.1 | 15 | +23.6%* |
| Cmax (mg/L) | Avibactam | Normal | cIAI | Adults | 10.5 | 13.2 | +25.9%* |
| Cmax (mg/L) | Avibactam | Normal | cUTI | 12 to <18 years | 11.9 | 16.1 | +35.6%* |
| Cmax (mg/L) | Avibactam | Normal | cUTI | 6 to <12 years | 13.7 | 17.6 | +28.1%* |
| Cmax (mg/L) | Avibactam | Normal | cUTI | 2 to <6 years | 12.5 | 14.3 | +14.8% |
| Cmax (mg/L) | Avibactam | Normal | cUTI | 1 to <2 years | 12.9 | 15.3 | +18.7% |
| Cmax (mg/L) | Avibactam | Normal | cUTI | 6 to <12 months | 13.3 | 17.3 | +30.0%* |
| Cmax (mg/L) | Avibactam | Normal | cUTI | 3 to <6 months | 11.5 | 14.7 | +28.0%* |
| Cmax (mg/L) | Avibactam | Normal | cUTI | Adults | 9.73 | 13 | +33.5%* |
| Cmax (mg/L) | Avibactam | Normal | HAP/VAP | 12 to <18 years | 13 | 16.8 | +29.1%* |
| Cmax (mg/L) | Avibactam | Normal | HAP/VAP | 6 to <12 years | 15.1 | 19.3 | +28.1%* |
| Cmax (mg/L) | Avibactam | Normal | HAP/VAP | 2 to <6 years | 13.8 | 15.8 | +14.5% |
| Cmax (mg/L) | Avibactam | Normal | HAP/VAP | 1 to <2 years | 14.4 | 14.5 | +0.9% |
| Cmax (mg/L) | Avibactam | Normal | HAP/VAP | 6 to <12 months | 14.9 | 16 | +7.7% |
| Cmax (mg/L) | Avibactam | Normal | HAP/VAP | 3 to <6 months | 12.9 | 13.6 | +5.6% |
| Cmax (mg/L) | Avibactam | Normal | HAP/VAP | Adults | 10.2 | 13 | +27.8%* |
| Cmax (mg/L) | Avibactam | Mild | cIAI | 12 to <18 years | 14.7 | 19.5 | +33.0%* |
| Cmax (mg/L) | Avibactam | Mild | cIAI | 6 to <12 years | 17.4 | 22.6 | +29.7%* |
| Cmax (mg/L) | Avibactam | Mild | cIAI | 2 to <6 years | 15.9 | 19 | +19.7% |
| Cmax (mg/L) | Avibactam | Mild | cIAI | Adults | 12.7 | 16 | +25.8%* |
| Cmax (mg/L) | Avibactam | Mild | cUTI | 12 to <18 years | 14.2 | 18.7 | +31.9%* |
| Cmax (mg/L) | Avibactam | Mild | cUTI | 6 to <12 years | 16.7 | 22.3 | +33.3%* |
| Cmax (mg/L) | Avibactam | Mild | cUTI | 2 to <6 years | 15.3 | 18.1 | +18.3% |
| Cmax (mg/L) | Avibactam | Mild | cUTI | Adults | 11.8 | 13.2 | +11.8% |
| Cmax (mg/L) | Avibactam | Mild | HAP/VAP | 12 to <18 years | 15.5 | 18.4 | +18.7% |
| Cmax (mg/L) | Avibactam | Mild | HAP/VAP | 6 to <12 years | 18.5 | 21.1 | +13.9% |
| Cmax (mg/L) | Avibactam | Mild | HAP/VAP | 2 to <6 years | 17 | 19.1 | +12.2% |
| Cmax (mg/L) | Avibactam | Mild | HAP/VAP | Adults | 12.5 | 15.7 | +25.4%* |
| AUClast (mg*h/L, 0-24 h at steady state) | Ceftazidime | Normal | cIAI | 12 to <18 years | 618 | 636 | +2.9% |
| AUClast (mg*h/L, 0-24 h at steady state) | Ceftazidime | Normal | cIAI | 6 to <12 years | 650 | 677 | +4.1% |
| AUClast (mg*h/L, 0-24 h at steady state) | Ceftazidime | Normal | cIAI | 2 to <6 years | 572 | 528 | -7.8% |
| AUClast (mg*h/L, 0-24 h at steady state) | Ceftazidime | Normal | cIAI | 1 to <2 years | 577 | 556 | -3.7% |
| AUClast (mg*h/L, 0-24 h at steady state) | Ceftazidime | Normal | cIAI | 6 to <12 months | 637 | 607 | -4.8% |
| AUClast (mg*h/L, 0-24 h at steady state) | Ceftazidime | Normal | cIAI | 3 to <6 months | 617 | 588 | -4.7% |
| AUClast (mg*h/L, 0-24 h at steady state) | Ceftazidime | Normal | cIAI | Adults | 602 | 548 | -9.0% |
| AUClast (mg*h/L, 0-24 h at steady state) | Ceftazidime | Normal | cUTI | 12 to <18 years | 821 | 830 | +1.1% |
| AUClast (mg*h/L, 0-24 h at steady state) | Ceftazidime | Normal | cUTI | 6 to <12 years | 864 | 863 | -0.1% |
| AUClast (mg*h/L, 0-24 h at steady state) | Ceftazidime | Normal | cUTI | 2 to <6 years | 760 | 699 | -8.1% |
| AUClast (mg*h/L, 0-24 h at steady state) | Ceftazidime | Normal | cUTI | 1 to <2 years | 767 | 712 | -7.1% |
| AUClast (mg*h/L, 0-24 h at steady state) | Ceftazidime | Normal | cUTI | 6 to <12 months | 846 | 826 | -2.4% |
| AUClast (mg*h/L, 0-24 h at steady state) | Ceftazidime | Normal | cUTI | 3 to <6 months | 820 | 777 | -5.2% |
| AUClast (mg*h/L, 0-24 h at steady state) | Ceftazidime | Normal | cUTI | Adults | 828 | 756 | -8.7% |
| AUClast (mg*h/L, 0-24 h at steady state) | Ceftazidime | Normal | HAP/VAP | 12 to <18 years | 747 | 756 | +1.2% |
| AUClast (mg*h/L, 0-24 h at steady state) | Ceftazidime | Normal | HAP/VAP | 6 to <12 years | 785 | 802 | +2.1% |
| AUClast (mg*h/L, 0-24 h at steady state) | Ceftazidime | Normal | HAP/VAP | 2 to <6 years | 691 | 701 | +1.5% |
| AUClast (mg*h/L, 0-24 h at steady state) | Ceftazidime | Normal | HAP/VAP | 1 to <2 years | 698 | 730 | +4.6% |
| AUClast (mg*h/L, 0-24 h at steady state) | Ceftazidime | Normal | HAP/VAP | 6 to <12 months | 769 | 711 | -7.5% |
| AUClast (mg*h/L, 0-24 h at steady state) | Ceftazidime | Normal | HAP/VAP | 3 to <6 months | 745 | 736 | -1.1% |
| AUClast (mg*h/L, 0-24 h at steady state) | Ceftazidime | Normal | HAP/VAP | Adults | 712 | 740 | +3.9% |
| AUClast (mg*h/L, 0-24 h at steady state) | Ceftazidime | Mild | cIAI | 12 to <18 years | 940 | 979 | +4.2% |
| AUClast (mg*h/L, 0-24 h at steady state) | Ceftazidime | Mild | cIAI | 6 to <12 years | 1020 | 1010 | -0.8% |
| AUClast (mg*h/L, 0-24 h at steady state) | Ceftazidime | Mild | cIAI | 2 to <6 years | 892 | 846 | -5.2% |
| AUClast (mg*h/L, 0-24 h at steady state) | Ceftazidime | Mild | cIAI | Adults | 917 | 906 | -1.2% |
| AUClast (mg*h/L, 0-24 h at steady state) | Ceftazidime | Mild | cUTI | 12 to <18 years | 1250 | 1380 | +10.4% |
| AUClast (mg*h/L, 0-24 h at steady state) | Ceftazidime | Mild | cUTI | 6 to <12 years | 1350 | 1390 | +3.1% |
| AUClast (mg*h/L, 0-24 h at steady state) | Ceftazidime | Mild | cUTI | 2 to <6 years | 1190 | 1080 | -8.9% |
| AUClast (mg*h/L, 0-24 h at steady state) | Ceftazidime | Mild | cUTI | Adults | 1240 | 1170 | -5.5% |
| AUClast (mg*h/L, 0-24 h at steady state) | Ceftazidime | Mild | HAP/VAP | 12 to <18 years | 1140 | 1130 | -1.0% |
| AUClast (mg*h/L, 0-24 h at steady state) | Ceftazidime | Mild | HAP/VAP | 6 to <12 years | 1230 | 1230 | +0.4% |
| AUClast (mg*h/L, 0-24 h at steady state) | Ceftazidime | Mild | HAP/VAP | 2 to <6 years | 1080 | 1020 | -5.6% |
| AUClast (mg*h/L, 0-24 h at steady state) | Ceftazidime | Mild | HAP/VAP | Adults | 1100 | 1010 | -8.0% |
| AUClast (mg*h/L, 0-24 h at steady state) | Avibactam | Normal | cIAI | 12 to <18 years | 121 | 137 | +13.2% |
| AUClast (mg*h/L, 0-24 h at steady state) | Avibactam | Normal | cIAI | 6 to <12 years | 136 | 150 | +9.9% |
| AUClast (mg*h/L, 0-24 h at steady state) | Avibactam | Normal | cIAI | 2 to <6 years | 118 | 126 | +6.7% |
| AUClast (mg*h/L, 0-24 h at steady state) | Avibactam | Normal | cIAI | 1 to <2 years | 125 | 126 | +0.5% |
| AUClast (mg*h/L, 0-24 h at steady state) | Avibactam | Normal | cIAI | 6 to <12 months | 132 | 149 | +13.2% |
| AUClast (mg*h/L, 0-24 h at steady state) | Avibactam | Normal | cIAI | 3 to <6 months | 121 | 128 | +5.8% |
| AUClast (mg*h/L, 0-24 h at steady state) | Avibactam | Normal | cIAI | Adults | 107 | 129 | +20.9%* |
| AUClast (mg*h/L, 0-24 h at steady state) | Avibactam | Normal | cUTI | 12 to <18 years | 121 | 158 | +30.3%* |
| AUClast (mg*h/L, 0-24 h at steady state) | Avibactam | Normal | cUTI | 6 to <12 years | 136 | 150 | +10.1% |
| AUClast (mg*h/L, 0-24 h at steady state) | Avibactam | Normal | cUTI | 2 to <6 years | 118 | 126 | +6.4% |
| AUClast (mg*h/L, 0-24 h at steady state) | Avibactam | Normal | cUTI | 1 to <2 years | 125 | 124 | -0.6% |
| AUClast (mg*h/L, 0-24 h at steady state) | Avibactam | Normal | cUTI | 6 to <12 months | 132 | 147 | +11.5% |
| AUClast (mg*h/L, 0-24 h at steady state) | Avibactam | Normal | cUTI | 3 to <6 months | 121 | 136 | +12.6% |
| AUClast (mg*h/L, 0-24 h at steady state) | Avibactam | Normal | cUTI | Adults | 113 | 127 | +12.1% |
| AUClast (mg*h/L, 0-24 h at steady state) | Avibactam | Normal | HAP/VAP | 12 to <18 years | 121 | 157 | +29.8%* |
| AUClast (mg*h/L, 0-24 h at steady state) | Avibactam | Normal | HAP/VAP | 6 to <12 years | 136 | 168 | +23.4%* |
| AUClast (mg*h/L, 0-24 h at steady state) | Avibactam | Normal | HAP/VAP | 2 to <6 years | 118 | 126 | +6.5% |
| AUClast (mg*h/L, 0-24 h at steady state) | Avibactam | Normal | HAP/VAP | 1 to <2 years | 125 | 122 | -2.2% |
| AUClast (mg*h/L, 0-24 h at steady state) | Avibactam | Normal | HAP/VAP | 6 to <12 months | 132 | 136 | +3.2% |
| AUClast (mg*h/L, 0-24 h at steady state) | Avibactam | Normal | HAP/VAP | 3 to <6 months | 121 | 121 | +0.3% |
| AUClast (mg*h/L, 0-24 h at steady state) | Avibactam | Normal | HAP/VAP | Adults | 105 | 129 | +23.3%* |
| AUClast (mg*h/L, 0-24 h at steady state) | Avibactam | Mild | cIAI | 12 to <18 years | 164 | 204 | +24.4%* |
| AUClast (mg*h/L, 0-24 h at steady state) | Avibactam | Mild | cIAI | 6 to <12 years | 192 | 222 | +15.5% |
| AUClast (mg*h/L, 0-24 h at steady state) | Avibactam | Mild | cIAI | 2 to <6 years | 167 | 172 | +3.1% |
| AUClast (mg*h/L, 0-24 h at steady state) | Avibactam | Mild | cIAI | Adults | 148 | 187 | +26.4%* |
| AUClast (mg*h/L, 0-24 h at steady state) | Avibactam | Mild | cUTI | 12 to <18 years | 164 | 208 | +26.8%* |
| AUClast (mg*h/L, 0-24 h at steady state) | Avibactam | Mild | cUTI | 6 to <12 years | 192 | 229 | +19.0% |
| AUClast (mg*h/L, 0-24 h at steady state) | Avibactam | Mild | cUTI | 2 to <6 years | 167 | 175 | +5.0% |
| AUClast (mg*h/L, 0-24 h at steady state) | Avibactam | Mild | cUTI | Adults | 152 | 153 | +0.9% |
| AUClast (mg*h/L, 0-24 h at steady state) | Avibactam | Mild | HAP/VAP | 12 to <18 years | 164 | 204 | +24.2%* |
| AUClast (mg*h/L, 0-24 h at steady state) | Avibactam | Mild | HAP/VAP | 6 to <12 years | 192 | 210 | +9.5% |
| AUClast (mg*h/L, 0-24 h at steady state) | Avibactam | Mild | HAP/VAP | 2 to <6 years | 167 | 171 | +2.5% |
| AUClast (mg*h/L, 0-24 h at steady state) | Avibactam | Mild | HAP/VAP | Adults | 147 | 179 | +21.6%* |
pct <- ncaGm |>
inner_join(
table3 |> pivot_longer(c(cmax, auclast), names_to = "PPTESTCD", values_to = "ref"),
by = c("drug", "renal", "ind", "grp", "PPTESTCD")
) |>
mutate(pct_diff = 100 * (PPORRES / ref - 1))
pct |>
group_by(Analyte = drug, Parameter = PPTESTCD) |>
summarise(
`Median % diff` = round(median(pct_diff), 1),
`90th pct of |% diff|` = round(quantile(abs(pct_diff), 0.9), 1), .groups = "drop"
) |>
knitr::kable(caption = "Agreement with Table 3 across the 33 arms.")| Analyte | Parameter | Median % diff | 90th pct of |% diff| |
|---|---|---|---|
| Avibactam | auclast | 11.5 | 26.0 |
| Avibactam | cmax | 23.6 | 32.7 |
| Ceftazidime | auclast | -1.2 | 8.6 |
| Ceftazidime | cmax | 3.0 | 7.5 |
# The cohort is a reconstruction from marginal summaries, so the two sides
# differ by which subjects were drawn; assert on the centre and a robust
# quantile only. A mis-transcribed clearance, dose or unit moves the whole
# distribution by tens of percent.
caz <- pct[pct$drug == "Ceftazidime", ]
avi <- pct[pct$drug == "Avibactam", ]
stopifnot(
abs(median(caz$pct_diff)) < 10,
quantile(abs(caz$pct_diff), 0.9) < 20,
# Avibactam runs high by a systematic, explained offset (next section).
median(avi$pct_diff) > -10,
median(avi$pct_diff) < 35
)Ceftazidime reproduces Table 3 closely across all ages, indications
and both renal strata (median differences of a few percent on both
AUCss,0-24 and Cmax,ss). Avibactam runs
systematically high – by roughly a tenth on AUCss,0-24 and
a fifth on Cmax,ss – and the explanation is in the next
section.
Why the avibactam simulation runs high
Franzese 2022 did not simulate from the OMEGA matrix: it resampled
each fitted subject’s post hoc random effects, pediatric ones for
simulated children and adult ones for simulated adults. If the fitted
children’s avibactam clearance EBEs are centred above zero – a pediatric
offset the covariates do not capture (the pediatric-study terms
CLPED and V1PED were tested in the control
stream but held at zero in the final model) – then the paper’s simulated
children inherit it and a simulation centred on the typical value does
not.
Table 2 (as corrected by the erratum) makes the offset visible
without any knowledge of the cohort: in a child, ceftazidime and
avibactam are dosed in a 4:1 ratio, so
(AUCcaz / AUCavi) / 4 is the subject’s
avibactam-to-ceftazidime clearance ratio. The models’ typical-value
ratio for a child aged over 2 years with no infection-type effect on
ceftazidime clearance can be computed across the weights and NCrCL
values that cover most of the children (10-45 kg; NCrCL 90-150
mL/min/1.73 m^2, bracketing the Table 1 cohort medians of 89-130). The
ratio is somewhat higher right at the avibactam hinge of 80, where the
ceftazidime spline is lowest relative to its own reference.
ratioGrid <- expand.grid(WT = c(10, 15, 20, 30, 45), CRCL = c(90, 100, 125, 150))
ratioGrid$ratio <- mapply(function(wt, crcl) {
typicalParams(uiAvi, WT = wt, CRCL = crcl, AGE = 8)["cl"] /
typicalParams(uiCaz, WT = wt, CRCL = crcl, AGE = 8)["cl"]
}, ratioGrid$WT, ratioGrid$CRCL)
#> Warning: No sigma parameters in the model
#> ℹ omega/sigma items treated as zero: 'etalcl', 'etalvc', 'etalvp', 'etalq'
#> Warning: No sigma parameters in the model
#> ℹ omega/sigma items treated as zero: 'etalcl', 'etalvc', 'etalq', 'etalvp'
#> Warning: No sigma parameters in the model
#> ℹ omega/sigma items treated as zero: 'etalcl', 'etalvc', 'etalvp', 'etalq'
#> Warning: No sigma parameters in the model
#> ℹ omega/sigma items treated as zero: 'etalcl', 'etalvc', 'etalq', 'etalvp'
#> Warning: No sigma parameters in the model
#> ℹ omega/sigma items treated as zero: 'etalcl', 'etalvc', 'etalvp', 'etalq'
#> Warning: No sigma parameters in the model
#> ℹ omega/sigma items treated as zero: 'etalcl', 'etalvc', 'etalq', 'etalvp'
#> Warning: No sigma parameters in the model
#> ℹ omega/sigma items treated as zero: 'etalcl', 'etalvc', 'etalvp', 'etalq'
#> Warning: No sigma parameters in the model
#> ℹ omega/sigma items treated as zero: 'etalcl', 'etalvc', 'etalq', 'etalvp'
#> Warning: No sigma parameters in the model
#> ℹ omega/sigma items treated as zero: 'etalcl', 'etalvc', 'etalvp', 'etalq'
#> Warning: No sigma parameters in the model
#> ℹ omega/sigma items treated as zero: 'etalcl', 'etalvc', 'etalq', 'etalvp'
#> Warning: No sigma parameters in the model
#> ℹ omega/sigma items treated as zero: 'etalcl', 'etalvc', 'etalvp', 'etalq'
#> Warning: No sigma parameters in the model
#> ℹ omega/sigma items treated as zero: 'etalcl', 'etalvc', 'etalq', 'etalvp'
#> Warning: No sigma parameters in the model
#> ℹ omega/sigma items treated as zero: 'etalcl', 'etalvc', 'etalvp', 'etalq'
#> Warning: No sigma parameters in the model
#> ℹ omega/sigma items treated as zero: 'etalcl', 'etalvc', 'etalq', 'etalvp'
#> Warning: No sigma parameters in the model
#> ℹ omega/sigma items treated as zero: 'etalcl', 'etalvc', 'etalvp', 'etalq'
#> Warning: No sigma parameters in the model
#> ℹ omega/sigma items treated as zero: 'etalcl', 'etalvc', 'etalq', 'etalvp'
#> Warning: No sigma parameters in the model
#> ℹ omega/sigma items treated as zero: 'etalcl', 'etalvc', 'etalvp', 'etalq'
#> Warning: No sigma parameters in the model
#> ℹ omega/sigma items treated as zero: 'etalcl', 'etalvc', 'etalq', 'etalvp'
#> Warning: No sigma parameters in the model
#> ℹ omega/sigma items treated as zero: 'etalcl', 'etalvc', 'etalvp', 'etalq'
#> Warning: No sigma parameters in the model
#> ℹ omega/sigma items treated as zero: 'etalcl', 'etalvc', 'etalq', 'etalvp'
#> Warning: No sigma parameters in the model
#> ℹ omega/sigma items treated as zero: 'etalcl', 'etalvc', 'etalvp', 'etalq'
#> Warning: No sigma parameters in the model
#> ℹ omega/sigma items treated as zero: 'etalcl', 'etalvc', 'etalq', 'etalvp'
#> Warning: No sigma parameters in the model
#> ℹ omega/sigma items treated as zero: 'etalcl', 'etalvc', 'etalvp', 'etalq'
#> Warning: No sigma parameters in the model
#> ℹ omega/sigma items treated as zero: 'etalcl', 'etalvc', 'etalq', 'etalvp'
#> Warning: No sigma parameters in the model
#> ℹ omega/sigma items treated as zero: 'etalcl', 'etalvc', 'etalvp', 'etalq'
#> Warning: No sigma parameters in the model
#> ℹ omega/sigma items treated as zero: 'etalcl', 'etalvc', 'etalq', 'etalvp'
#> Warning: No sigma parameters in the model
#> ℹ omega/sigma items treated as zero: 'etalcl', 'etalvc', 'etalvp', 'etalq'
#> Warning: No sigma parameters in the model
#> ℹ omega/sigma items treated as zero: 'etalcl', 'etalvc', 'etalq', 'etalvp'
#> Warning: No sigma parameters in the model
#> ℹ omega/sigma items treated as zero: 'etalcl', 'etalvc', 'etalvp', 'etalq'
#> Warning: No sigma parameters in the model
#> ℹ omega/sigma items treated as zero: 'etalcl', 'etalvc', 'etalq', 'etalvp'
#> Warning: No sigma parameters in the model
#> ℹ omega/sigma items treated as zero: 'etalcl', 'etalvc', 'etalvp', 'etalq'
#> Warning: No sigma parameters in the model
#> ℹ omega/sigma items treated as zero: 'etalcl', 'etalvc', 'etalq', 'etalvp'
#> Warning: No sigma parameters in the model
#> ℹ omega/sigma items treated as zero: 'etalcl', 'etalvc', 'etalvp', 'etalq'
#> Warning: No sigma parameters in the model
#> ℹ omega/sigma items treated as zero: 'etalcl', 'etalvc', 'etalq', 'etalvp'
#> Warning: No sigma parameters in the model
#> ℹ omega/sigma items treated as zero: 'etalcl', 'etalvc', 'etalvp', 'etalq'
#> Warning: No sigma parameters in the model
#> ℹ omega/sigma items treated as zero: 'etalcl', 'etalvc', 'etalq', 'etalvp'
#> Warning: No sigma parameters in the model
#> ℹ omega/sigma items treated as zero: 'etalcl', 'etalvc', 'etalvp', 'etalq'
#> Warning: No sigma parameters in the model
#> ℹ omega/sigma items treated as zero: 'etalcl', 'etalvc', 'etalq', 'etalvp'
#> Warning: No sigma parameters in the model
#> ℹ omega/sigma items treated as zero: 'etalcl', 'etalvc', 'etalvp', 'etalq'
#> Warning: No sigma parameters in the model
#> ℹ omega/sigma items treated as zero: 'etalcl', 'etalvc', 'etalq', 'etalvp'
# Franzese 2022 Table 2 (erratum), phase I and phase II cUTI cohorts: no
# ceftazidime infection-type clearance effect applies to either.
table2 <- tribble(
~cohort, ~aucCaz, ~aucAvi,
"Phase I, 3 months to <2 years", 888, 143,
"Phase I, 2 to <6 years", 794, 127,
"Phase I, 6 to <12 years", 814, 121,
"Phase I, 12 to <18 years", 821, 124,
"Phase II cUTI, 3 to <6 months", 736, 132,
"Phase II cUTI, 6 months to <1 year", 859, 113,
"Phase II cUTI, 1 to <2 years", 883, 117,
"Phase II cUTI, 2 to <6 years", 789, 123,
"Phase II cUTI, 6 to <12 years", 993, 153,
"Phase II cUTI, 12 to <18 years", 843, 139
) |>
mutate(ratio = aucCaz / aucAvi / 4)
tibble(
Quantity = c(
"Model typical CLavi / CLcaz, children > 2 y (range over WT 10-45 kg, NCrCL 90-150)",
"Table 2 post hoc CLavi / CLcaz, median of 10 pediatric cohorts (range)"
),
Value = c(
sprintf("%.2f-%.2f", min(ratioGrid$ratio), max(ratioGrid$ratio)),
sprintf("%.2f (%.2f-%.2f)", median(table2$ratio), min(table2$ratio), max(table2$ratio))
)
) |>
knitr::kable(caption = "Avibactam-to-ceftazidime clearance ratio: typical values against the fitted children.")| Quantity | Value |
|---|---|
| Model typical CLavi / CLcaz, children > 2 y (range over WT 10-45 kg, NCrCL 90-150) | 1.28-1.53 |
| Table 2 post hoc CLavi / CLcaz, median of 10 pediatric cohorts (range) | 1.61 (1.39-1.90) |
# Both sides are deterministic transcriptions / typical values.
stopifnot(median(table2$ratio) > max(ratioGrid$ratio))The fitted children’s median ratio exceeds the largest typical-value
ratio the two models produce over that covariate range. Because the
ceftazidime simulation reproduces Table 3 (which used the same
resampling), the excess is on the avibactam side: the fitted children’s
avibactam clearance is on average higher than the avibactam typical
value predicts, by roughly the amount the simulation above overshoots
Table 3 on AUCss,0-24. The larger overshoot on
Cmax,ss points to the same kind of offset in the resampled
central-volume random effects. That is a property of the published model
– its avibactam typical values are not centred on the pediatric data –
not an extraction error, and a parametric simulation of children from
this model will over-predict avibactam exposure by about this much.
Joint PK/PD target attainment (Table 4)
The joint target is 50% of the dosing interval with free ceftazidime
above the MIC (8 mg/L, fu = 0.85) and free avibactam above
1 mg/L (fu = 0.92), achieved simultaneously.
fT <- sim |>
filter(time < 8) |>
mutate(free = ifelse(drug == "Ceftazidime", 0.85 * Cc, 0.92 * Cc), thr = ifelse(drug == "Ceftazidime", 8, 1)) |>
group_by(drug, id) |>
summarise(ft = mean(free > thr), .groups = "drop") |>
pivot_wider(names_from = drug, values_from = ft) |>
filter(!is.na(Avibactam)) |>
left_join(cohort |> select(id, grp, ind, renal), by = "id")
ptaSim <- fT |>
group_by(renal, ind, grp) |>
summarise(
caz = 100 * mean(Ceftazidime >= 0.5), avi = 100 * mean(Avibactam >= 0.5),
joint = 100 * mean(Ceftazidime >= 0.5 & Avibactam >= 0.5), .groups = "drop"
)
table4 <- bind_rows(
tibble(renal = "Normal", grp = rep(grpLev, 3), ind = rep(c("cIAI", "cUTI", "HAP/VAP"), each = 7),
published = c(96, 90, 82, 82, 90, 93, 95, 99, 97, 94, 94, 98, 98, 97, 99, 97, 92, 92, 97, 98, 95)),
tibble(renal = "Mild", grp = rep(grpMild, 3), ind = rep(c("cIAI", "cUTI", "HAP/VAP"), each = 4),
published = c(99, 100, 100, 99, 99, 100, 100, 99, 99, 100, 100, 99))
)
ptaCmp <- inner_join(table4, ptaSim, by = c("renal", "ind", "grp"))
ptaCmp |>
mutate(across(c(caz, avi, joint), round)) |>
dplyr::rename(
`Renal function` = renal, Indication = ind, `Age group` = grp,
`Published joint PTA (%)` = published, `Ceftazidime PTA (%)` = caz,
`Avibactam PTA (%)` = avi, `Joint PTA (%)` = joint
) |>
knitr::kable(caption = "Joint PTA at MIC 8 mg/L: Franzese 2022 Table 4 against this simulation.")| Renal function | Age group | Indication | Published joint PTA (%) | Ceftazidime PTA (%) | Avibactam PTA (%) | Joint PTA (%) |
|---|---|---|---|---|---|---|
| Normal | 12 to <18 years | cIAI | 96 | 90 | 99 | 89 |
| Normal | 6 to <12 years | cIAI | 90 | 85 | 100 | 85 |
| Normal | 2 to <6 years | cIAI | 82 | 66 | 97 | 65 |
| Normal | 1 to <2 years | cIAI | 82 | 73 | 96 | 69 |
| Normal | 6 to <12 months | cIAI | 90 | 81 | 100 | 81 |
| Normal | 3 to <6 months | cIAI | 93 | 82 | 98 | 80 |
| Normal | Adults | cIAI | 95 | 89 | 100 | 89 |
| Normal | 12 to <18 years | cUTI | 99 | 91 | 100 | 91 |
| Normal | 6 to <12 years | cUTI | 97 | 94 | 100 | 94 |
| Normal | 2 to <6 years | cUTI | 94 | 78 | 96 | 74 |
| Normal | 1 to <2 years | cUTI | 94 | 84 | 98 | 82 |
| Normal | 6 to <12 months | cUTI | 98 | 91 | 97 | 89 |
| Normal | 3 to <6 months | cUTI | 98 | 92 | 100 | 92 |
| Normal | Adults | cUTI | 97 | 94 | 97 | 91 |
| Normal | 12 to <18 years | HAP/VAP | 99 | 95 | 100 | 95 |
| Normal | 6 to <12 years | HAP/VAP | 97 | 98 | 100 | 98 |
| Normal | 2 to <6 years | HAP/VAP | 92 | 88 | 95 | 84 |
| Normal | 1 to <2 years | HAP/VAP | 92 | 90 | 93 | 83 |
| Normal | 6 to <12 months | HAP/VAP | 97 | 87 | 97 | 84 |
| Normal | 3 to <6 months | HAP/VAP | 98 | 96 | 97 | 93 |
| Normal | Adults | HAP/VAP | 95 | 97 | 100 | 97 |
| Mild | 12 to <18 years | cIAI | 99 | 97 | 100 | 97 |
| Mild | 6 to <12 years | cIAI | 100 | 98 | 100 | 98 |
| Mild | 2 to <6 years | cIAI | 100 | 97 | 100 | 97 |
| Mild | Adults | cIAI | 99 | 98 | 100 | 98 |
| Mild | 12 to <18 years | cUTI | 99 | 100 | 99 | 99 |
| Mild | 6 to <12 years | cUTI | 100 | 100 | 100 | 100 |
| Mild | 2 to <6 years | cUTI | 100 | 95 | 100 | 95 |
| Mild | Adults | cUTI | 99 | 100 | 100 | 100 |
| Mild | 12 to <18 years | HAP/VAP | 99 | 100 | 100 | 100 |
| Mild | 6 to <12 years | HAP/VAP | 100 | 100 | 100 | 100 |
| Mild | 2 to <6 years | HAP/VAP | 100 | 97 | 100 | 97 |
| Mild | Adults | HAP/VAP | 99 | 100 | 99 | 99 |
stopifnot(
# Centre: the parametric simulation sits below the published values (see
# text), but by points, not tens of points.
median(ptaCmp$joint - ptaCmp$published) > -15,
median(ptaCmp$joint - ptaCmp$published) < 5,
# Structural: the 33% higher ceftazidime CL in cIAI lowers attainment
# against cUTI at the same ages. Pooled over the six pediatric age groups
# (600 subjects per side) so the margin, about 9 points in development
# runs, is several standard errors wide.
mean(ptaCmp$joint[ptaCmp$renal == "Normal" & ptaCmp$ind == "cIAI" & ptaCmp$grp != "Adults"]) <
mean(ptaCmp$joint[ptaCmp$renal == "Normal" & ptaCmp$ind == "cUTI" & ptaCmp$grp != "Adults"]),
# Mild renal impairment raises exposure and therefore attainment.
mean(ptaCmp$joint[ptaCmp$renal == "Mild"]) > mean(ptaCmp$joint[ptaCmp$renal == "Normal"])
)Ceftazidime is the limiting analyte almost everywhere: avibactam attainment is close to 100% in every arm. The simulation reproduces the paper’s pattern – attainment highest with mild renal impairment, lowest for cIAI children aged 1 to < 6 years, where the 33% higher ceftazidime clearance in cIAI bites hardest – but sits several points below Table 4. Two documented differences push it that way: the paper resampled post hoc random effects in pairs from the same fitted subject, which carries the positive correlation between the two drugs’ clearances into the joint target, whereas here the two models draw independently; and the paper’s resampled, shrinkage-reinflated random effects are not the same distribution as the OMEGA matrix used here.
Assumptions and deviations
-
Ceftazidime clearance is the Table S2 value, 7.75
L/h. The printed control stream’s
$THETAcarries 9.1259 for CL while every other theta agrees with Table S2 to rounding. Table S2 is the final run (its footnote identifies it as run121, and the control stream’s header says run121 re-parameterized the weight function of run120, the likely source of the initial values). The simulated adult and pediatric ceftazidime AUCs above match Table 3 with 7.75; with 9.13 every arm would sit about 15% low. -
The avibactam control stream holds initial values.
Its
$THETAmatches the Li 2019 estimates and its$OMEGA BLOCK(4)is a 0.1 / 0.001 starting guess; all avibactam values are from Table S3. Its functional forms are used as printed. -
Covariates held at zero in the final avibactam control
stream (sex, race, age powers, pediatric-study CL and Vc terms,
the study-15 terms) are omitted from
model(); sex, race and augmented renal clearance are listed undercovariatesDataExcluded. The augmented-renal-clearance multiplierTH13is held at 1, soRENAL_ARChas no effect. -
Residual strata. The avibactam
PH2flag tests the adult phase 2 study numbers (STDY = 2001/2002), notPHASE, so pediatric phase II records fall in the avibactam phase I stratum. The ceftazidime stream testsPHASE = 2 or 3, which includes the pediatric phase II studies (the control streams’STDY = 15branch shows those studies carryPHASE = 2). The pediatric phase 2 studies therefore have their own indicator,STUDY_CAZAVI_PED_PHASE2, used only by the ceftazidime model. -
Pediatric phase I subjects (suspected or confirmed
infection) are taken to carry no infection-type indicator
(
DIS_*= 0); the paper does not state theirPOPcode. - The virtual cohort is a reconstruction. Child weights are drawn around approximate growth-chart medians for age, child NCrCL (normal stratum) lognormally around 125 mL/min/1.73 m^2 truncated at 80 (the Table 1 cohort medians are 89-130), adult weights and NCrCL from the Li 2019 adult summaries, and race from Table 1 (children) and Li 2019 (adults). The Pfizer covariate database the paper bootstrapped is not public.
- Ventilation and APACHE II in the simulation. As in the Li 2019 vignette, a third of HAP/VAP subjects are ventilated (138 of 413 adult nosocomial-pneumonia subjects had VAP) and 39% of adult cIAI and HAP/VAP subjects have an elevated APACHE II score (438 of 1,115); children have no APACHE score.
-
Between-subject variability is drawn from the
published OMEGA matrices, independently for the two analytes, whereas
the paper resampled paired, shrinkage-reinflated post hoc random
effects. This explains the avibactam exposure offset and the lower joint
PTA discussed above. A few avibactam draws (extreme
QandVc) fail the steady-state solve and are dropped. - Table 2 headings. The original Table 2 transposed the ceftazidime and avibactam column headings; the values used here follow the 2024 erratum.