From fd205e13061de8abc595d266f3b0c7650773d442 Mon Sep 17 00:00:00 2001 From: Johannes Ranke Date: Fri, 16 Sep 2022 21:06:54 +0200 Subject: Improve multistart documentation, bugfix - Split out llhist and parhist documentation - Add example code for multistart - Create a multistart vignette, because the example code fails when run by pkgdown - Fix multistart for the case of mkin transformations in the saem fit --- GNUmakefile | 2 +- R/llhist.R | 30 ++ R/multistart.R | 91 ++--- R/parhist.R | 52 +++ _pkgdown.yml | 6 +- docs/dev/articles/index.html | 7 +- docs/dev/articles/web_only/multistart.html | 172 ++++++++ .../accessible-code-block-0.0.1/empty-anchor.js | 15 + .../figure-html/unnamed-chunk-2-1.png | Bin 0 -> 52067 bytes .../figure-html/unnamed-chunk-3-1.png | Bin 0 -> 50142 bytes docs/dev/authors.html | 5 +- docs/dev/index.html | 5 +- docs/dev/news/index.html | 5 +- docs/dev/pkgdown.yml | 3 +- docs/dev/reference/index.html | 15 +- docs/dev/reference/llhist.html | 147 +++++++ docs/dev/reference/multistart.html | 64 ++- docs/dev/reference/parhist.html | 156 ++++++++ docs/dev/sitemap.xml | 9 + log/check.log | 16 +- man/llhist.Rd | 27 ++ man/multistart.Rd | 47 ++- man/parhist.Rd | 34 ++ vignettes/web_only/multistart.R | 23 ++ vignettes/web_only/multistart.html | 441 +++++++++++++++++++++ vignettes/web_only/multistart.rmd | 48 +++ 26 files changed, 1319 insertions(+), 101 deletions(-) create mode 100644 R/llhist.R create mode 100644 R/parhist.R create mode 100644 docs/dev/articles/web_only/multistart.html create mode 100644 docs/dev/articles/web_only/multistart_files/accessible-code-block-0.0.1/empty-anchor.js create mode 100644 docs/dev/articles/web_only/multistart_files/figure-html/unnamed-chunk-2-1.png create mode 100644 docs/dev/articles/web_only/multistart_files/figure-html/unnamed-chunk-3-1.png create mode 100644 docs/dev/reference/llhist.html create mode 100644 docs/dev/reference/parhist.html create mode 100644 man/llhist.Rd create mode 100644 man/parhist.Rd create mode 100644 vignettes/web_only/multistart.R create mode 100644 vignettes/web_only/multistart.html create mode 100644 vignettes/web_only/multistart.rmd diff --git a/GNUmakefile b/GNUmakefile index ee276f89..114f7eef 100644 --- a/GNUmakefile +++ b/GNUmakefile @@ -105,7 +105,7 @@ vignettes: vignettes/mkin.html vignettes/FOCUS_D.html vignettes/FOCUS_L.html vig vignettes/web_only/%.html: vignettes/references.bib vignettes/web_only/%.rmd "$(RBIN)/Rscript" -e "tools::buildVignette(file = 'vignettes/web_only/$*.rmd', dir = 'vignettes/web_only', keep='mkin_benchmarks.rda')" -articles: vignettes/web_only/FOCUS_Z.html vignettes/web_only/compiled_models.html vignettes/web_only/benchmarks.html vignettes/web_only/dimethenamid_2018.html +articles: vignettes/web_only/FOCUS_Z.html vignettes/web_only/compiled_models.html vignettes/web_only/benchmarks.html vignettes/web_only/dimethenamid_2018.html vignettes/web_only/multistart.html pd: roxygen "$(RBIN)/Rscript" -e "pkgdown::build_site(run_dont_run = TRUE, lazy = TRUE)" diff --git a/R/llhist.R b/R/llhist.R new file mode 100644 index 00000000..6a6d93cd --- /dev/null +++ b/R/llhist.R @@ -0,0 +1,30 @@ +#' Plot the distribution of log likelihoods from multistart objects +#' +#' Produces a histogram of log-likelihoods, and an overlayed kernel density +#' estimate. In addition, the likelihood of the original fit is shown as +#' a red vertical line. +#' +#' @param object The [multistart] object +#' @param breaks Passed to [hist] +#' @param lpos Positioning of the legend. +#' @param main Title of the plot +#' @param \dots Passed to [hist] +#' @seealso [multistart] +#' @importFrom KernSmooth bkde +#' @export +llhist <- function(object, breaks = "Sturges", lpos = "topleft", main = "", ...) { + ll <- sapply(object, logLik) + kde <- KernSmooth::bkde(ll) + h <- hist(ll, freq = TRUE, + xlim = range(kde$x), + xlab = "", main = main, + ylab = "Frequency of log likelihoods", breaks = breaks, ...) + + freq_factor <- h$counts[1] / h$density[1] + lines(kde$x, freq_factor * kde$y) + abline(v = logLik(attr(object, "orig")), col = 2) + legend(lpos, inset = c(0.05, 0.05), bty = "n", + lty = 1, col = c(2, 1), + legend = c("original log likelihood", + "kernel density estimate")) +} diff --git a/R/multistart.R b/R/multistart.R index 52f279f0..6fd98522 100644 --- a/R/multistart.R +++ b/R/multistart.R @@ -10,24 +10,49 @@ #' 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](https://pkgdown.jrwb.de/mkin/dev/articles/web_only/multistart.html) +#' in this case. +#' #' @param object The fit object to work with #' @param n How many different combinations of starting parameters should be #' used? #' @param cores How many fits should be run in parallel? -#' @param \dots Passed to the update function, or to the basic plotting -#' function in the case of the graphical functions. +#' @param \dots Passed to the update function. #' @param x The multistart object to print -#' @param breaks Passed to [hist] -#' @param main title of the plot -#' @param lpos Positioning of the legend. #' @return A list of [saem.mmkin] objects, with class attributes #' 'multistart.saem.mmkin' and 'multistart'. +#' @seealso [parhist], [llhist] #' #' @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. #' @export +#' @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) +#' parhist(f_saem_full_multi, lpos = "bottomright") +#' +#' 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) +#' parhist(f_saem_reduced_multi, lpos = "bottomright") +#' } multistart <- function(object, n = 50, cores = 1, ...) { UseMethod("multistart", object) @@ -36,10 +61,13 @@ multistart <- function(object, n = 50, cores = 1, ...) #' @rdname multistart #' @export multistart.saem.mmkin <- function(object, n = 50, cores = 1, ...) { + + mmkin_parms <- parms(object$mmkin, errparms = FALSE, + transformed = object$transformations == "mkin") start_parms <- apply( - parms(object$mmkin, errparms = FALSE), 1, - function(x) stats::runif(n, min(x), max(x)) - ) + mmkin_parms, 1, + function(x) stats::runif(n, min(x), max(x))) + if (n == 1) dim(start_parms) <- c(1, length(start_parms)) res <- parallel::mclapply(1:n, function(x) { update(object, degparms_start = start_parms[x, ], ...) @@ -62,50 +90,3 @@ print.multistart <- function(x, ...) { parms.multistart <- function(object, ...) { t(sapply(object, parms)) } - -#' @rdname multistart -#' @importFrom stats median -#' @export -parhist <- function(object, lpos = "topleft", main = "", ...) { - orig <- attr(object, "orig") - orig_parms <- parms(orig) - start_parms <- orig$mean_dp_start - all_parms <- parms(object) - median_parms <- apply(all_parms, 2, median) - all_scaled_parms <- t(apply(all_parms, 1, function(x) x / median_parms)) - orig_scaled_parms <- orig_parms / median_parms - start_scaled_parms <- rep(NA_real_, length(orig_parms)) - names(start_scaled_parms) <- names(orig_parms) - start_scaled_parms[names(start_parms)] <- - start_parms / median_parms[names(start_parms)] - - boxplot(all_scaled_parms, log = "y", main = main, ...) - points(orig_scaled_parms, col = 2, cex = 2) - points(start_scaled_parms, col = 3, cex = 3) - legend(lpos, inset = c(0.05, 0.05), bty = "n", - pch = 1, col = 3:1, lty = c(NA, NA, 1), - legend = c( - "Starting parameters", - "Converged parameters", - "Multistart runs")) -} - -#' @rdname multistart -#' @importFrom KernSmooth bkde -#' @export -llhist <- function(object, breaks = "Sturges", lpos = "topleft", main = "", ...) { - ll <- sapply(object, logLik) - kde <- KernSmooth::bkde(ll) - h <- hist(ll, freq = TRUE, - xlim = range(kde$x), - xlab = "", main = main, - ylab = "Frequency of log likelihoods", breaks = breaks, ...) - - freq_factor <- h$counts[1] / h$density[1] - lines(kde$x, freq_factor * kde$y) - abline(v = logLik(attr(object, "orig")), col = 2) - legend(lpos, inset = c(0.05, 0.05), bty = "n", - lty = 1, col = c(2, 1), - legend = c("original log likelihood", - "kernel density estimate")) -} diff --git a/R/parhist.R b/R/parhist.R new file mode 100644 index 00000000..62f67249 --- /dev/null +++ b/R/parhist.R @@ -0,0 +1,52 @@ +#' Plot parameter distributions from multistart objects +#' +#' Produces a boxplot with all parameters from the multiple runs, scaled using +#' their medians. If parameter transformations were done by mkin (default in +#' [saem]), then the parameters found by saem are on the transformed scale, and +#' scaling is simply done by subtracting the median. If parameter +#' transformations were done by saemix, scaling is done by dividing by the +#' median, as in the paper by Duchesne et al. (2021). +#' +#' @param object The [multistart] object +#' @param \dots Passed to [boxplot] +#' @param main Title of the plot +#' @param lpos Positioning of the legend. +#' @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. +#' @seealso [multistart] +#' @importFrom stats median +#' @export +parhist <- function(object, lpos = "topleft", main = "", ...) { + orig <- attr(object, "orig") + orig_parms <- parms(orig) + start_parms <- orig$mean_dp_start + all_parms <- parms(object) + median_parms <- apply(all_parms, 2, median) + start_scaled_parms <- rep(NA_real_, length(orig_parms)) + names(start_scaled_parms) <- names(orig_parms) + + if (orig$transformations == "saemix") { + orig_scaled_parms <- orig_parms / median_parms + all_scaled_parms <- t(apply(all_parms, 1, function(x) x / median_parms)) + start_scaled_parms[names(start_parms)] <- + start_parms / median_parms[names(start_parms)] + boxplot(all_scaled_parms, log = "y", main = main, ...) + } else { + orig_scaled_parms <- orig_parms - median_parms + all_scaled_parms <- t(apply(all_parms, 1, function(x) x - median_parms)) + start_scaled_parms[names(start_parms)] <- + start_parms - median_parms[names(start_parms)] + boxplot(all_scaled_parms, main = main, ...) + } + + points(orig_scaled_parms, col = 2, cex = 2) + points(start_scaled_parms, col = 3, cex = 3) + legend(lpos, inset = c(0.05, 0.05), bty = "n", + pch = 1, col = 3:1, lty = c(NA, NA, 1), + legend = c( + "Starting parameters", + "Converged parameters", + "Multistart runs")) +} diff --git a/_pkgdown.yml b/_pkgdown.yml index 51743488..0b7dbb0e 100644 --- a/_pkgdown.yml +++ b/_pkgdown.yml @@ -140,10 +140,12 @@ navbar: href: articles/FOCUS_L.html - text: Example evaluations of dimethenamid data from 2018 with nonlinear mixed-effects models href: articles/web_only/dimethenamid_2018.html - - text: Example evaluation of FOCUS Example Dataset Z - href: articles/web_only/FOCUS_Z.html + - text: Short demo of the multistart method + href: articles/web_only/multistart.html - text: Performance benefit by using compiled model definitions in mkin href: articles/web_only/compiled_models.html + - text: Example evaluation of FOCUS Example Dataset Z + href: articles/web_only/FOCUS_Z.html - text: Calculation of time weighted average concentrations with mkin href: articles/twa.html - text: Example evaluation of NAFTA SOP Attachment examples diff --git a/docs/dev/articles/index.html b/docs/dev/articles/index.html index 526708a4..551e9c98 100644 --- a/docs/dev/articles/index.html +++ b/docs/dev/articles/index.html @@ -44,11 +44,14 @@ Example evaluations of dimethenamid data from 2018 with nonlinear mixed-effects models
  • - Example evaluation of FOCUS Example Dataset Z + Short demo of the multistart method
  • Performance benefit by using compiled model definitions in mkin
  • +
  • + Example evaluation of FOCUS Example Dataset Z +
  • Calculation of time weighted average concentrations with mkin
  • @@ -102,6 +105,8 @@
    Example evaluations of the dimethenamid data from 2018
    +
    Short demo of the multistart method
    +
    diff --git a/docs/dev/articles/web_only/multistart.html b/docs/dev/articles/web_only/multistart.html new file mode 100644 index 00000000..a119a0d6 --- /dev/null +++ b/docs/dev/articles/web_only/multistart.html @@ -0,0 +1,172 @@ + + + + + + + +Short demo of the multistart method • mkin + + + + + + + + + + + + + +
    +
    + + + + +
    +
    + + + + +

    This is a vignette, because the multistart method does not seem to work in pkgdown example code and I wanted to show the plots in the online docs. The dimethenamid data from 2018 from seven soils is used as example data.

    +
    +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
    +

    First, we check the DFOP model with the two-component error model and random effects for all degradation parameters.

    +
    +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)
    +parhist(f_saem_full_multi, lpos = "bottomright")
    +

    +

    We see that not all variability parameters are identifiable, most problematic is the variance of k2. So we reduce the parameter distribution model by removing the intersoil variability for this parameter.

    +
    +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)
    +parhist(f_saem_reduced_multi, lpos = "bottomright")
    +

    +
    + + + +
    + + + +
    + +
    +

    +

    Site built with pkgdown 2.0.6.

    +
    + +
    +
    + + + + + + + + diff --git a/docs/dev/articles/web_only/multistart_files/accessible-code-block-0.0.1/empty-anchor.js b/docs/dev/articles/web_only/multistart_files/accessible-code-block-0.0.1/empty-anchor.js new file mode 100644 index 00000000..ca349fd6 --- /dev/null +++ b/docs/dev/articles/web_only/multistart_files/accessible-code-block-0.0.1/empty-anchor.js @@ -0,0 +1,15 @@ +// Hide empty tag within highlighted CodeBlock for screen reader accessibility (see https://github.com/jgm/pandoc/issues/6352#issuecomment-626106786) --> +// v0.0.1 +// Written by JooYoung Seo (jooyoung@psu.edu) and Atsushi Yasumoto on June 1st, 2020. + +document.addEventListener('DOMContentLoaded', function() { + const codeList = document.getElementsByClassName("sourceCode"); + for (var i = 0; i < codeList.length; i++) { + var linkList = codeList[i].getElementsByTagName('a'); + for (var j = 0; j < linkList.length; j++) { + if (linkList[j].innerHTML === "") { + linkList[j].setAttribute('aria-hidden', 'true'); + } + } + } +}); diff --git a/docs/dev/articles/web_only/multistart_files/figure-html/unnamed-chunk-2-1.png b/docs/dev/articles/web_only/multistart_files/figure-html/unnamed-chunk-2-1.png new file mode 100644 index 00000000..e30e56f0 Binary files /dev/null and b/docs/dev/articles/web_only/multistart_files/figure-html/unnamed-chunk-2-1.png differ diff --git a/docs/dev/articles/web_only/multistart_files/figure-html/unnamed-chunk-3-1.png b/docs/dev/articles/web_only/multistart_files/figure-html/unnamed-chunk-3-1.png new file mode 100644 index 00000000..3ed0d546 Binary files /dev/null and b/docs/dev/articles/web_only/multistart_files/figure-html/unnamed-chunk-3-1.png differ diff --git a/docs/dev/authors.html b/docs/dev/authors.html index 60053796..35ae54bd 100644 --- a/docs/dev/authors.html +++ b/docs/dev/authors.html @@ -44,11 +44,14 @@ Example evaluations of dimethenamid data from 2018 with nonlinear mixed-effects models
  • - Example evaluation of FOCUS Example Dataset Z + Short demo of the multistart method
  • Performance benefit by using compiled model definitions in mkin
  • +
  • + Example evaluation of FOCUS Example Dataset Z +
  • Calculation of time weighted average concentrations with mkin
  • diff --git a/docs/dev/index.html b/docs/dev/index.html index 7d3abbb2..5257b590 100644 --- a/docs/dev/index.html +++ b/docs/dev/index.html @@ -74,11 +74,14 @@ Example evaluations of dimethenamid data from 2018 with nonlinear mixed-effects models
  • - Example evaluation of FOCUS Example Dataset Z + Short demo of the multistart method
  • Performance benefit by using compiled model definitions in mkin
  • +
  • + Example evaluation of FOCUS Example Dataset Z +
  • Calculation of time weighted average concentrations with mkin
  • diff --git a/docs/dev/news/index.html b/docs/dev/news/index.html index c8863ec6..029b6999 100644 --- a/docs/dev/news/index.html +++ b/docs/dev/news/index.html @@ -44,11 +44,14 @@ Example evaluations of dimethenamid data from 2018 with nonlinear mixed-effects models
  • - Example evaluation of FOCUS Example Dataset Z + Short demo of the multistart method
  • Performance benefit by using compiled model definitions in mkin
  • +
  • + Example evaluation of FOCUS Example Dataset Z +
  • Calculation of time weighted average concentrations with mkin
  • diff --git a/docs/dev/pkgdown.yml b/docs/dev/pkgdown.yml index 1fee5d96..6cd0f89b 100644 --- a/docs/dev/pkgdown.yml +++ b/docs/dev/pkgdown.yml @@ -11,7 +11,8 @@ articles: benchmarks: web_only/benchmarks.html compiled_models: web_only/compiled_models.html dimethenamid_2018: web_only/dimethenamid_2018.html -last_built: 2022-09-16T08:50Z + multistart: web_only/multistart.html +last_built: 2022-09-16T19:00Z urls: reference: https://pkgdown.jrwb.de/mkin/reference article: https://pkgdown.jrwb.de/mkin/articles diff --git a/docs/dev/reference/index.html b/docs/dev/reference/index.html index 3372a69a..b7a5de92 100644 --- a/docs/dev/reference/index.html +++ b/docs/dev/reference/index.html @@ -44,11 +44,14 @@ Example evaluations of dimethenamid data from 2018 with nonlinear mixed-effects models
  • - Example evaluation of FOCUS Example Dataset Z + Short demo of the multistart method
  • Performance benefit by using compiled model definitions in mkin
  • +
  • + Example evaluation of FOCUS Example Dataset Z +
  • Calculation of time weighted average concentrations with mkin
  • @@ -234,9 +237,17 @@ degradation models and one or more error models

    Confidence intervals for parameters in saem.mmkin objects

    -

    multistart() print(<multistart>) parms(<multistart>) parhist() llhist()

    +

    multistart() print(<multistart>) parms(<multistart>)

    Perform a hierarchical model fit with multiple starting values

    + +

    llhist()

    + +

    Plot the distribution of log likelihoods from multistart objects

    + +

    parhist()

    + +

    Plot parameter distributions from multistart objects

    Datasets and known results

    diff --git a/docs/dev/reference/llhist.html b/docs/dev/reference/llhist.html new file mode 100644 index 00000000..2eb77a82 --- /dev/null +++ b/docs/dev/reference/llhist.html @@ -0,0 +1,147 @@ + +Plot the distribution of log likelihoods from multistart objects — llhist • mkin + + +
    +
    + + + +
    +
    + + +
    +

    Produces a histogram of log-likelihoods, and an overlayed kernel density +estimate. In addition, the likelihood of the original fit is shown as +a red vertical line.

    +
    + +
    +
    llhist(object, breaks = "Sturges", lpos = "topleft", main = "", ...)
    +
    + +
    +

    Arguments

    +
    object
    +

    The multistart object

    + + +
    breaks
    +

    Passed to hist

    + + +
    lpos
    +

    Positioning of the legend.

    + + +
    main
    +

    Title of the plot

    + + +
    ...
    +

    Passed to hist

    + +
    +
    +

    See also

    + +
    + +
    + +
    + + +
    + +
    +

    Site built with pkgdown 2.0.6.

    +
    + +
    + + + + + + + + diff --git a/docs/dev/reference/multistart.html b/docs/dev/reference/multistart.html index 9f2d297e..c85e6d1e 100644 --- a/docs/dev/reference/multistart.html +++ b/docs/dev/reference/multistart.html @@ -49,11 +49,14 @@ mixed-effects models by Duchesne et al (2021).">Example evaluations of dimethenamid data from 2018 with nonlinear mixed-effects models
  • - Example evaluation of FOCUS Example Dataset Z + Short demo of the multistart method
  • Performance benefit by using compiled model definitions in mkin
  • +
  • + Example evaluation of FOCUS Example Dataset Z +
  • Calculation of time weighted average concentrations with mkin
  • @@ -106,11 +109,7 @@ mixed-effects models by Duchesne et al (2021).

    print(x, ...) # S3 method for multistart -parms(object, ...) - -parhist(object, lpos = "topleft", main = "", ...) - -llhist(object, breaks = "Sturges", lpos = "topleft", main = "", ...) +parms(object, ...)
    @@ -129,25 +128,12 @@ used?

    ...
    -

    Passed to the update function, or to the basic plotting -function in the case of the graphical functions.

    +

    Passed to the update function.

    x

    The multistart object to print

    - -
    lpos
    -

    Positioning of the legend.

    - - -
    main
    -

    title of the plot

    - - -
    breaks
    -

    Passed to hist

    -

    Value

    @@ -160,6 +146,11 @@ function in the case of the graphical functions.

    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

    @@ -168,7 +159,40 @@ 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"
    +# }
    +
    +