Skip to contents

Runs linear and Michaelis-Menten elimination candidates by modifying only the elimination setting in the current model code.

Usage

step_elimination(
  dat,
  start.mod = NULL,
  search.space = "ivbase",
  no.cores = NULL,
  param_table = NULL,
  penalty.control = NULL,
  precomputed_results_file = NULL,
  filename = "test",
  foldername = NULL,
  .modEnv = NULL,
  verbose = TRUE,
  ...
)

Arguments

dat

A data frame containing pharmacokinetic data in standard nlmixr2 format, including "ID", "TIME", "EVID", and "DV", and may include additional columns.

start.mod

A named integer vector specifying the starting model code. If NULL, a base model is generated using base_model().

search.space

Character, one of "ivbase" or "oralbase". Default is "ivbase".

no.cores

Integer. Number of CPU cores to use. If NULL, uses rxode2::getRxThreads().

param_table

Optional data frame of initial parameter estimates. If NULL, the table is generated by auto_param_table().

penalty.control

A list of penalty control parameters defined by penaltyControl(), specifying penalty values used for model diagnostics during fitness evaluation.

precomputed_results_file

Optional path to a CSV file of previously computed model results used for caching.

filename

Optional character string used as a prefix for output files. Defaults to "test".

foldername

Character string specifying the name of the folder to be created in the current working directory to store intermediate results. If NULL, a name is generated automatically.

.modEnv

Optional internal environment used to store model indices and cached results across model-selection steps.

verbose

Logical. If TRUE, print progress messages.

...

Additional arguments passed to mod.run().

Value

A list with the following elements:

  • results_table: a data.frame with one row per candidate model, including model description, Fitness, AIC, BIC, and OFV.

  • best_code: named integer vector corresponding to the best candidate's model code.

  • best_row: one-row data.frame summarizing the best candidate.

Details

When mm = 0, any inter-individual variability term for Km (eta.km) present in the model code is automatically set to zero.

Author

Zhonghui Huang

Examples

# \donttest{
  dat <- pheno_sd
  param_table <- initialize_param_table()
  param_table$init[param_table$Name == "lcl"] <- log(0.008)
  param_table$init[param_table$Name == "lvc"] <- log(0.6)
  penalty.control = penaltyControl()
  penalty.control$penalty.terms = c("rse", "theta", "covariance")
  # Initialize start.mod with a base model
   start.mod <- base_model("ivbase")
  step_elimination(
    dat = dat,
    start.mod = start.mod,
    search.space = "ivbase",
    param_table = param_table,
    filename = "step_elim_test",
    penalty.control = penalty.control,
    saem.control = nlmixr2est::saemControl(logLik = TRUE,nBurn=15,nEm=15)
  )
#> [Success] Model file created:
#> /tmp/RtmpzBHrsN/mod1.txt
#> SAEM control (core) = niter=15|15; nBurn=15; nEm=15; seed=99; print=1
#> [Success] Model file created:
#> /tmp/RtmpzBHrsN/mod2.txt
#> $results_table
#>               Step          Penalty.terms
#> 1 Elimination type rse, theta, covariance
#> 2 Elimination type rse, theta, covariance
#>                                         Model.name          Model.code
#> 1   bolus_1cmpt_etaCL_FOelim_uncorrelated_combined 1,0,0,0,0,0,0,0,0,3
#> 2 bolus_1cmpt_etaVmax_MMelim_uncorrelated_combined 1,0,0,0,0,0,0,1,0,3
#>     Fitness      AIC      BIC       OFV
#> 1  1303.125 1277.908 1293.125  983.0373
#> 2 31358.822 1330.561 1348.822 1033.6900
#> 
#> $best_code
#> no.cmpt  eta.km  eta.vc  eta.vp eta.vp2   eta.q  eta.q2      mm   mcorr      rv 
#>       1       0       0       0       0       0       0       0       0       3 
#> 
#> $best_row
#>               Step          Penalty.terms
#> 1 Elimination type rse, theta, covariance
#>                                       Model.name          Model.code  Fitness
#> 1 bolus_1cmpt_etaCL_FOelim_uncorrelated_combined 1,0,0,0,0,0,0,0,0,3 1303.125
#>        AIC      BIC      OFV
#> 1 1277.908 1293.125 983.0373
#> 
# }