| mrgsim {mrgsolve} | R Documentation |
Simulate from a model object
Description
This function sets up the simulation run from data stored in the model
object as well as arguments passed in. Use mrgsim_q() instead
to benchmark mrgsolve or to do repeated quick simulation for tasks like
parameter optimization, sensitivity analyses, or optimal design. See
mrgsim_variants for other mrgsim-like functions that have more focused
inputs. mrgsim_df coerces output to data.frame prior to returning.
Usage
mrgsim(x, data = NULL, idata = NULL, events = NULL, nid = NULL, ...)
mrgsim_df(..., output = "df")
do_mrgsim(
x,
data,
idata = no_idata_set(),
carry_out = carry.out,
carry.out = character(0),
recover = character(0),
seed = as.integer(NA),
Request = character(0),
output = NULL,
capture = NULL,
obsonly = FALSE,
obsaug = FALSE,
tgrid = NULL,
etasrc = "omega",
recsort = 1,
deslist = list(),
descol = character(0),
filbak = TRUE,
tad = FALSE,
nocb = TRUE,
skip_init_calc = FALSE,
ss_n = 500,
ss_fixed = FALSE,
interrupt = 256,
...
)
Arguments
x |
the model object |
data |
NMTRAN-like data set (see |
idata |
a matrix or data frame of model parameters,
one parameter per row (see |
events |
an event object |
nid |
integer number of individuals to simulate; only used if idata and data are missing |
... |
passed to |
output |
if |
carry_out |
numeric data items to copy into the output. |
carry.out |
soon to be deprecated; use |
recover |
character column names in either |
seed |
deprecated. |
Request |
compartments or captured variables to retain
in the simulated output; this is different than the |
capture |
character file name used for debugging (not related
to |
obsonly |
if |
obsaug |
augment the data set with time grid observations; when
|
tgrid |
a tgrid object; or a numeric vector of simulation times
or another object with an |
etasrc |
source for |
recsort |
record sorting flag. Default value is 1. Possible values
are 1,2,3,4: 1 and 2 put doses in a data set after padded observations at
the same time; 3 and 4 put those doses before padded observations at the
same time. 2 and 4 will put doses scheduled through |
deslist |
a list of tgrid objects. |
descol |
the name of a column for assigning designs. |
filbak |
carry data items backward when the first data set row has time greater than zero. |
tad |
when |
nocb |
if |
skip_init_calc |
don't use |
ss_n |
maximum number of iterations for determining steady state for
the PK system; a warning will be issued if steady state is not achieved
within |
ss_fixed |
if |
interrupt |
integer check user interrupt interval; when |
Details
Use
mrgsim_df()to return a data frame rather thanmrgsimsobjectBoth
dataandidatawill be coerced to numeric matrix-
carry_outcan be used to insert data columns into the output data set. This is partially dependent on the nature of the data brought into the problem When using
dataandidatatogether, an error is generated if an ID occurs indatabut notidata. Also, when looking up data inidata, ID inidatais assumed to be uniquely keyed to ID indata. No error is generated if ID is duplicated indata; parameters will be used from the first occurrence found inidata-
carry_out:idatais assumed to be individual-level and variables that are carried fromidataare repeated throughout the individual's simulated data. Variables carried fromdataare carried via last-observation carry forward.NAis returned from observations that are inserted into simulated output that occur prior to the first record indata -
recover: this is similar tocarry_outwith respect to end result, but it uses a different process. Columns to be recovered are cached prior to running the simulation, and then joined back on to the simulated data. So, whereascarry_outwill only accept numeric data items,recovercan handle data frame columns of any type. There is a small decrease in performance withrecovercompared tocarry_out, but it is likely that the performance difference is difficult to perceive (when the simulation runs very fast) or only a small fractional increase in run time when the simulation is very large. And any performance hit is likely to be well worth it in light of the convenience gain. Just think carefully about using this feature when every millisecond counts. -
etasrc: this argument lets you control whereETA(n)come from in the model. Whenetasrcis set to"omega"(the default),ETAswill be simulated from a multivariate normal distribution defined by the$OMEGAblocks in the model. Alternatively, inputdataoridatasets can be used to pass in fixedETA(n)by settingetasrcto"data","idata","data.all"or"idata.all". Whenetasrcis set to"data"or"data.all", the input data set will be scanned for columns calledETA1,ETA2, ...,ETAnand those values will be copied into the appropriate slot in theETA()vector. Only the first record for each individual will be copied intoETA(); all records after the first will be ignored. When there are more than9ETAsin a model, NONMEM will start naming the outputsET10,ET11etc rather thanETA10andETA11. When mrgsolve is looking for these columns, it will first search, for example,ET10and use that value if it is found. IfET10isn't found and there are more than9ETAs, then it will also search forETA10. An error will be generated in case mrgsolve finds both theETAandETname variant for the tenth and higherETA(e.g. it is an error to have bothETA10andET10in the data set). When mrgsolve is searching forETAcolumns in the data set, it will only look forETAnup to the number of rows (or columns) in all the model$OMEGAblocks. For example, if$OMEGAis 5x5, onlyETA1throughETA5will be searched. An error will be generated in case mrgsolve finds no columns withETAnnames and something other thanetasrc = "omega"was passed. Whenetasrc = "data"and anETAncolumn is missing from the data set, the missingETA()will be set to0. Alternatively, the user can passetasrc = "data.all"which causes an error to be generated if anyETAnis missing from the data set. Use this option when you intend to have allETAsattached to the data set and want an error generated if mrgsolve finds one or more of them is missing. Usingetasrc ="idata"or"idata.all", the behavior is identical to"data"(or"data.all"), except mrgsolve will look at the idata set rather than data set.
Value
An object of class mrgsims
See Also
Examples
## example("mrgsim")
e <- ev(amt = 1000)
mod <- mrgsolve::house()
out <- mod %>% ev(e) %>% mrgsim()
plot(out)
out <- mod %>% ev(e) %>% mrgsim(end=22)
out
data(exTheoph)
out <- mod %>% data_set(exTheoph) %>% mrgsim()
out
out <- mod %>% mrgsim(data=exTheoph)
out <- mrgsim(mod, data=exTheoph, obsonly=TRUE)
out
out <- mod %>% mrgsim(data=exTheoph, obsaug=TRUE, carry_out="a.u.g")
out
out <- mod %>% ev(e) %>% mrgsim(outvars="CP,RESP")
out
a <- ev(amt = 1000, group = 'a')
b <- ev(amt = 750, group = 'b')
data <- as_data_set(a,b)
out <- mrgsim_d(mod, data, recover="group")
out