Skip to contents

Add residual variability

The best way to simulate with residual variability is to include the it in the estimation control stream as described in this vignette. NMsim currently does not provide any automated way to add simulation of residual variability with Nonmem. It does provide a method to simulate residual variability in R, based on the Nonmem parameter estimates. This should only be used in case one has an existing Nonmem without residual variability simulated, and it is not feasible to modify the model control stream for some reason. The function is called addResVar() and supports additive, proportional, and combined (additive and proportional) error models. It can also add the residual error on log scale (exponential error model).

addResVar supports both estimation using $SIGMA and $THETA (in Nonmem). The user has to specify which of the two methods were used in the Nonmem model using the par.type argument. The other thing that must be specified is the parameter numbers for the standard deviations or variances. The model simulated in this vignette has this combined error model estimated using the $SIGMA matrix:

Y=F+F*ERR(1)+ERR(2)

We now specify for addResVar to find the variance for the proportional component in $SIGMA[1,1] and the one for the additive component in $SIGMA[2,2]. In this case where SIGMA is used, the off-diagonal (covariance) elements of the $SIGMA matrix are also used for the simulation.

file.mod <- file.project("nonmem/xgxr021.mod")

simres <- NMsim(file.mod=file.mod,
                data=dat.sim)
simres.with.resvar <- addResVar(simres,path.ext=fnExtension(file.mod,"ext"),par.type="SIGMA",prop=1,add=2)

If par.type="THETA" the default assumption is that the thetas represent standard deviation (in contrast to when using par.type="SIGMA"). This can be modified using the scale.par argument. There are arguments to avoid negative observations and several other features. But again, this should be the last resort.