Skip to contents

Simulate with all variabilities

Let’s use a simple 1-compartment model with absorption compartment to illustrate the different levels of variabilities.

ref_model <- model_suite$nonmem$advan2_trans2
ref_model
## [MAIN]
## KA=THETA_KA*exp(ETA_KA)
## CL=THETA_CL*exp(ETA_CL)
## V=THETA_V*exp(ETA_V)
## S2=V
## 
## [ODE]
## d/dt(A_DEPOT)=-KA*A_DEPOT
## d/dt(A_CENTRAL)=-CL*A_CENTRAL/V + KA*A_DEPOT
## d/dt(A_OUTPUT)=CL*A_CENTRAL/V
## F=A_CENTRAL/S2
## 
## [ERROR]
## CONC=F
## CONC_ERR=CONC*(EPS_PROP + 1)
## 
## 
## THETA's:
##   name index value   fix
## 1   KA     1     1 FALSE
## 2   CL     2     5 FALSE
## 3    V     3    80 FALSE
## OMEGA's:
##   name index index2 value   fix type
## 1   KA     1      1 0.025 FALSE  var
## 2   CL     2      2 0.025 FALSE  var
## 3    V     3      3 0.025 FALSE  var
## SIGMA's:
##   name index index2 value   fix type
## 1 PROP     1      1 0.025 FALSE  var
## No variance-covariance matrix
## 
## Compartments:
## A_DEPOT (CMT=1)
## A_CENTRAL (CMT=2)
## A_OUTPUT (CMT=3)

We’re going to use a very basic dataset. 1000 mg QD shall be administered for a week.

ds <- Dataset(25) %>%
  add(Bolus(time = 0, amount = 1000, ii = 24, addl = 6)) %>%
  add(Observations(times = seq(0, 24 * 7, by = 4)))

All subjects are different due to IIV and RUV.

results <- simulate(model = ref_model, dataset = ds, seed = 1)
spaghetti_plot(results, "CONC_ERR")

Simulate without RUV

Disabling RUV is done as follows:

model <- ref_model %>%
  disable(c("RUV"))
model@parameters
## THETA's:
##   name index value   fix
## 1   KA     1     1 FALSE
## 2   CL     2     5 FALSE
## 3    V     3    80 FALSE
## OMEGA's:
##   name index index2 value   fix type
## 1   KA     1      1 0.025 FALSE  var
## 2   CL     2      2 0.025 FALSE  var
## 3    V     3      3 0.025 FALSE  var
## SIGMA's:
##   name index index2 value   fix type
## 1 PROP     1      1     0 FALSE  var
## No variance-covariance matrix

In that case, CONC_ERR (the observed concentration) is identical as CONC (the model-simulated plasma concentration).

results <- simulate(model = model, dataset = ds, seed = 1)
spaghetti_plot(results, "CONC_ERR")

spaghetti_plot(results, "CONC")

Simulate without RUV and IIV

Disabling RUV and IIV is done as follows:

model <- ref_model %>%
  disable(c("IIV", "RUV"))
model@parameters
## THETA's:
##   name index value   fix
## 1   KA     1     1 FALSE
## 2   CL     2     5 FALSE
## 3    V     3    80 FALSE
## OMEGA's:
##   name index index2 value   fix type
## 1   KA     1      1     0 FALSE  var
## 2   CL     2      2     0 FALSE  var
## 3    V     3      3     0 FALSE  var
## SIGMA's:
##   name index index2 value   fix type
## 1 PROP     1      1     0 FALSE  var
## No variance-covariance matrix

Now, the typical profile is shown for all subjects.

results <- model %>%
  simulate(dataset = ds, seed = 1)
spaghetti_plot(results, "CONC_ERR")