Overview
The final covariate model included the following features:
Two compartment disposition parameterized in terms of:
apparent clearance (CL/F)
central and peripheral volumes (V2/F + V3/F)
First-order absorption (KA)
First-order elimination
Allometric scaling- clearances and volumes
Covariate effects
CL/F + V2/F + V3/F \(\sim\) WT (allometric, fixed)
CL/F \(\sim\) EGFR
CL/F \(\sim\) AGE
CL/F \(\sim\) ALB
Subject-level random effects
Parameters
Log-normal distribution
Proportional residual error
Final covariate model
The final model included fixed effects of body weight on all CL/F and V/F terms. Additionally, the effects of age, eGFR, and albumin were estimated on drug CL/F.
\[
CL/F_i = e^{(\theta_{3} + \text{WT}_\mathit{CL/F} + \text{EGFR}_\mathit{CL/F} +
\text{AGE}_\mathit{CL/F} + \text{ALB}_\mathit{CL/F} + \eta_{3i})}
\]
\[
\mathit{V2/F_i}=e^{(\theta_{2} + \text{WT}_{V/F} + \eta_{2i})} \\
\] \[
\mathit{Q/F_i}=e^{(\theta_{5} + \text{WT}_{Q/F})}
\] \[
\mathit{V3/F_i}=e^{(\theta_{4} + \text{WT}_{V/F})}
\]
\[
\mathit{KA_i}=e^{(\theta_{1} + \eta_{1i})} \\
\]
where
\[
\text{WT}_\mathit{CL/F} = 0.75 \cdot \log\big(\text{WT}_i/70\big)
\]
\[
\text{EGFR}_\mathit{CL/F} = \theta_6 \cdot \log\big(\text{EGFR}_i/90\big)
\]
\[
\text{AGE}_\mathit{CL/F} = \theta_7 \cdot \log\big(\text{AGE}_i/35\big)
\]
\[
\text{ALB}_\mathit{CL/F} = \theta_8 \cdot \log\big(\text{ALB}_i/4.5\big)
\]
\[
\text{WT}_\mathit{V/F} = 1.00 \cdot \log\big(\text{WT}_i/70\big)
\]
\[
\text{WT}_\mathit{Q/F} = 0.75 \cdot \log\big(\text{WT}_i/70\big)
\]
Residual error model
\[
Y_\mathit{i,y} = \widehat{Y_\mathit{i,j}} \cdot \big(1+\varepsilon_\mathit{i,j}\big)
\]
where
\(Y_\mathit{i,j}\) is the jth observed concentration in the ith individual
\(\widehat{Y_\mathit{i,j}}\) is the jth model predicted concentration in the ith individual
\(\varepsilon_\mathit{i,j}\) is distributed \(N\big(0,\Sigma)\)
Prior distributions
Models were fit with weakly-informative priors. The NONMEM® $PRIOR NWPRI
subroutine was used to select normal distribution priors for THETAs and inverse Wishart distribution priors for SIGMAs. Variances of 10 were used for all THETA priors (with parameters estimated on the log scale), and the degrees of freedom for OMEGA and SIGMA priors were 3 and 1, respectively, corresponding to the block size of each matrix.
Example simulation
library (mrgsolve)
library (dplyr)
library (here)
library (ggplot2)
library (forcats)
library (patchwork)
theme_set (theme_bw ())
mod <- mread (here ("script/model/1100.mod" )) %>% zero_re ()
data <- as_data_set (
evd (amt = 25 ),
evd (amt = 25 , ii = 24 , addl = 10 )
)
out <- mrgsim (mod, data, output = "df" , delta = 0.1 , end = 480 )
out <- mutate (
out,
lbl = case_when (
ID== 1 ~ "Single dose" ,
ID== 2 ~ "Multiple dose, q24h x10"
),
lbl = forcats:: fct_inorder (lbl)
)
b <- filter (out, ID== 2 )
a <- filter (out, ID== 1 & TIME <= 96 )
pa <- ggplot (a) +
geom_line (aes (TIME, Y)) +
facet_wrap (~ lbl, scales = "free_x" ) +
labs (x = "Time (hours)" , y = "Concentration (ng/mL)" ) +
scale_x_continuous (breaks = seq (0 ,96 ,8 )) +
scale_y_continuous (limits = c (0 , 600 ))
pb <-
ggplot (b) +
geom_line (aes (TIME/ 24 , Y)) +
facet_wrap (~ lbl, scales = "free_x" ) +
labs (x = "Time (days)" , y = "" ) +
scale_x_continuous (breaks = seq (0 ,20 ,2 )) +
scale_y_continuous (limits = c (0 , 600 ))
Model source code
$PROBLEM From bbr: see 1100.yaml for details
$INPUT C NUM ID TIME SEQ CMT EVID AMT DV AGE WT HT EGFR ALB BMI SEX AAG
SCR AST ALT CP TAFD TAD LDOS MDV BLQ PHASE
$DATA ../../../data/derived/pk.csv IGNORE=(C='C', BLQ=1)
$SUBROUTINE ADVAN4 TRANS4
$PK
;log transformed PK parms
CLEGFR = LOG(EGFR/90) * THETA(6)
CLAGE = LOG(AGE/35) * THETA(7)
CLALB = LOG(ALB/4.5) * THETA(8)
V2WT = LOG(WT/70)
CLWT = LOG(WT/70) * 0.75
V3WT = LOG(WT/70)
QWT = LOG(WT/70) * 0.75
MU_1 = THETA(1)
MU_2 = THETA(2) + V2WT
MU_3 = THETA(3) + CLWT + CLEGFR + CLAGE + CLALB
MU_4 = THETA(4) + V3WT
MU_5 = THETA(5) + QWT
KA = EXP(MU_1 + ETA(1))
V2 = EXP(MU_2 + ETA(2))
CL = EXP(MU_3 + ETA(3))
V3 = EXP(MU_4 + ETA(4))
Q = EXP(MU_5 + ETA(5))
S2 = V2/1000 ; dose in mcg, conc in mcg/mL
$ERROR
IPRED = F
Y = IPRED * (1 + EPS(1))
$THETA
; log values
(0.5) ; 1 KA (1/hr) - 1.5
(3.5) ; 2 V2 (L) - 60
(1) ; 3 CL (L/hr) - 3.5
(4) ; 4 V3 (L) - 70
(2) ; 5 Q (L/hr) - 4
(1) ; 6 CLEGFR~CL ()
(1) ; 7 AGE~CL ()
(0.5) ; 8 ALB~CL ()
$OMEGA BLOCK(3)
0.2 ; ETA(KA)
0.01 0.2 ; ETA(V2)
0.01 0.01 0.2 ; ETA(CL)
$OMEGA
0.025 FIX ; ETA(V3)
0.025 FIX ; ETA(Q)
$SIGMA
0.05 ; 1 pro error
$PRIOR NWPRI
$THETAP
(0.5) FIX ; 1 KA (1/hr) - 1.5
(3.5) FIX ; 2 V2 (L) - 60
(1) FIX ; 3 CL (L/hr) - 3.5
(4) FIX ; 4 V3 (L) - 70
(2) FIX ; 5 Q (L/hr) - 4
(1) FIX ; 6 CLEGFR~CL ()
(1) FIX ; 7 AGE~CL ()
(0.5) FIX ; 8 ALB~CL ()
$THETAPV BLOCK(8) VALUES(10, 0) FIX
$OMEGAP BLOCK(3) VALUES(0.2, 0.01) FIX
$OMEGAPD (3 FIX)
$SIGMAP
0.05 FIX ; 1 pro error
$SIGMAPD (1 FIX)
$EST METHOD=CHAIN FILE=1100.chn NSAMPLE=4 ISAMPLE=0 SEED=1 CTYPE=0 IACCEPT=0.3 DF=10 DFS=0
$EST METHOD=NUTS AUTO=2 CTYPE=0 OLKJDF=2 OVARF=1 SEED=1 NBURN=250 NITER=500 NUTS_DELTA=0.95 PRINT=10 MSFO=./1100.msf RANMETHOD=P PARAFPRINT=10000 BAYES_PHI_STORE=1
$TABLE NUM CL V2 Q V3 KA ETAS(1:LAST) EPRED IPRED NPDE EWRES NOPRINT ONEHEADER FILE=1100.tab RANMETHOD=P
[ prob ]
1100
[ pkmodel ] cmt = "GUT,CENT,PERIPH" , depot = TRUE
[ param ]
WT = 70
EGFR = 90
AGE = 35
ALB = 4.5
[ nmext ]
path = '../../ model/ pk/ 1100 / 1100 - 1 / 1100 - 1. ext '
root = 'cppfile'
[ main ]
double CLEGFR = log( EGFR/ 90 ) * THETA6;
double CLAGE = log( AGE/ 35 ) * THETA7;
double CLALB = log( ALB/ 4.5 ) * THETA8;
double V2WT = log( WT/ 70 );
double CLWT = log( WT/ 70 ) * 0.75 ;
double V3WT = log( WT/ 70 );
double QWT = log( WT/ 70 ) * 0.75 ;
capture KA = exp( THETA1 + ETA( 1 ));
capture V2 = exp( THETA2 + V2WT + ETA( 2 ));
capture CL = exp( THETA3 + CLWT + CLEGFR + CLAGE + CLALB + ETA( 3 ));
capture V3 = exp( THETA4 + V3WT + ETA( 4 ));
capture Q = exp( THETA5 + QWT + ETA( 5 ));
double S2 = V2/ 1000 ; //; dose in mcg, conc in mcg/mL
[ table ]
capture IPRED = CENT/ S2;
capture Y = IPRED * ( 1 + EPS( 1 ));