The purpose of this method is to check if a certain algorithm for fitting nonlinear hierarchical models (also known as nonlinear mixed-effects models) will reliably yield results that are sufficiently similar to each other, if started with a certain range of reasonable starting parameters. It is inspired by the article on practical identifiabiliy in the frame of nonlinear mixed-effects models by Duchesne et al (2021).

multistart(object, n = 50, cores = 1, ...)

# S3 method for saem.mmkin
multistart(object, n = 50, cores = 1, ...)

# S3 method for multistart
print(x, ...)

# S3 method for multistart
parms(object, ...)

Arguments

object

The fit object to work with

n

How many different combinations of starting parameters should be used?

cores

How many fits should be run in parallel?

...

Passed to the update function.

x

The multistart object to print

Value

A list of saem.mmkin objects, with class attributes 'multistart.saem.mmkin' and 'multistart'.

Details

Currently, parallel execution of the fits is only supported using parallel::mclapply, i.e. not available on Windows.

In case the online version of this help page contains error messages in the example code and no plots, this is due to the multistart method not working when called by pkgdown. Please refer to the online vignette in this case.

References

Duchesne R, Guillemin A, Gandrillon O, Crauste F. Practical identifiability in the frame of nonlinear mixed effects models: the example of the in vitro erythropoiesis. BMC Bioinformatics. 2021 Oct 4;22(1):478. doi: 10.1186/s12859-021-04373-4.

See also

Examples

# \dontrun{
library(mkin)
dmta_ds <- lapply(1:7, function(i) {
  ds_i <- dimethenamid_2018$ds[[i]]$data
  ds_i[ds_i$name == "DMTAP", "name"] <-  "DMTA"
  ds_i$time <- ds_i$time * dimethenamid_2018$f_time_norm[i]
  ds_i
})
names(dmta_ds) <- sapply(dimethenamid_2018$ds, function(ds) ds$title)
dmta_ds[["Elliot"]] <- rbind(dmta_ds[["Elliot 1"]], dmta_ds[["Elliot 2"]])
dmta_ds[["Elliot 1"]] <- dmta_ds[["Elliot 2"]] <- NULL

f_mmkin <- mmkin("DFOP", dmta_ds, error_model = "tc", cores = 7, quiet = TRUE)
f_saem_full <- saem(f_mmkin)
f_saem_full_multi <- multistart(f_saem_full, n = 16, cores = 16)
#> Warning: all scheduled cores encountered errors in user code
parhist(f_saem_full_multi, lpos = "bottomright")
#> Error in UseMethod("parms", object): no applicable method for 'parms' applied to an object of class "try-error"

f_saem_reduced <- update(f_saem_full, covariance.model = diag(c(1, 1, 0, 1)))
f_saem_reduced_multi <- multistart(f_saem_reduced, n = 16, cores = 16)
#> Warning: all scheduled cores encountered errors in user code
parhist(f_saem_reduced_multi, lpos = "bottomright")
#> Error in UseMethod("parms", object): no applicable method for 'parms' applied to an object of class "try-error"
# }