Simulate an IQRmodel and scan the sensitivity of a specified parameter
sim_IQRmodel_sensitivityScan.Rd
Simulate an IQRmodel and scan the sensitivity of a specified parameter
sim_IQRmodel_sensitivityScan(
simSpec,
dFC,
parName,
foldChanges = 10^(seq(-2, 2)),
measure.vars
)
Arguments
- simSpec
- dFC
data.table of fold changes: data.table(sensitivityScanId (optional, will be created if non-existent), parameter1 = foldchanges1, ...). Can be missing, then parName and foldChanges are used to create a default dFC table
- parName
Used only if missing(dFC). Character of the parameter to scan
- foldChanges
Used only if missing(dFC). Numerical vector of fold changes
- measure.vars
Character vector of variables/states to keep in final simulation result. More flexible than FLAGoutputsOnly. Can be missing. See examples.
Value
Simulation result in long format with sensitivityScan information: data.table(ID (used for simulation), ID0 (original ID in simSpec$IQReventTable), TIME, modelEntityId, simValue, sensitivityScanId)
See also
Other Simulation:
IQRdosing()
,
IQReventTable()
,
createSimIQRmodelSpec()
,
create_IQReventData()
,
create_IQReventTable()
,
extract_IQRdosing()
,
getDefaultEventTable()
,
is_IQRdosing()
,
is_IQReventTable()
,
is_IQRsimres()
,
is_IQRsimresMulti()
,
plot.IQRsimres()
,
plot.IQRsimresMulti()
,
print.IQRdosing()
,
print.IQReventTable()
,
print.IQRsimres()
,
print.IQRsimresMulti()
,
rbind_IQRdosing()
,
sim_IQRmodel()
,
sim_IQRmodel_strict()
Other Sensitivity analysis:
create_dFC_singlePar()
,
explodeEventTable_sensitivityScan()
Examples
if (FALSE) { # \dontrun{
td <- tempdir()
libraryPK_IQRtools(td)
fl <- file.path(td, "ModelLibraryPK/model_2cpt_linsat_iv.txt")
m <- IQRmodel(fl)
simSpec <- createSimIQRmodelSpec(m, simtime = seq(0,10,length.out = 101), dosingTable = IQRdosing(c(1,3,5),1,10,1))
simSpec$eventTable$TINF[1] <- 0.0001
# Scan a single parameter with parName and foldChanges
simres <- sim_IQRmodel_sensitivityScan(simSpec, parName = "CL", foldChanges = 10^(seq(-2,2)))
IQRggplot(simres, aes(TIME, simValue, color = sensitivityScanId)) +
facet_wrap(~modelEntityId, scales = "free") +
scale_y_log10_IQRtools() +
geom_line()
# Create custom dFC to scan arbitrary values
dFC <- data.table::data.table(sensitivityScanId = c("none", "(CL,Vc)*10", "CL/10,Vc*100"), CL = c(1,10,1/10), Vc = c(1,10,100))
simres <- sim_IQRmodel_sensitivityScan(simSpec, dFC)
IQRggplot(simres, aes(TIME, simValue, color = sensitivityScanId)) +
facet_wrap(~modelEntityId, scales = "free") +
scale_y_log10_IQRtools() +
geom_line()
# Use of measure.vars
simres <- sim_IQRmodel_sensitivityScan(simSpec, parName = "CL", foldChanges = 10^(seq(-2,2)), measure.vars = c("Ap1", "Cc"))
IQRggplot(simres, aes(TIME, simValue, color = sensitivityScanId)) +
facet_wrap(~modelEntityId, scales = "free") +
scale_y_log10_IQRtools() +
geom_line()
# Multiple IDs in original eventTable
eventTable <- IQReventTable(data.frame(ID = c(1,2,2), TIME = c(0,0,1), ADM = 1, AMT = c(1,0.5,0.5), TINF = 0.0001, CL = 3), regression = "CL")
simSpec <- createSimIQRmodelSpec(m, simtime = seq(0,10,length.out = 101), eventTable = eventTable)
simres <- sim_IQRmodel_sensitivityScan(simSpec, parName = "CL", foldChanges = 10^(seq(-2,2)))
IQRggplot(simres, aes(TIME, simValue, color = sensitivityScanId)) +
facet_wrap(~modelEntityId, scales = "free") +
scale_y_log10_IQRtools() +
geom_line(aes(linetype = factor(ID0)))
} # }