aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJohannes Ranke <jranke@uni-bremen.de>2020-11-06 00:03:29 +0100
committerJohannes Ranke <jranke@uni-bremen.de>2020-11-06 00:03:29 +0100
commitb5b446b718b15ccaae5b197e147fc1358f0f564e (patch)
treea36f32ee664c6925b5afdb812daca41075968152
parent2f24fe0ce70d040e491619d7f2413fc902e433f1 (diff)
Fast analytical solutions for saemix, update.mmkin
Also, use logit transformation for g and for solitary formation fractions, addressing #10.
-rw-r--r--NAMESPACE3
-rw-r--r--NEWS.md4
-rw-r--r--R/mkinerrmin.R2
-rw-r--r--R/mkinfit.R18
-rw-r--r--R/mmkin.R32
-rw-r--r--R/saemix.R213
-rw-r--r--R/transform_odeparms.R61
-rw-r--r--docs/dev/news/index.html2
-rw-r--r--docs/dev/pkgdown.yml2
-rw-r--r--docs/dev/reference/Rplot001.pngbin19062 -> 1011 bytes
-rw-r--r--docs/dev/reference/Rplot002.pngbin24396 -> 17289 bytes
-rw-r--r--docs/dev/reference/Rplot003.pngbin6583 -> 15451 bytes
-rw-r--r--docs/dev/reference/Rplot004.pngbin28700 -> 13203 bytes
-rw-r--r--docs/dev/reference/Rplot005.pngbin26806 -> 15024 bytes
-rw-r--r--docs/dev/reference/Rplot006.pngbin26623 -> 13474 bytes
-rw-r--r--docs/dev/reference/Rplot007.pngbin26730 -> 18546 bytes
-rw-r--r--docs/dev/reference/Rplot008.pngbin0 -> 11762 bytes
-rw-r--r--docs/dev/reference/Rplot009.pngbin0 -> 21414 bytes
-rw-r--r--docs/dev/reference/Rplot010.pngbin0 -> 5643 bytes
-rw-r--r--docs/dev/reference/Rplot011.pngbin0 -> 26192 bytes
-rw-r--r--docs/dev/reference/Rplot012.pngbin0 -> 23686 bytes
-rw-r--r--docs/dev/reference/Rplot013.pngbin0 -> 23097 bytes
-rw-r--r--docs/dev/reference/Rplot014.pngbin0 -> 18299 bytes
-rw-r--r--docs/dev/reference/Rplot015.pngbin0 -> 23097 bytes
-rw-r--r--docs/dev/reference/mkinfit-1.pngbin0 -> 67810 bytes
-rw-r--r--docs/dev/reference/mkinfit.html154
-rw-r--r--docs/dev/reference/mmkin-1.pngbin115683 -> 114048 bytes
-rw-r--r--docs/dev/reference/mmkin-2.pngbin113464 -> 110392 bytes
-rw-r--r--docs/dev/reference/mmkin-3.pngbin100799 -> 97556 bytes
-rw-r--r--docs/dev/reference/mmkin-4.pngbin70430 -> 70005 bytes
-rw-r--r--docs/dev/reference/mmkin-5.pngbin66958 -> 66093 bytes
-rw-r--r--docs/dev/reference/mmkin.html87
-rw-r--r--docs/dev/reference/saemix-1.pngbin50490 -> 46062 bytes
-rw-r--r--docs/dev/reference/saemix-10.pngbin0 -> 17011 bytes
-rw-r--r--docs/dev/reference/saemix-11.pngbin0 -> 64787 bytes
-rw-r--r--docs/dev/reference/saemix-12.pngbin0 -> 59464 bytes
-rw-r--r--docs/dev/reference/saemix-13.pngbin0 -> 7742 bytes
-rw-r--r--docs/dev/reference/saemix-2.pngbin60503 -> 47804 bytes
-rw-r--r--docs/dev/reference/saemix-3.pngbin18094 -> 40694 bytes
-rw-r--r--docs/dev/reference/saemix-4.pngbin82011 -> 38144 bytes
-rw-r--r--docs/dev/reference/saemix-5.pngbin0 -> 39988 bytes
-rw-r--r--docs/dev/reference/saemix-6.pngbin0 -> 39720 bytes
-rw-r--r--docs/dev/reference/saemix-7.pngbin0 -> 7742 bytes
-rw-r--r--docs/dev/reference/saemix-8.pngbin0 -> 35501 bytes
-rw-r--r--docs/dev/reference/saemix-9.pngbin0 -> 7742 bytes
-rw-r--r--docs/dev/reference/saemix.html974
-rw-r--r--docs/dev/reference/transform_odeparms.html159
-rw-r--r--man/mkinfit.Rd18
-rw-r--r--man/mmkin.Rd2
-rw-r--r--man/saemix.Rd61
-rw-r--r--man/transform_odeparms.Rd19
-rw-r--r--test.log25
-rw-r--r--tests/testthat/DFOP_FOCUS_C_messages.txt349
-rw-r--r--tests/testthat/FOCUS_2006_D.csf2
-rw-r--r--tests/testthat/summary_DFOP_FOCUS_C.txt4
-rw-r--r--tests/testthat/test_schaefer07_complex_case.R4
56 files changed, 1454 insertions, 741 deletions
diff --git a/NAMESPACE b/NAMESPACE
index 9554a0d6..ef5b72e7 100644
--- a/NAMESPACE
+++ b/NAMESPACE
@@ -31,6 +31,7 @@ S3method(residuals,mkinfit)
S3method(summary,mkinfit)
S3method(summary,nlme.mmkin)
S3method(update,mkinfit)
+S3method(update,mmkin)
S3method(update,nlme.mmkin)
export(CAKE_export)
export(DFOP.solution)
@@ -110,10 +111,12 @@ importFrom(stats,na.fail)
importFrom(stats,nlminb)
importFrom(stats,nobs)
importFrom(stats,optimize)
+importFrom(stats,plogis)
importFrom(stats,predict)
importFrom(stats,pt)
importFrom(stats,qchisq)
importFrom(stats,qf)
+importFrom(stats,qlogis)
importFrom(stats,qnorm)
importFrom(stats,qt)
importFrom(stats,residuals)
diff --git a/NEWS.md b/NEWS.md
index 706e0ae8..60276151 100644
--- a/NEWS.md
+++ b/NEWS.md
@@ -1,5 +1,9 @@
# mkin 0.9.50.4 (unreleased)
+- 'transform_odeparms', 'backtransform_odeparms': Use logit transformation for solitary fractions like the g parameter of the DFOP model, or formation fractions for a pathway to only one target variable
+
+- 'update' method for 'mmkin' objects
+
- 'plot', 'summary' and 'print' methods for 'nlme.mmkin' objects
- 'saemix_model', 'saemix_data': Helper functions to fit nonlinear mixed-effects models for mmkin row objects using the saemix package
diff --git a/R/mkinerrmin.R b/R/mkinerrmin.R
index 1994aed0..f52692ba 100644
--- a/R/mkinerrmin.R
+++ b/R/mkinerrmin.R
@@ -107,7 +107,7 @@ mkinerrmin <- function(fit, alpha = 0.05)
if (obs_var == fit$obs_vars[[1]]) {
special_parms = c("alpha", "log_alpha", "beta", "log_beta",
"k1", "log_k1", "k2", "log_k2",
- "g", "g_ilr", "tb", "log_tb")
+ "g", "g_ilr", "g_qlogis", "tb", "log_tb")
n.optim <- n.optim + length(intersect(special_parms, names(parms.optim)))
}
diff --git a/R/mkinfit.R b/R/mkinfit.R
index 1b1bb73d..7fa1c56e 100644
--- a/R/mkinfit.R
+++ b/R/mkinfit.R
@@ -89,12 +89,11 @@ if(getRversion() >= '2.15.1') utils::globalVariables(c("name", "time", "value"))
#' models and the break point tb of the HS model. If FALSE, zero is used as
#' a lower bound for the rates in the optimisation.
#' @param transform_fractions Boolean specifying if formation fractions
-#' constants should be transformed in the model specification used in the
-#' fitting for better compliance with the assumption of normal distribution
-#' of the estimator. The default (TRUE) is to do transformations. If TRUE,
-#' the g parameter of the DFOP and HS models are also transformed, as they
-#' can also be seen as compositional data. The transformation used for these
-#' transformations is the [ilr()] transformation.
+#' should be transformed in the model specification used in the fitting for
+#' better compliance with the assumption of normal distribution of the
+#' estimator. The default (TRUE) is to do transformations. If TRUE,
+#' the g parameter of the DFOP model is also transformed. Transformations
+#' are described in [transform_odeparms].
#' @param quiet Suppress printing out the current value of the negative
#' log-likelihood after each improvement?
#' @param atol Absolute error tolerance, passed to [deSolve::ode()]. Default
@@ -187,15 +186,14 @@ if(getRversion() >= '2.15.1') utils::globalVariables(c("name", "time", "value"))
#'
#' # Fit the model quietly to the FOCUS example dataset D using defaults
#' fit <- mkinfit(SFO_SFO, FOCUS_D, quiet = TRUE)
-#' # Since mkin 0.9.50.3, we get a warning about non-normality of residuals,
-#' # so we try an alternative error model
+#' plot_sep(fit)
+#' # As lower parent values appear to have lower variance, we try an alternative error model
#' fit.tc <- mkinfit(SFO_SFO, FOCUS_D, quiet = TRUE, error_model = "tc")
#' # This avoids the warning, and the likelihood ratio test confirms it is preferable
#' lrtest(fit.tc, fit)
#' # We can also allow for different variances of parent and metabolite as error model
#' fit.obs <- mkinfit(SFO_SFO, FOCUS_D, quiet = TRUE, error_model = "obs")
-#' # This also avoids the warning about non-normality, but the two-component error model
-#' # has significantly higher likelihood
+#' # The two-component error model has significantly higher likelihood
#' lrtest(fit.obs, fit.tc)
#' parms(fit.tc)
#' endpoints(fit.tc)
diff --git a/R/mmkin.R b/R/mmkin.R
index 6f088de0..f3c07e42 100644
--- a/R/mmkin.R
+++ b/R/mmkin.R
@@ -64,8 +64,9 @@
#'
#' @export mmkin
mmkin <- function(models = c("SFO", "FOMC", "DFOP"), datasets,
- cores = detectCores(), cluster = NULL, ...)
+ cores = parallel::detectCores(), cluster = NULL, ...)
{
+ call <- match.call()
parent_models_available = c("SFO", "FOMC", "DFOP", "HS", "SFORB", "IORE", "logistic")
n.m <- length(models)
n.d <- length(datasets)
@@ -100,12 +101,14 @@ mmkin <- function(models = c("SFO", "FOMC", "DFOP"), datasets,
}
if (is.null(cluster)) {
- results <- parallel::mclapply(as.list(1:n.fits), fit_function, mc.cores = cores)
+ results <- parallel::mclapply(as.list(1:n.fits), fit_function,
+ mc.cores = cores, mc.preschedule = FALSE)
} else {
results <- parallel::parLapply(cluster, as.list(1:n.fits), fit_function)
}
attributes(results) <- attributes(fit_indices)
+ attr(results, "call") <- call
class(results) <- "mmkin"
return(results)
}
@@ -187,3 +190,28 @@ print.mmkin <- function(x, ...) {
}
}
+
+#' @export
+update.mmkin <- function(object, ..., evaluate = TRUE)
+{
+ call <- attr(object, "call")
+
+ update_arguments <- match.call(expand.dots = FALSE)$...
+
+ if (length(update_arguments) > 0) {
+ update_arguments_in_call <- !is.na(match(names(update_arguments), names(call)))
+ }
+
+ for (a in names(update_arguments)[update_arguments_in_call]) {
+ call[[a]] <- update_arguments[[a]]
+ }
+
+ update_arguments_not_in_call <- !update_arguments_in_call
+ if(any(update_arguments_not_in_call)) {
+ call <- c(as.list(call), update_arguments[update_arguments_not_in_call])
+ call <- as.call(call)
+ }
+
+ if(evaluate) eval(call, parent.frame())
+ else call
+}
diff --git a/R/saemix.R b/R/saemix.R
index f8714cf2..8632c1a4 100644
--- a/R/saemix.R
+++ b/R/saemix.R
@@ -20,47 +20,40 @@
#' @importFrom saemix saemixData saemixModel
#' @importFrom stats var
#' @examples
+#' \dontrun{
+#' library(saemix)
#' ds <- lapply(experimental_data_for_UBA_2019[6:10],
#' function(x) subset(x$data[c("name", "time", "value")]))
#' names(ds) <- paste("Dataset", 6:10)
-#' sfo_sfo <- mkinmod(parent = mkinsub("SFO", "A1"),
+#' f_mmkin_parent_p0_fixed <- mmkin("FOMC", ds, cores = 1,
+#' state.ini = c(parent = 100), fixed_initials = "parent", quiet = TRUE)
+#' m_saemix_p0_fixed <- saemix_model(f_mmkin_parent_p0_fixed["FOMC", ])
+#' d_saemix_parent <- saemix_data(f_mmkin_parent_p0_fixed)
+#' saemix_options <- list(seed = 123456, displayProgress = FALSE,
+#' save = FALSE, save.graphs = FALSE, nbiter.saemix = c(200, 80))
+#' f_saemix_p0_fixed <- saemix(m_saemix_p0_fixed, d_saemix_parent, saemix_options)
+#'
+#' f_mmkin_parent <- mmkin(c("SFO", "FOMC", "DFOP"), ds, quiet = TRUE)
+#' m_saemix_sfo <- saemix_model(f_mmkin_parent["SFO", ])
+#' m_saemix_fomc <- saemix_model(f_mmkin_parent["FOMC", ])
+#' m_saemix_dfop <- saemix_model(f_mmkin_parent["DFOP", ])
+#' d_saemix_parent <- saemix_data(f_mmkin_parent["SFO", ])
+#' f_saemix_sfo <- saemix(m_saemix_sfo, d_saemix_parent, saemix_options)
+#' f_saemix_fomc <- saemix(m_saemix_fomc, d_saemix_parent, saemix_options)
+#' f_saemix_dfop <- saemix(m_saemix_dfop, d_saemix_parent, saemix_options)
+#' compare.saemix(list(f_saemix_sfo, f_saemix_fomc, f_saemix_dfop))
+#' f_mmkin_parent_tc <- update(f_mmkin_parent, error_model = "tc")
+#' m_saemix_fomc_tc <- saemix_model(f_mmkin_parent_tc["FOMC", ])
+#' f_saemix_fomc_tc <- saemix(m_saemix_fomc_tc, d_saemix_parent, saemix_options)
+#' compare.saemix(list(f_saemix_fomc, f_saemix_fomc_tc))
+#'
+#' dfop_sfo <- mkinmod(parent = mkinsub("DFOP", "A1"),
#' A1 = mkinsub("SFO"))
-#' \dontrun{
-#' f_mmkin <- mmkin(list("SFO-SFO" = sfo_sfo), ds, quiet = TRUE)
-#' library(saemix)
-#' m_saemix <- saemix_model(f_mmkin, cores = 1)
+#' f_mmkin <- mmkin(list("DFOP-SFO" = dfop_sfo), ds, quiet = TRUE)
+#' m_saemix <- saemix_model(f_mmkin)
#' d_saemix <- saemix_data(f_mmkin)
-#' saemix_options <- list(seed = 123456,
-#' save = FALSE, save.graphs = FALSE, displayProgress = FALSE,
-#' nbiter.saemix = c(200, 80))
#' f_saemix <- saemix(m_saemix, d_saemix, saemix_options)
-#' plot(f_saemix, plot.type = "convergence")
-#' }
-#' # Synthetic data with two-component error
-#' sampling_times = c(0, 1, 3, 7, 14, 28, 60, 90, 120)
-#' dt50_sfo_in <- c(80, 90, 100, 111.111, 125)
-#' k_in <- log(2) / dt50_sfo_in
#'
-#' SFO <- mkinmod(parent = mkinsub("SFO"))
-#'
-#' pred_sfo <- function(k) {
-#' mkinpredict(SFO, c(k_parent = k),
-#' c(parent = 100), sampling_times)
-#' }
-#'
-#' ds_sfo_mean <- lapply(k_in, pred_sfo)
-#' set.seed(123456L)
-#' ds_sfo_syn <- lapply(ds_sfo_mean, function(ds) {
-#' add_err(ds, sdfunc = function(value) sqrt(1^2 + value^2 * 0.07^2),
-#' n = 1)[[1]]
-#' })
-#' \dontrun{
-#' f_mmkin_syn <- mmkin("SFO", ds_sfo_syn, error_model = "tc", quiet = TRUE)
-#' # plot(f_mmkin_syn)
-#' m_saemix_tc <- saemix_model(f_mmkin_syn, cores = 1)
-#' d_saemix_tc <- saemix_data(f_mmkin_syn)
-#' f_saemix_tc <- saemix(m_saemix_tc, d_saemix_tc, saemix_options)
-#' plot(f_saemix_tc, plot.type = "convergence")
#' }
#' @return An [saemix::SaemixModel] object.
#' @export
@@ -68,14 +61,14 @@ saemix_model <- function(object, cores = 1) {
if (nrow(object) > 1) stop("Only row objects allowed")
mkin_model <- object[[1]]$mkinmod
- analytical <- is.function(mkin_model$deg_func)
+ solution_type <- object[[1]]$solution_type
degparms_optim <- mean_degparms(object)
- psi0 <- matrix(degparms_optim, nrow = 1)
- colnames(psi0) <- names(degparms_optim)
-
degparms_fixed <- object[[1]]$bparms.fixed
+ # Transformations are done in the degradation function
+ transform.par = rep(0, length(degparms_optim))
+
odeini_optim_parm_names <- grep('_0$', names(degparms_optim), value = TRUE)
odeini_fixed_parm_names <- grep('_0$', names(degparms_fixed), value = TRUE)
@@ -85,50 +78,114 @@ saemix_model <- function(object, cores = 1) {
odeini_fixed <- degparms_fixed[odeini_fixed_parm_names]
names(odeini_fixed) <- gsub('_0$', '', odeini_fixed_parm_names)
- model_function <- function(psi, id, xidep) {
+ model_function <- FALSE
+
+ if (length(mkin_model$spec) == 1 & mkin_model$use_of_ff == "max") {
+ parent_type <- mkin_model$spec[[1]]$type
+ if (length(odeini_fixed) == 1) {
+ if (parent_type == "SFO") {
+ stop("saemix needs at least two parameters to work on.")
+ }
+ if (parent_type == "FOMC") {
+ model_function <- function(psi, id, xidep) {
+ odeini_fixed / (xidep[, "time"]/exp(psi[id, 2]) + 1)^exp(psi[id, 1])
+ }
+ }
+ if (parent_type == "DFOP") {
+ model_function <- function(psi, id, xidep) {
+ g <- plogis(psi[id, 3])
+ t = xidep[, "time"]
+ odeini_fixed * (g * exp(- exp(psi[id, 1]) * t) +
+ (1 - g) * exp(- exp(psi[id, 2]) * t))
+ }
+ }
+ if (parent_type == "HS") {
+ model_function <- function(psi, id, xidep) {
+ tb <- exp(psi[id, 3])
+ t = xidep[, "time"]
+ k1 = exp(psi[id, 1])
+ odeini_fixed * ifelse(t <= tb,
+ exp(- k1 * t),
+ exp(- k1 * t) * exp(- exp(psi[id, 2]) * (t - tb)))
+ }
+ }
+ } else {
+ if (length(odeparms_fixed) == 0) {
+ if (parent_type == "SFO") {
+ model_function <- function(psi, id, xidep) {
+ psi[id, 1] * exp( - exp(psi[id, 2]) * xidep[, "time"])
+ }
+ }
+ if (parent_type == "FOMC") {
+ model_function <- function(psi, id, xidep) {
+ psi[id, 1] / (xidep[, "time"]/exp(psi[id, 3]) + 1)^exp(psi[id, 2])
+ }
+ }
+ if (parent_type == "DFOP") {
+ model_function <- function(psi, id, xidep) {
+ g <- plogis(psi[id, 4])
+ t = xidep[, "time"]
+ psi[id, 1] * (g * exp(- exp(psi[id, 2]) * t) +
+ (1 - g) * exp(- exp(psi[id, 3]) * t))
+ }
+ }
+ if (parent_type == "HS") {
+ model_function <- function(psi, id, xidep) {
+ tb <- exp(psi[id, 4])
+ t = xidep[, "time"]
+ k1 = exp(psi[id, 2])
+ psi[id, 1] * ifelse(t <= tb,
+ exp(- k1 * t),
+ exp(- k1 * t) * exp(- exp(psi[id, 3]) * (t - tb)))
+ }
+ }
+ }
+ }
+ }
- uid <- unique(id)
+ if (!is.function(model_function)) {
+ model_function <- function(psi, id, xidep) {
- res_list <- parallel::mclapply(uid, function(i) {
- transparms_optim <- psi[i, ]
- names(transparms_optim) <- names(degparms_optim)
+ uid <- unique(id)
- odeini_optim <- transparms_optim[odeini_optim_parm_names]
- names(odeini_optim) <- gsub('_0$', '', odeini_optim_parm_names)
+ res_list <- parallel::mclapply(uid, function(i) {
+ transparms_optim <- psi[i, ]
+ names(transparms_optim) <- names(degparms_optim)
- odeini <- c(odeini_optim, odeini_fixed)[names(mkin_model$diffs)]
+ odeini_optim <- transparms_optim[odeini_optim_parm_names]
+ names(odeini_optim) <- gsub('_0$', '', odeini_optim_parm_names)
- ode_transparms_optim_names <- setdiff(names(transparms_optim), odeini_optim_parm_names)
- odeparms_optim <- backtransform_odeparms(transparms_optim[ode_transparms_optim_names], mkin_model,
- transform_rates = object[[1]]$transform_rates,
- transform_fractions = object[[1]]$transform_fractions)
- odeparms <- c(odeparms_optim, odeparms_fixed)
+ odeini <- c(odeini_optim, odeini_fixed)[names(mkin_model$diffs)]
- xidep_i <- subset(xidep, id == i)
+ ode_transparms_optim_names <- setdiff(names(transparms_optim), odeini_optim_parm_names)
+ odeparms_optim <- backtransform_odeparms(transparms_optim[ode_transparms_optim_names], mkin_model,
+ transform_rates = object[[1]]$transform_rates,
+ transform_fractions = object[[1]]$transform_fractions)
+ odeparms <- c(odeparms_optim, odeparms_fixed)
- if (analytical) {
- out_values <- mkin_model$deg_func(xidep_i, odeini, odeparms)
- } else {
+ xidep_i <- subset(xidep, id == i)
- i_time <- xidep_i$time
- i_name <- xidep_i$name
+ if (solution_type == "analytical") {
+ out_values <- mkin_model$deg_func(xidep_i, odeini, odeparms)
+ } else {
- out_wide <- mkinpredict(mkin_model,
- odeparms = odeparms, odeini = odeini,
- solution_type = object[[1]]$solution_type,
- outtimes = sort(unique(i_time)))
+ i_time <- xidep_i$time
+ i_name <- xidep_i$name
- out_index <- cbind(as.character(i_time), as.character(i_name))
- out_values <- out_wide[out_index]
- }
- return(out_values)
- }, mc.cores = cores)
- res <- unlist(res_list)
- return(res)
- }
+ out_wide <- mkinpredict(mkin_model,
+ odeparms = odeparms, odeini = odeini,
+ solution_type = solution_type,
+ outtimes = sort(unique(i_time)))
- raneff_0 <- mean_degparms(object, random = TRUE)$random$ds
- var_raneff_0 <- apply(raneff_0, 2, var)
+ out_index <- cbind(as.character(i_time), as.character(i_name))
+ out_values <- out_wide[out_index]
+ }
+ return(out_values)
+ }, mc.cores = cores)
+ res <- unlist(res_list)
+ return(res)
+ }
+ }
error.model <- switch(object[[1]]$err_mod,
const = "constant",
@@ -136,7 +193,7 @@ saemix_model <- function(object, cores = 1) {
obs = "constant")
if (object[[1]]$err_mod == "obs") {
- warning("The error model 'obs' (variance by variable) was not transferred to the saemix model")
+ warning("The error model 'obs' (variance by variable) can currently not be transferred to an saemix model")
}
error.init <- switch(object[[1]]$err_mod,
@@ -145,11 +202,15 @@ saemix_model <- function(object, cores = 1) {
b = mean(sapply(object, function(x) x$errparms[2]))),
obs = c(a = mean(sapply(object, function(x) x$errparms)), b = 1))
- res <- saemixModel(model_function, psi0,
+ psi0_matrix <- matrix(degparms_optim, nrow = 1)
+ colnames(psi0_matrix) <- names(degparms_optim)
+
+ res <- saemixModel(model_function,
+ psi0 = psi0_matrix,
"Mixed model generated from mmkin object",
- transform.par = rep(0, length(degparms_optim)),
- error.model = error.model, error.init = error.init,
- omega.init = diag(var_raneff_0)
+ transform.par = transform.par,
+ error.model = error.model,
+ error.init = error.init
)
return(res)
}
diff --git a/R/transform_odeparms.R b/R/transform_odeparms.R
index 0a25ee8c..f21d31fc 100644
--- a/R/transform_odeparms.R
+++ b/R/transform_odeparms.R
@@ -5,19 +5,19 @@
#' constants and other parameters that can only take on positive values, a
#' simple log transformation is used. For compositional parameters, such as the
#' formations fractions that should always sum up to 1 and can not be negative,
-#' the \code{\link{ilr}} transformation is used.
+#' the [ilr] transformation is used.
#'
#' The transformation of sets of formation fractions is fragile, as it supposes
#' the same ordering of the components in forward and backward transformation.
-#' This is no problem for the internal use in \code{\link{mkinfit}}.
+#' This is no problem for the internal use in [mkinfit].
#'
#' @param parms Parameters of kinetic models as used in the differential
#' equations.
#' @param transparms Transformed parameters of kinetic models as used in the
#' fitting procedure.
-#' @param mkinmod The kinetic model of class \code{\link{mkinmod}}, containing
+#' @param mkinmod The kinetic model of class [mkinmod], containing
#' the names of the model variables that are needed for grouping the
-#' formation fractions before \code{\link{ilr}} transformation, the parameter
+#' formation fractions before [ilr] transformation, the parameter
#' names and the information if the pathway to sink is included in the model.
#' @param transform_rates Boolean specifying if kinetic rate constants should
#' be transformed in the model specification used in the fitting for better
@@ -28,11 +28,15 @@
#' @param transform_fractions Boolean specifying if formation fractions
#' constants should be transformed in the model specification used in the
#' fitting for better compliance with the assumption of normal distribution
-#' of the estimator. The default (TRUE) is to do transformations. The g
-#' parameter of the DFOP and HS models are also transformed, as they can also
-#' be seen as compositional data. The transformation used for these
-#' transformations is the \code{\link{ilr}} transformation.
+#' of the estimator. The default (TRUE) is to do transformations.
+#' The g parameter of the DFOP model is also seen as a fraction.
+#' If a single fraction is transformed (g parameter of DFOP or only a single
+#' target variable e.g. a single metabolite plus a pathway to sink), a
+#' logistic transformation is used [stats::qlogis()]. In other cases, i.e. if
+#' two or more formation fractions need to be transformed whose sum cannot
+#' exceed one, the [ilr] transformation is used.
#' @return A vector of transformed or backtransformed parameters
+#' @importFrom stats plogis qlogis
#' @author Johannes Ranke
#' @examples
#'
@@ -91,8 +95,7 @@
#'
#' @export transform_odeparms
transform_odeparms <- function(parms, mkinmod,
- transform_rates = TRUE,
- transform_fractions = TRUE)
+ transform_rates = TRUE, transform_fractions = TRUE)
{
# We need the model specification for the names of the model
# variables and the information on the sink
@@ -119,8 +122,7 @@ transform_odeparms <- function(parms, mkinmod,
N <- parms[grep("^N", names(parms))]
transparms[names(N)] <- N
- # Go through state variables and apply isometric logratio transformation to
- # formation fractions if requested
+ # Go through state variables and transform formation fractions if requested
mod_vars = names(spec)
for (box in mod_vars) {
f <- parms[grep(paste("^f", box, sep = "_"), names(parms))]
@@ -128,9 +130,14 @@ transform_odeparms <- function(parms, mkinmod,
if (length(f) > 0) {
if(transform_fractions) {
if (spec[[box]]$sink) {
- trans_f <- ilr(c(f, 1 - sum(f)))
- trans_f_names <- paste("f", box, "ilr", 1:length(trans_f), sep = "_")
- transparms[trans_f_names] <- trans_f
+ if (length(f) == 1) {
+ trans_f_name <- paste("f", box, "qlogis", sep = "_")
+ transparms[trans_f_name] <- qlogis(f)
+ } else {
+ trans_f <- ilr(c(f, 1 - sum(f)))
+ trans_f_names <- paste("f", box, "ilr", 1:length(trans_f), sep = "_")
+ transparms[trans_f_names] <- trans_f
+ }
} else {
if (length(f) > 1) {
trans_f <- ilr(f)
@@ -161,7 +168,7 @@ transform_odeparms <- function(parms, mkinmod,
if (!is.na(parms["g"])) {
g <- parms["g"]
if (transform_fractions) {
- transparms["g_ilr"] <- ilr(c(g, 1 - g))
+ transparms["g_qlogis"] <- qlogis(g)
} else {
transparms["g"] <- g
}
@@ -207,20 +214,25 @@ backtransform_odeparms <- function(transparms, mkinmod,
N <- transparms[grep("^N", names(transparms))]
parms[names(N)] <- N
- # Go through state variables and apply inverse isometric logratio transformation
+ # Go through state variables and apply inverse transformations to formation fractions
mod_vars = names(spec)
for (box in mod_vars) {
# Get the names as used in the model
f_names = grep(paste("^f", box, sep = "_"), mkinmod$parms, value = TRUE)
+
# Get the formation fraction parameters
trans_f = transparms[grep(paste("^f", box, sep = "_"), names(transparms))]
if (length(trans_f) > 0) {
if(transform_fractions) {
- f <- invilr(trans_f)
- if (spec[[box]]$sink) {
- parms[f_names] <- f[1:length(f)-1]
+ if (any(grepl("qlogis", names(trans_f)))) {
+ parms[f_names] <- plogis(trans_f)
} else {
- parms[f_names] <- f
+ f <- invilr(trans_f)
+ if (spec[[box]]$sink) {
+ parms[f_names] <- f[1:length(f)-1]
+ } else {
+ parms[f_names] <- f
+ }
}
} else {
parms[names(trans_f)] <- trans_f
@@ -242,7 +254,12 @@ backtransform_odeparms <- function(transparms, mkinmod,
}
}
- # DFOP parameter g is treated as a fraction
+ # DFOP parameter g is now transformed using qlogis
+ if (!is.na(transparms["g_qlogis"])) {
+ g_qlogis <- transparms["g_qlogis"]
+ parms["g"] <- plogis(g_qlogis)
+ }
+ # In earlier times we used ilr for g, so we keep this around
if (!is.na(transparms["g_ilr"])) {
g_ilr <- transparms["g_ilr"]
parms["g"] <- invilr(g_ilr)[1]
diff --git a/docs/dev/news/index.html b/docs/dev/news/index.html
index 4e31f4b7..3980ea88 100644
--- a/docs/dev/news/index.html
+++ b/docs/dev/news/index.html
@@ -146,6 +146,8 @@
<a href="#mkin-0-9-50-4-unreleased" class="anchor"></a>mkin 0.9.50.4 (unreleased)<small> Unreleased </small>
</h1>
<ul>
+<li><p>‘transform_odeparms’, ‘backtransform_odeparms’: Use logit transformation for solitary fractions like the g parameter of the DFOP model, or formation fractions for a pathway to only one target variable</p></li>
+<li><p>‘update’ method for ‘mmkin’ objects</p></li>
<li><p>‘plot’, ‘summary’ and ‘print’ methods for ‘nlme.mmkin’ objects</p></li>
<li><p>‘saemix_model’, ‘saemix_data’: Helper functions to fit nonlinear mixed-effects models for mmkin row objects using the saemix package</p></li>
</ul>
diff --git a/docs/dev/pkgdown.yml b/docs/dev/pkgdown.yml
index 6d59c7cb..7b186c37 100644
--- a/docs/dev/pkgdown.yml
+++ b/docs/dev/pkgdown.yml
@@ -10,7 +10,7 @@ articles:
web_only/NAFTA_examples: NAFTA_examples.html
web_only/benchmarks: benchmarks.html
web_only/compiled_models: compiled_models.html
-last_built: 2020-11-05T07:25Z
+last_built: 2020-11-05T22:53Z
urls:
reference: https://pkgdown.jrwb.de/mkin/reference
article: https://pkgdown.jrwb.de/mkin/articles
diff --git a/docs/dev/reference/Rplot001.png b/docs/dev/reference/Rplot001.png
index 36b20f09..17a35806 100644
--- a/docs/dev/reference/Rplot001.png
+++ b/docs/dev/reference/Rplot001.png
Binary files differ
diff --git a/docs/dev/reference/Rplot002.png b/docs/dev/reference/Rplot002.png
index b568eb1c..a33ecd71 100644
--- a/docs/dev/reference/Rplot002.png
+++ b/docs/dev/reference/Rplot002.png
Binary files differ
diff --git a/docs/dev/reference/Rplot003.png b/docs/dev/reference/Rplot003.png
index 53415e5d..dd7e24f3 100644
--- a/docs/dev/reference/Rplot003.png
+++ b/docs/dev/reference/Rplot003.png
Binary files differ
diff --git a/docs/dev/reference/Rplot004.png b/docs/dev/reference/Rplot004.png
index ea685493..2057f883 100644
--- a/docs/dev/reference/Rplot004.png
+++ b/docs/dev/reference/Rplot004.png
Binary files differ
diff --git a/docs/dev/reference/Rplot005.png b/docs/dev/reference/Rplot005.png
index aceec1b5..b9285d56 100644
--- a/docs/dev/reference/Rplot005.png
+++ b/docs/dev/reference/Rplot005.png
Binary files differ
diff --git a/docs/dev/reference/Rplot006.png b/docs/dev/reference/Rplot006.png
index b3c9f16f..511c6b00 100644
--- a/docs/dev/reference/Rplot006.png
+++ b/docs/dev/reference/Rplot006.png
Binary files differ
diff --git a/docs/dev/reference/Rplot007.png b/docs/dev/reference/Rplot007.png
index 225931c4..a0d6336e 100644
--- a/docs/dev/reference/Rplot007.png
+++ b/docs/dev/reference/Rplot007.png
Binary files differ
diff --git a/docs/dev/reference/Rplot008.png b/docs/dev/reference/Rplot008.png
new file mode 100644
index 00000000..5d1701b8
--- /dev/null
+++ b/docs/dev/reference/Rplot008.png
Binary files differ
diff --git a/docs/dev/reference/Rplot009.png b/docs/dev/reference/Rplot009.png
new file mode 100644
index 00000000..7788b2d0
--- /dev/null
+++ b/docs/dev/reference/Rplot009.png
Binary files differ
diff --git a/docs/dev/reference/Rplot010.png b/docs/dev/reference/Rplot010.png
new file mode 100644
index 00000000..86ddd790
--- /dev/null
+++ b/docs/dev/reference/Rplot010.png
Binary files differ
diff --git a/docs/dev/reference/Rplot011.png b/docs/dev/reference/Rplot011.png
new file mode 100644
index 00000000..30861f3e
--- /dev/null
+++ b/docs/dev/reference/Rplot011.png
Binary files differ
diff --git a/docs/dev/reference/Rplot012.png b/docs/dev/reference/Rplot012.png
new file mode 100644
index 00000000..4286bb2a
--- /dev/null
+++ b/docs/dev/reference/Rplot012.png
Binary files differ
diff --git a/docs/dev/reference/Rplot013.png b/docs/dev/reference/Rplot013.png
new file mode 100644
index 00000000..65903441
--- /dev/null
+++ b/docs/dev/reference/Rplot013.png
Binary files differ
diff --git a/docs/dev/reference/Rplot014.png b/docs/dev/reference/Rplot014.png
new file mode 100644
index 00000000..fe2cf0d9
--- /dev/null
+++ b/docs/dev/reference/Rplot014.png
Binary files differ
diff --git a/docs/dev/reference/Rplot015.png b/docs/dev/reference/Rplot015.png
new file mode 100644
index 00000000..65903441
--- /dev/null
+++ b/docs/dev/reference/Rplot015.png
Binary files differ
diff --git a/docs/dev/reference/mkinfit-1.png b/docs/dev/reference/mkinfit-1.png
new file mode 100644
index 00000000..eed9064f
--- /dev/null
+++ b/docs/dev/reference/mkinfit-1.png
Binary files differ
diff --git a/docs/dev/reference/mkinfit.html b/docs/dev/reference/mkinfit.html
index 39bd12cb..b46c2cce 100644
--- a/docs/dev/reference/mkinfit.html
+++ b/docs/dev/reference/mkinfit.html
@@ -307,12 +307,11 @@ a lower bound for the rates in the optimisation.</p></td>
<tr>
<th>transform_fractions</th>
<td><p>Boolean specifying if formation fractions
-constants should be transformed in the model specification used in the
-fitting for better compliance with the assumption of normal distribution
-of the estimator. The default (TRUE) is to do transformations. If TRUE,
-the g parameter of the DFOP and HS models are also transformed, as they
-can also be seen as compositional data. The transformation used for these
-transformations is the <code><a href='ilr.html'>ilr()</a></code> transformation.</p></td>
+should be transformed in the model specification used in the fitting for
+better compliance with the assumption of normal distribution of the
+estimator. The default (TRUE) is to do transformations. If TRUE,
+the g parameter of the DFOP model is also transformed. Transformations
+are described in <a href='transform_odeparms.html'>transform_odeparms</a>.</p></td>
</tr>
<tr>
<th>quiet</th>
@@ -433,15 +432,15 @@ Degradation Data. <em>Environments</em> 6(12) 124
<span class='fu'><a href='https://rdrr.io/r/base/summary.html'>summary</a></span><span class='op'>(</span><span class='va'>fit</span><span class='op'>)</span>
</div><div class='output co'>#&gt; mkin version used for fitting: 0.9.50.4
#&gt; R version used for fitting: 4.0.3
-#&gt; Date of fit: Thu Nov 5 08:25:42 2020
-#&gt; Date of summary: Thu Nov 5 08:25:42 2020
+#&gt; Date of fit: Thu Nov 5 23:14:40 2020
+#&gt; Date of summary: Thu Nov 5 23:14:40 2020
#&gt;
#&gt; Equations:
#&gt; d_parent/dt = - (alpha/beta) * 1/((time/beta) + 1) * parent
#&gt;
#&gt; Model predictions using solution type analytical
#&gt;
-#&gt; Fitted using 222 model solutions performed in 0.049 s
+#&gt; Fitted using 222 model solutions performed in 0.05 s
#&gt;
#&gt; Error model: Constant variance
#&gt;
@@ -521,8 +520,8 @@ Degradation Data. <em>Environments</em> 6(12) 124
</div><div class='output co'>#&gt; <span class='message'>Successfully compiled differential equation model from auto-generated C code.</span></div><div class='input'>
<span class='co'># Fit the model quietly to the FOCUS example dataset D using defaults</span>
<span class='va'>fit</span> <span class='op'>&lt;-</span> <span class='fu'>mkinfit</span><span class='op'>(</span><span class='va'>SFO_SFO</span>, <span class='va'>FOCUS_D</span>, quiet <span class='op'>=</span> <span class='cn'>TRUE</span><span class='op'>)</span>
-<span class='co'># Since mkin 0.9.50.3, we get a warning about non-normality of residuals,</span>
-<span class='co'># so we try an alternative error model</span>
+<span class='fu'><a href='plot.mkinfit.html'>plot_sep</a></span><span class='op'>(</span><span class='va'>fit</span><span class='op'>)</span>
+</div><div class='img'><img src='mkinfit-1.png' alt='' width='700' height='433' /></div><div class='input'><span class='co'># As lower parent values appear to have lower variance, we try an alternative error model</span>
<span class='va'>fit.tc</span> <span class='op'>&lt;-</span> <span class='fu'>mkinfit</span><span class='op'>(</span><span class='va'>SFO_SFO</span>, <span class='va'>FOCUS_D</span>, quiet <span class='op'>=</span> <span class='cn'>TRUE</span>, error_model <span class='op'>=</span> <span class='st'>"tc"</span><span class='op'>)</span>
<span class='co'># This avoids the warning, and the likelihood ratio test confirms it is preferable</span>
<span class='fu'><a href='https://rdrr.io/pkg/lmtest/man/lrtest.html'>lrtest</a></span><span class='op'>(</span><span class='va'>fit.tc</span>, <span class='va'>fit</span><span class='op'>)</span>
@@ -536,8 +535,7 @@ Degradation Data. <em>Environments</em> 6(12) 124
#&gt; ---
#&gt; Signif. codes: 0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1</div><div class='input'><span class='co'># We can also allow for different variances of parent and metabolite as error model</span>
<span class='va'>fit.obs</span> <span class='op'>&lt;-</span> <span class='fu'>mkinfit</span><span class='op'>(</span><span class='va'>SFO_SFO</span>, <span class='va'>FOCUS_D</span>, quiet <span class='op'>=</span> <span class='cn'>TRUE</span>, error_model <span class='op'>=</span> <span class='st'>"obs"</span><span class='op'>)</span>
-<span class='co'># This also avoids the warning about non-normality, but the two-component error model</span>
-<span class='co'># has significantly higher likelihood</span>
+<span class='co'># The two-component error model has significantly higher likelihood</span>
<span class='fu'><a href='https://rdrr.io/pkg/lmtest/man/lrtest.html'>lrtest</a></span><span class='op'>(</span><span class='va'>fit.obs</span>, <span class='va'>fit.tc</span><span class='op'>)</span>
</div><div class='output co'>#&gt; Likelihood ratio test
#&gt;
@@ -549,9 +547,9 @@ Degradation Data. <em>Environments</em> 6(12) 124
#&gt; ---
#&gt; Signif. codes: 0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1</div><div class='input'><span class='fu'><a href='parms.html'>parms</a></span><span class='op'>(</span><span class='va'>fit.tc</span><span class='op'>)</span>
</div><div class='output co'>#&gt; parent_0 k_parent k_m1 f_parent_to_m1 sigma_low
-#&gt; 1.007343e+02 1.005562e-01 5.166712e-03 5.083933e-01 3.049891e-03
+#&gt; 1.007343e+02 1.005562e-01 5.166712e-03 5.083933e-01 3.049884e-03
#&gt; rsd_high
-#&gt; 7.928117e-02 </div><div class='input'><span class='fu'><a href='endpoints.html'>endpoints</a></span><span class='op'>(</span><span class='va'>fit.tc</span><span class='op'>)</span>
+#&gt; 7.928118e-02 </div><div class='input'><span class='fu'><a href='endpoints.html'>endpoints</a></span><span class='op'>(</span><span class='va'>fit.tc</span><span class='op'>)</span>
</div><div class='output co'>#&gt; $ff
#&gt; parent_m1 parent_sink
#&gt; 0.5083933 0.4916067
@@ -559,7 +557,7 @@ Degradation Data. <em>Environments</em> 6(12) 124
#&gt; $distimes
#&gt; DT50 DT90
#&gt; parent 6.89313 22.89848
-#&gt; m1 134.15635 445.65776
+#&gt; m1 134.15634 445.65772
#&gt; </div><div class='input'>
<span class='co'># We can show a quick (only one replication) benchmark for this case, as we</span>
<span class='co'># have several alternative solution methods for the model. We skip</span>
@@ -576,9 +574,9 @@ Degradation Data. <em>Environments</em> 6(12) 124
solution_type <span class='op'>=</span> <span class='st'>"analytical"</span><span class='op'>)</span><span class='op'>)</span>
<span class='op'>}</span>
</div><div class='output co'>#&gt; <span class='message'>Loading required package: rbenchmark</span></div><div class='output co'>#&gt; test relative elapsed
-#&gt; 3 analytical 1.000 0.746
-#&gt; 1 deSolve_compiled 2.288 1.707
-#&gt; 2 eigen 2.708 2.020</div><div class='input'><span class='co'># }</span>
+#&gt; 3 analytical 1.000 0.532
+#&gt; 1 deSolve_compiled 1.765 0.939
+#&gt; 2 eigen 2.229 1.186</div><div class='input'><span class='co'># }</span>
<span class='co'># Use stepwise fitting, using optimised parameters from parent only fit, FOMC-SFO</span>
<span class='co'># \dontrun{</span>
@@ -588,21 +586,22 @@ Degradation Data. <em>Environments</em> 6(12) 124
</div><div class='output co'>#&gt; <span class='message'>Successfully compiled differential equation model from auto-generated C code.</span></div><div class='input'><span class='va'>fit.FOMC_SFO</span> <span class='op'>&lt;-</span> <span class='fu'>mkinfit</span><span class='op'>(</span><span class='va'>FOMC_SFO</span>, <span class='va'>FOCUS_D</span>, quiet <span class='op'>=</span> <span class='cn'>TRUE</span><span class='op'>)</span>
<span class='co'># Again, we get a warning and try a more sophisticated error model</span>
<span class='va'>fit.FOMC_SFO.tc</span> <span class='op'>&lt;-</span> <span class='fu'>mkinfit</span><span class='op'>(</span><span class='va'>FOMC_SFO</span>, <span class='va'>FOCUS_D</span>, quiet <span class='op'>=</span> <span class='cn'>TRUE</span>, error_model <span class='op'>=</span> <span class='st'>"tc"</span><span class='op'>)</span>
-<span class='co'># This model has a higher likelihood, but not significantly so</span>
+</div><div class='output co'>#&gt; <span class='warning'>Warning: Optimisation did not converge:</span>
+#&gt; <span class='warning'>iteration limit reached without convergence (10)</span></div><div class='input'><span class='co'># This model has a higher likelihood, but not significantly so</span>
<span class='fu'><a href='https://rdrr.io/pkg/lmtest/man/lrtest.html'>lrtest</a></span><span class='op'>(</span><span class='va'>fit.tc</span>, <span class='va'>fit.FOMC_SFO.tc</span><span class='op'>)</span>
</div><div class='output co'>#&gt; Likelihood ratio test
#&gt;
#&gt; Model 1: FOMC_SFO with error model tc and fixed parameter(s) m1_0
#&gt; Model 2: SFO_SFO with error model tc and fixed parameter(s) m1_0
#&gt; #Df LogLik Df Chisq Pr(&gt;Chisq)
-#&gt; 1 7 -64.829
-#&gt; 2 6 -64.983 -1 0.3075 0.5792</div><div class='input'><span class='co'># Also, the missing standard error for log_beta and the t-tests for alpha</span>
+#&gt; 1 7 -64.870
+#&gt; 2 6 -64.983 -1 0.2259 0.6346</div><div class='input'><span class='co'># Also, the missing standard error for log_beta and the t-tests for alpha</span>
<span class='co'># and beta indicate overparameterisation</span>
<span class='fu'><a href='https://rdrr.io/r/base/summary.html'>summary</a></span><span class='op'>(</span><span class='va'>fit.FOMC_SFO.tc</span>, data <span class='op'>=</span> <span class='cn'>FALSE</span><span class='op'>)</span>
-</div><div class='output co'>#&gt; <span class='warning'>Warning: NaNs produced</span></div><div class='output co'>#&gt; <span class='warning'>Warning: NaNs produced</span></div><div class='output co'>#&gt; <span class='warning'>Warning: diag(.) had 0 or NA entries; non-finite result is doubtful</span></div><div class='output co'>#&gt; mkin version used for fitting: 0.9.50.4
+</div><div class='output co'>#&gt; <span class='warning'>Warning: NaNs produced</span></div><div class='output co'>#&gt; <span class='warning'>Warning: NaNs produced</span></div><div class='output co'>#&gt; <span class='warning'>Warning: NaNs produced</span></div><div class='output co'>#&gt; <span class='warning'>Warning: diag(.) had 0 or NA entries; non-finite result is doubtful</span></div><div class='output co'>#&gt; mkin version used for fitting: 0.9.50.4
#&gt; R version used for fitting: 4.0.3
-#&gt; Date of fit: Thu Nov 5 08:25:56 2020
-#&gt; Date of summary: Thu Nov 5 08:25:56 2020
+#&gt; Date of fit: Thu Nov 5 23:14:51 2020
+#&gt; Date of summary: Thu Nov 5 23:14:51 2020
#&gt;
#&gt; Equations:
#&gt; d_parent/dt = - (alpha/beta) * 1/((time/beta) + 1) * parent
@@ -611,7 +610,7 @@ Degradation Data. <em>Environments</em> 6(12) 124
#&gt;
#&gt; Model predictions using solution type deSolve
#&gt;
-#&gt; Fitted using 3611 model solutions performed in 2.673 s
+#&gt; Fitted using 4273 model solutions performed in 3.081 s
#&gt;
#&gt; Error model: Two-component variance function
#&gt;
@@ -629,80 +628,85 @@ Degradation Data. <em>Environments</em> 6(12) 124
#&gt; rsd_high 0.10 error
#&gt;
#&gt; Starting values for the transformed parameters actually optimised:
-#&gt; value lower upper
-#&gt; parent_0 100.750000 -Inf Inf
-#&gt; log_k_m1 -2.302585 -Inf Inf
-#&gt; f_parent_ilr_1 0.000000 -Inf Inf
-#&gt; log_alpha 0.000000 -Inf Inf
-#&gt; log_beta 2.302585 -Inf Inf
-#&gt; sigma_low 0.100000 0 Inf
-#&gt; rsd_high 0.100000 0 Inf
+#&gt; value lower upper
+#&gt; parent_0 100.750000 -Inf Inf
+#&gt; log_k_m1 -2.302585 -Inf Inf
+#&gt; f_parent_qlogis 0.000000 -Inf Inf
+#&gt; log_alpha 0.000000 -Inf Inf
+#&gt; log_beta 2.302585 -Inf Inf
+#&gt; sigma_low 0.100000 0 Inf
+#&gt; rsd_high 0.100000 0 Inf
#&gt;
#&gt; Fixed parameter values:
#&gt; value type
#&gt; m1_0 0 state
#&gt;
+#&gt;
+#&gt; Warning(s):
+#&gt; Optimisation did not converge:
+#&gt; iteration limit reached without convergence (10)
+#&gt;
#&gt; Results:
#&gt;
-#&gt; AIC BIC logLik
-#&gt; 143.658 155.1211 -64.82902
+#&gt; AIC BIC logLik
+#&gt; 143.7396 155.2027 -64.86982
#&gt;
#&gt; Optimised, transformed parameters with symmetric confidence intervals:
-#&gt; Estimate Std. Error Lower Upper
-#&gt; parent_0 101.600000 2.6390000 96.240000 107.000000
-#&gt; log_k_m1 -5.284000 0.0928900 -5.473000 -5.095000
-#&gt; f_parent_ilr_1 0.001008 0.0541900 -0.109500 0.111500
-#&gt; log_alpha 5.522000 0.0077300 5.506000 5.538000
-#&gt; log_beta 7.806000 NaN NaN NaN
-#&gt; sigma_low 0.002488 0.0002431 0.001992 0.002984
-#&gt; rsd_high 0.079210 0.0093280 0.060180 0.098230
+#&gt; Estimate Std. Error Lower Upper
+#&gt; parent_0 1.016e+02 1.90600 97.7400 105.5000
+#&gt; log_k_m1 -5.285e+00 0.09286 -5.4740 -5.0950
+#&gt; f_parent_qlogis 6.482e-04 0.06164 -0.1251 0.1264
+#&gt; log_alpha 5.467e+00 NaN NaN NaN
+#&gt; log_beta 7.750e+00 NaN NaN NaN
+#&gt; sigma_low 0.000e+00 NaN NaN NaN
+#&gt; rsd_high 7.989e-02 NaN NaN NaN
#&gt;
#&gt; Parameter correlation:
-#&gt; parent_0 log_k_m1 f_parent_ilr_1 log_alpha log_beta sigma_low
-#&gt; parent_0 1.000000 -0.094697 -0.76654 0.70525 NaN 0.016099
-#&gt; log_k_m1 -0.094697 1.000000 0.51404 -0.14347 NaN 0.001576
-#&gt; f_parent_ilr_1 -0.766543 0.514038 1.00000 -0.61368 NaN 0.015465
-#&gt; log_alpha 0.705247 -0.143468 -0.61368 1.00000 NaN 5.871780
-#&gt; log_beta NaN NaN NaN NaN 1 NaN
-#&gt; sigma_low 0.016099 0.001576 0.01546 5.87178 NaN 1.000000
-#&gt; rsd_high 0.006566 -0.011662 -0.05353 0.04845 NaN -0.652554
-#&gt; rsd_high
-#&gt; parent_0 0.006566
-#&gt; log_k_m1 -0.011662
-#&gt; f_parent_ilr_1 -0.053525
-#&gt; log_alpha 0.048451
-#&gt; log_beta NaN
-#&gt; sigma_low -0.652554
-#&gt; rsd_high 1.000000
+#&gt; parent_0 log_k_m1 f_parent_qlogis log_alpha log_beta
+#&gt; parent_0 1.0000000 -0.0002167 -0.6060 NaN NaN
+#&gt; log_k_m1 -0.0002167 1.0000000 0.5474 NaN NaN
+#&gt; f_parent_qlogis -0.6060320 0.5474423 1.0000 NaN NaN
+#&gt; log_alpha NaN NaN NaN 1 NaN
+#&gt; log_beta NaN NaN NaN NaN 1
+#&gt; sigma_low NaN NaN NaN NaN NaN
+#&gt; rsd_high NaN NaN NaN NaN NaN
+#&gt; sigma_low rsd_high
+#&gt; parent_0 NaN NaN
+#&gt; log_k_m1 NaN NaN
+#&gt; f_parent_qlogis NaN NaN
+#&gt; log_alpha NaN NaN
+#&gt; log_beta NaN NaN
+#&gt; sigma_low 1 NaN
+#&gt; rsd_high NaN 1
#&gt;
#&gt; Backtransformed parameters:
#&gt; Confidence intervals for internally transformed parameters are asymmetric.
#&gt; t-test (unrealistically) based on the assumption of normal distribution
#&gt; for estimators of untransformed parameters.
#&gt; Estimate t value Pr(&gt;t) Lower Upper
-#&gt; parent_0 1.016e+02 32.7800 6.312e-26 9.624e+01 1.070e+02
-#&gt; k_m1 5.072e-03 10.1200 1.216e-11 4.197e-03 6.130e-03
-#&gt; f_parent_to_m1 5.004e-01 20.8300 4.318e-20 4.614e-01 5.394e-01
-#&gt; alpha 2.502e+02 0.5624 2.889e-01 2.463e+02 2.542e+02
-#&gt; beta 2.455e+03 0.5549 2.915e-01 NA NA
-#&gt; sigma_low 2.488e-03 0.4843 3.158e-01 1.992e-03 2.984e-03
-#&gt; rsd_high 7.921e-02 8.4300 8.001e-10 6.018e-02 9.823e-02
+#&gt; parent_0 1.016e+02 32.5400 7.812e-26 97.740000 1.055e+02
+#&gt; k_m1 5.069e-03 10.0400 1.448e-11 0.004194 6.126e-03
+#&gt; f_parent_to_m1 5.002e-01 20.7300 5.001e-20 0.468800 5.315e-01
+#&gt; alpha 2.367e+02 0.6205 2.697e-01 NA NA
+#&gt; beta 2.322e+03 0.6114 2.727e-01 NA NA
+#&gt; sigma_low 0.000e+00 NaN NaN NaN NaN
+#&gt; rsd_high 7.989e-02 8.6630 4.393e-10 NaN NaN
#&gt;
#&gt; FOCUS Chi2 error levels in percent:
#&gt; err.min n.optim df
-#&gt; All data 6.781 5 14
-#&gt; parent 7.141 3 6
-#&gt; m1 4.640 2 8
+#&gt; All data 6.782 5 14
+#&gt; parent 7.142 3 6
+#&gt; m1 4.639 2 8
#&gt;
#&gt; Resulting formation fractions:
#&gt; ff
-#&gt; parent_m1 0.5004
-#&gt; parent_sink 0.4996
+#&gt; parent_m1 0.5002
+#&gt; parent_sink 0.4998
#&gt;
#&gt; Estimated disappearance times:
-#&gt; DT50 DT90 DT50back
-#&gt; parent 6.812 22.7 6.834
-#&gt; m1 136.661 454.0 NA</div><div class='input'>
+#&gt; DT50 DT90 DT50back
+#&gt; parent 6.81 22.7 6.833
+#&gt; m1 136.74 454.2 NA</div><div class='input'>
<span class='co'># We can easily use starting parameters from the parent only fit (only for illustration)</span>
<span class='va'>fit.FOMC</span> <span class='op'>=</span> <span class='fu'>mkinfit</span><span class='op'>(</span><span class='st'>"FOMC"</span>, <span class='va'>FOCUS_2006_D</span>, quiet <span class='op'>=</span> <span class='cn'>TRUE</span>, error_model <span class='op'>=</span> <span class='st'>"tc"</span><span class='op'>)</span>
<span class='va'>fit.FOMC_SFO</span> <span class='op'>&lt;-</span> <span class='fu'>mkinfit</span><span class='op'>(</span><span class='va'>FOMC_SFO</span>, <span class='va'>FOCUS_D</span>, quiet <span class='op'>=</span> <span class='cn'>TRUE</span>,
diff --git a/docs/dev/reference/mmkin-1.png b/docs/dev/reference/mmkin-1.png
index 135d5446..7b7da90a 100644
--- a/docs/dev/reference/mmkin-1.png
+++ b/docs/dev/reference/mmkin-1.png
Binary files differ
diff --git a/docs/dev/reference/mmkin-2.png b/docs/dev/reference/mmkin-2.png
index 40109afc..ce2b2af4 100644
--- a/docs/dev/reference/mmkin-2.png
+++ b/docs/dev/reference/mmkin-2.png
Binary files differ
diff --git a/docs/dev/reference/mmkin-3.png b/docs/dev/reference/mmkin-3.png
index bce34531..bb96f1b2 100644
--- a/docs/dev/reference/mmkin-3.png
+++ b/docs/dev/reference/mmkin-3.png
Binary files differ
diff --git a/docs/dev/reference/mmkin-4.png b/docs/dev/reference/mmkin-4.png
index 02976ced..351b21aa 100644
--- a/docs/dev/reference/mmkin-4.png
+++ b/docs/dev/reference/mmkin-4.png
Binary files differ
diff --git a/docs/dev/reference/mmkin-5.png b/docs/dev/reference/mmkin-5.png
index 56750342..c1c05eea 100644
--- a/docs/dev/reference/mmkin-5.png
+++ b/docs/dev/reference/mmkin-5.png
Binary files differ
diff --git a/docs/dev/reference/mmkin.html b/docs/dev/reference/mmkin.html
index a5d7ba42..b0ca90f0 100644
--- a/docs/dev/reference/mmkin.html
+++ b/docs/dev/reference/mmkin.html
@@ -75,7 +75,7 @@ datasets specified in its first two arguments." />
</button>
<span class="navbar-brand">
<a class="navbar-link" href="../index.html">mkin</a>
- <span class="version label label-info" data-toggle="tooltip" data-placement="bottom" title="In-development version">0.9.50.3</span>
+ <span class="version label label-info" data-toggle="tooltip" data-placement="bottom" title="In-development version">0.9.50.4</span>
</span>
</div>
@@ -123,7 +123,7 @@ datasets specified in its first two arguments." />
</ul>
<ul class="nav navbar-nav navbar-right">
<li>
- <a href="http://github.com/jranke/mkin/">
+ <a href="https://github.com/jranke/mkin/">
<span class="fab fa fab fa-github fa-lg"></span>
</a>
@@ -143,7 +143,7 @@ datasets specified in its first two arguments." />
<div class="page-header">
<h1>Fit one or more kinetic models with one or more state variables to one or
more datasets</h1>
- <small class="dont-index">Source: <a href='http://github.com/jranke/mkin/blob/master/R/mmkin.R'><code>R/mmkin.R</code></a></small>
+ <small class="dont-index">Source: <a href='https://github.com/jranke/mkin/blob/master/R/mmkin.R'><code>R/mmkin.R</code></a></small>
<div class="hidden name"><code>mmkin.Rd</code></div>
</div>
@@ -152,13 +152,13 @@ more datasets</h1>
datasets specified in its first two arguments.</p>
</div>
- <pre class="usage"><span class='fu'>mmkin</span>(
- <span class='kw'>models</span> <span class='kw'>=</span> <span class='fu'><a href='https://rdrr.io/r/base/c.html'>c</a></span>(<span class='st'>"SFO"</span>, <span class='st'>"FOMC"</span>, <span class='st'>"DFOP"</span>),
- <span class='no'>datasets</span>,
- <span class='kw'>cores</span> <span class='kw'>=</span> <span class='fu'>detectCores</span>(),
- <span class='kw'>cluster</span> <span class='kw'>=</span> <span class='kw'>NULL</span>,
- <span class='no'>...</span>
-)</pre>
+ <pre class="usage"><span class='fu'>mmkin</span><span class='op'>(</span>
+ models <span class='op'>=</span> <span class='fu'><a href='https://rdrr.io/r/base/c.html'>c</a></span><span class='op'>(</span><span class='st'>"SFO"</span>, <span class='st'>"FOMC"</span>, <span class='st'>"DFOP"</span><span class='op'>)</span>,
+ <span class='va'>datasets</span>,
+ cores <span class='op'>=</span> <span class='fu'>parallel</span><span class='fu'>::</span><span class='fu'><a href='https://rdrr.io/r/parallel/detectCores.html'>detectCores</a></span><span class='op'>(</span><span class='op'>)</span>,
+ cluster <span class='op'>=</span> <span class='cn'>NULL</span>,
+ <span class='va'>...</span>
+<span class='op'>)</span></pre>
<h2 class="hasAnchor" id="arguments"><a class="anchor" href="#arguments"></a>Arguments</h2>
<table class="ref-arguments">
@@ -201,45 +201,58 @@ first index (row index) and the dataset names for the second index (column
index).</p>
<h2 class="hasAnchor" id="see-also"><a class="anchor" href="#see-also"></a>See also</h2>
- <div class='dont-index'><p><code><a href='Extract.mmkin.html'>[.mmkin</a></code> for subsetting, <code><a href='plot.mmkin.html'>plot.mmkin</a></code> for
+ <div class='dont-index'><p><code><a href='[.mmkin.html'>[.mmkin</a></code> for subsetting, <code><a href='plot.mmkin.html'>plot.mmkin</a></code> for
plotting.</p></div>
+ <h2 class="hasAnchor" id="author"><a class="anchor" href="#author"></a>Author</h2>
+
+ <p>Johannes Ranke</p>
<h2 class="hasAnchor" id="examples"><a class="anchor" href="#examples"></a>Examples</h2>
<pre class="examples"><div class='input'>
<span class='co'># \dontrun{</span>
-<span class='no'>m_synth_SFO_lin</span> <span class='kw'>&lt;-</span> <span class='fu'><a href='mkinmod.html'>mkinmod</a></span>(<span class='kw'>parent</span> <span class='kw'>=</span> <span class='fu'><a href='mkinsub.html'>mkinsub</a></span>(<span class='st'>"SFO"</span>, <span class='st'>"M1"</span>),
- <span class='kw'>M1</span> <span class='kw'>=</span> <span class='fu'><a href='mkinsub.html'>mkinsub</a></span>(<span class='st'>"SFO"</span>, <span class='st'>"M2"</span>),
- <span class='kw'>M2</span> <span class='kw'>=</span> <span class='fu'><a href='mkinsub.html'>mkinsub</a></span>(<span class='st'>"SFO"</span>), <span class='kw'>use_of_ff</span> <span class='kw'>=</span> <span class='st'>"max"</span>)</div><div class='output co'>#&gt; <span class='message'>Successfully compiled differential equation model from auto-generated C code.</span></div><div class='input'>
-<span class='no'>m_synth_FOMC_lin</span> <span class='kw'>&lt;-</span> <span class='fu'><a href='mkinmod.html'>mkinmod</a></span>(<span class='kw'>parent</span> <span class='kw'>=</span> <span class='fu'><a href='mkinsub.html'>mkinsub</a></span>(<span class='st'>"FOMC"</span>, <span class='st'>"M1"</span>),
- <span class='kw'>M1</span> <span class='kw'>=</span> <span class='fu'><a href='mkinsub.html'>mkinsub</a></span>(<span class='st'>"SFO"</span>, <span class='st'>"M2"</span>),
- <span class='kw'>M2</span> <span class='kw'>=</span> <span class='fu'><a href='mkinsub.html'>mkinsub</a></span>(<span class='st'>"SFO"</span>), <span class='kw'>use_of_ff</span> <span class='kw'>=</span> <span class='st'>"max"</span>)</div><div class='output co'>#&gt; <span class='message'>Successfully compiled differential equation model from auto-generated C code.</span></div><div class='input'>
-<span class='no'>models</span> <span class='kw'>&lt;-</span> <span class='fu'><a href='https://rdrr.io/r/base/list.html'>list</a></span>(<span class='kw'>SFO_lin</span> <span class='kw'>=</span> <span class='no'>m_synth_SFO_lin</span>, <span class='kw'>FOMC_lin</span> <span class='kw'>=</span> <span class='no'>m_synth_FOMC_lin</span>)
-<span class='no'>datasets</span> <span class='kw'>&lt;-</span> <span class='fu'><a href='https://rdrr.io/r/base/lapply.html'>lapply</a></span>(<span class='no'>synthetic_data_for_UBA_2014</span>[<span class='fl'>1</span>:<span class='fl'>3</span>], <span class='kw'>function</span>(<span class='no'>x</span>) <span class='no'>x</span>$<span class='no'>data</span>)
-<span class='fu'><a href='https://rdrr.io/r/base/names.html'>names</a></span>(<span class='no'>datasets</span>) <span class='kw'>&lt;-</span> <span class='fu'><a href='https://rdrr.io/r/base/paste.html'>paste</a></span>(<span class='st'>"Dataset"</span>, <span class='fl'>1</span>:<span class='fl'>3</span>)
-
-<span class='no'>time_default</span> <span class='kw'>&lt;-</span> <span class='fu'><a href='https://rdrr.io/r/base/system.time.html'>system.time</a></span>(<span class='no'>fits.0</span> <span class='kw'>&lt;-</span> <span class='fu'>mmkin</span>(<span class='no'>models</span>, <span class='no'>datasets</span>, <span class='kw'>quiet</span> <span class='kw'>=</span> <span class='fl'>TRUE</span>))
-<span class='no'>time_1</span> <span class='kw'>&lt;-</span> <span class='fu'><a href='https://rdrr.io/r/base/system.time.html'>system.time</a></span>(<span class='no'>fits.4</span> <span class='kw'>&lt;-</span> <span class='fu'>mmkin</span>(<span class='no'>models</span>, <span class='no'>datasets</span>, <span class='kw'>cores</span> <span class='kw'>=</span> <span class='fl'>1</span>, <span class='kw'>quiet</span> <span class='kw'>=</span> <span class='fl'>TRUE</span>))</div><div class='output co'>#&gt; <span class='warning'>Warning: Optimisation did not converge:</span>
-#&gt; <span class='warning'>false convergence (8)</span></div><div class='output co'>#&gt; <span class='warning'>Warning: Shapiro-Wilk test for standardized residuals: p = 0.0117</span></div><div class='output co'>#&gt; <span class='warning'>Warning: Shapiro-Wilk test for standardized residuals: p = 0.0174</span></div><div class='input'>
-<span class='no'>time_default</span></div><div class='output co'>#&gt; user system elapsed
-#&gt; 4.500 0.399 1.311 </div><div class='input'><span class='no'>time_1</span></div><div class='output co'>#&gt; user system elapsed
-#&gt; 5.154 0.008 5.165 </div><div class='input'>
-<span class='fu'><a href='endpoints.html'>endpoints</a></span>(<span class='no'>fits.0</span><span class='kw'>[[</span><span class='st'>"SFO_lin"</span>, <span class='fl'>2</span>]])</div><div class='output co'>#&gt; $ff
+<span class='va'>m_synth_SFO_lin</span> <span class='op'>&lt;-</span> <span class='fu'><a href='mkinmod.html'>mkinmod</a></span><span class='op'>(</span>parent <span class='op'>=</span> <span class='fu'><a href='mkinsub.html'>mkinsub</a></span><span class='op'>(</span><span class='st'>"SFO"</span>, <span class='st'>"M1"</span><span class='op'>)</span>,
+ M1 <span class='op'>=</span> <span class='fu'><a href='mkinsub.html'>mkinsub</a></span><span class='op'>(</span><span class='st'>"SFO"</span>, <span class='st'>"M2"</span><span class='op'>)</span>,
+ M2 <span class='op'>=</span> <span class='fu'><a href='mkinsub.html'>mkinsub</a></span><span class='op'>(</span><span class='st'>"SFO"</span><span class='op'>)</span>, use_of_ff <span class='op'>=</span> <span class='st'>"max"</span><span class='op'>)</span>
+</div><div class='output co'>#&gt; <span class='message'>Successfully compiled differential equation model from auto-generated C code.</span></div><div class='input'>
+<span class='va'>m_synth_FOMC_lin</span> <span class='op'>&lt;-</span> <span class='fu'><a href='mkinmod.html'>mkinmod</a></span><span class='op'>(</span>parent <span class='op'>=</span> <span class='fu'><a href='mkinsub.html'>mkinsub</a></span><span class='op'>(</span><span class='st'>"FOMC"</span>, <span class='st'>"M1"</span><span class='op'>)</span>,
+ M1 <span class='op'>=</span> <span class='fu'><a href='mkinsub.html'>mkinsub</a></span><span class='op'>(</span><span class='st'>"SFO"</span>, <span class='st'>"M2"</span><span class='op'>)</span>,
+ M2 <span class='op'>=</span> <span class='fu'><a href='mkinsub.html'>mkinsub</a></span><span class='op'>(</span><span class='st'>"SFO"</span><span class='op'>)</span>, use_of_ff <span class='op'>=</span> <span class='st'>"max"</span><span class='op'>)</span>
+</div><div class='output co'>#&gt; <span class='message'>Successfully compiled differential equation model from auto-generated C code.</span></div><div class='input'>
+<span class='va'>models</span> <span class='op'>&lt;-</span> <span class='fu'><a href='https://rdrr.io/r/base/list.html'>list</a></span><span class='op'>(</span>SFO_lin <span class='op'>=</span> <span class='va'>m_synth_SFO_lin</span>, FOMC_lin <span class='op'>=</span> <span class='va'>m_synth_FOMC_lin</span><span class='op'>)</span>
+<span class='va'>datasets</span> <span class='op'>&lt;-</span> <span class='fu'><a href='https://rdrr.io/r/base/lapply.html'>lapply</a></span><span class='op'>(</span><span class='va'>synthetic_data_for_UBA_2014</span><span class='op'>[</span><span class='fl'>1</span><span class='op'>:</span><span class='fl'>3</span><span class='op'>]</span>, <span class='kw'>function</span><span class='op'>(</span><span class='va'>x</span><span class='op'>)</span> <span class='va'>x</span><span class='op'>$</span><span class='va'>data</span><span class='op'>)</span>
+<span class='fu'><a href='https://rdrr.io/r/base/names.html'>names</a></span><span class='op'>(</span><span class='va'>datasets</span><span class='op'>)</span> <span class='op'>&lt;-</span> <span class='fu'><a href='https://rdrr.io/r/base/paste.html'>paste</a></span><span class='op'>(</span><span class='st'>"Dataset"</span>, <span class='fl'>1</span><span class='op'>:</span><span class='fl'>3</span><span class='op'>)</span>
+
+<span class='va'>time_default</span> <span class='op'>&lt;-</span> <span class='fu'><a href='https://rdrr.io/r/base/system.time.html'>system.time</a></span><span class='op'>(</span><span class='va'>fits.0</span> <span class='op'>&lt;-</span> <span class='fu'>mmkin</span><span class='op'>(</span><span class='va'>models</span>, <span class='va'>datasets</span>, quiet <span class='op'>=</span> <span class='cn'>TRUE</span><span class='op'>)</span><span class='op'>)</span>
+<span class='va'>time_1</span> <span class='op'>&lt;-</span> <span class='fu'><a href='https://rdrr.io/r/base/system.time.html'>system.time</a></span><span class='op'>(</span><span class='va'>fits.4</span> <span class='op'>&lt;-</span> <span class='fu'>mmkin</span><span class='op'>(</span><span class='va'>models</span>, <span class='va'>datasets</span>, cores <span class='op'>=</span> <span class='fl'>1</span>, quiet <span class='op'>=</span> <span class='cn'>TRUE</span><span class='op'>)</span><span class='op'>)</span>
+
+<span class='va'>time_default</span>
+</div><div class='output co'>#&gt; user system elapsed
+#&gt; 4.706 0.488 1.375 </div><div class='input'><span class='va'>time_1</span>
+</div><div class='output co'>#&gt; user system elapsed
+#&gt; 5.232 0.005 5.238 </div><div class='input'>
+<span class='fu'><a href='endpoints.html'>endpoints</a></span><span class='op'>(</span><span class='va'>fits.0</span><span class='op'>[[</span><span class='st'>"SFO_lin"</span>, <span class='fl'>2</span><span class='op'>]</span><span class='op'>]</span><span class='op'>)</span>
+</div><div class='output co'>#&gt; $ff
#&gt; parent_M1 parent_sink M1_M2 M1_sink
-#&gt; 0.7340478 0.2659522 0.7505691 0.2494309
+#&gt; 0.7340478 0.2659522 0.7505687 0.2494313
#&gt;
#&gt; $distimes
-#&gt; DT50 DT90
-#&gt; parent 0.8777688 2.915885
-#&gt; M1 2.3257466 7.725963
-#&gt; M2 33.7200800 112.015681
+#&gt; DT50 DT90
+#&gt; parent 0.877769 2.915885
+#&gt; M1 2.325746 7.725960
+#&gt; M2 33.720083 112.015691
#&gt; </div><div class='input'>
<span class='co'># plot.mkinfit handles rows or columns of mmkin result objects</span>
-<span class='fu'><a href='https://rdrr.io/r/base/plot.html'>plot</a></span>(<span class='no'>fits.0</span>[<span class='fl'>1</span>, ])</div><div class='img'><img src='mmkin-1.png' alt='' width='700' height='433' /></div><div class='input'><span class='fu'><a href='https://rdrr.io/r/base/plot.html'>plot</a></span>(<span class='no'>fits.0</span>[<span class='fl'>1</span>, ], <span class='kw'>obs_var</span> <span class='kw'>=</span> <span class='fu'><a href='https://rdrr.io/r/base/c.html'>c</a></span>(<span class='st'>"M1"</span>, <span class='st'>"M2"</span>))</div><div class='img'><img src='mmkin-2.png' alt='' width='700' height='433' /></div><div class='input'><span class='fu'><a href='https://rdrr.io/r/base/plot.html'>plot</a></span>(<span class='no'>fits.0</span>[, <span class='fl'>1</span>])</div><div class='img'><img src='mmkin-3.png' alt='' width='700' height='433' /></div><div class='input'><span class='co'># Use double brackets to extract a single mkinfit object, which will be plotted</span>
+<span class='fu'><a href='https://rdrr.io/r/graphics/plot.default.html'>plot</a></span><span class='op'>(</span><span class='va'>fits.0</span><span class='op'>[</span><span class='fl'>1</span>, <span class='op'>]</span><span class='op'>)</span>
+</div><div class='img'><img src='mmkin-1.png' alt='' width='700' height='433' /></div><div class='input'><span class='fu'><a href='https://rdrr.io/r/graphics/plot.default.html'>plot</a></span><span class='op'>(</span><span class='va'>fits.0</span><span class='op'>[</span><span class='fl'>1</span>, <span class='op'>]</span>, obs_var <span class='op'>=</span> <span class='fu'><a href='https://rdrr.io/r/base/c.html'>c</a></span><span class='op'>(</span><span class='st'>"M1"</span>, <span class='st'>"M2"</span><span class='op'>)</span><span class='op'>)</span>
+</div><div class='img'><img src='mmkin-2.png' alt='' width='700' height='433' /></div><div class='input'><span class='fu'><a href='https://rdrr.io/r/graphics/plot.default.html'>plot</a></span><span class='op'>(</span><span class='va'>fits.0</span><span class='op'>[</span>, <span class='fl'>1</span><span class='op'>]</span><span class='op'>)</span>
+</div><div class='img'><img src='mmkin-3.png' alt='' width='700' height='433' /></div><div class='input'><span class='co'># Use double brackets to extract a single mkinfit object, which will be plotted</span>
<span class='co'># by plot.mkinfit and can be plotted using plot_sep</span>
-<span class='fu'><a href='https://rdrr.io/r/base/plot.html'>plot</a></span>(<span class='no'>fits.0</span><span class='kw'>[[</span><span class='fl'>1</span>, <span class='fl'>1</span>]], <span class='kw'>sep_obs</span> <span class='kw'>=</span> <span class='fl'>TRUE</span>, <span class='kw'>show_residuals</span> <span class='kw'>=</span> <span class='fl'>TRUE</span>, <span class='kw'>show_errmin</span> <span class='kw'>=</span> <span class='fl'>TRUE</span>)</div><div class='img'><img src='mmkin-4.png' alt='' width='700' height='433' /></div><div class='input'><span class='fu'><a href='plot.mkinfit.html'>plot_sep</a></span>(<span class='no'>fits.0</span><span class='kw'>[[</span><span class='fl'>1</span>, <span class='fl'>1</span>]])
+<span class='fu'><a href='https://rdrr.io/r/graphics/plot.default.html'>plot</a></span><span class='op'>(</span><span class='va'>fits.0</span><span class='op'>[[</span><span class='fl'>1</span>, <span class='fl'>1</span><span class='op'>]</span><span class='op'>]</span>, sep_obs <span class='op'>=</span> <span class='cn'>TRUE</span>, show_residuals <span class='op'>=</span> <span class='cn'>TRUE</span>, show_errmin <span class='op'>=</span> <span class='cn'>TRUE</span><span class='op'>)</span>
+</div><div class='img'><img src='mmkin-4.png' alt='' width='700' height='433' /></div><div class='input'><span class='fu'><a href='plot.mkinfit.html'>plot_sep</a></span><span class='op'>(</span><span class='va'>fits.0</span><span class='op'>[[</span><span class='fl'>1</span>, <span class='fl'>1</span><span class='op'>]</span><span class='op'>]</span><span class='op'>)</span>
<span class='co'># Plotting with mmkin (single brackets, extracting an mmkin object) does not</span>
<span class='co'># allow to plot the observed variables separately</span>
-<span class='fu'><a href='https://rdrr.io/r/base/plot.html'>plot</a></span>(<span class='no'>fits.0</span>[<span class='fl'>1</span>, <span class='fl'>1</span>])</div><div class='img'><img src='mmkin-5.png' alt='' width='700' height='433' /></div><div class='input'># }
+<span class='fu'><a href='https://rdrr.io/r/graphics/plot.default.html'>plot</a></span><span class='op'>(</span><span class='va'>fits.0</span><span class='op'>[</span><span class='fl'>1</span>, <span class='fl'>1</span><span class='op'>]</span><span class='op'>)</span>
+</div><div class='img'><img src='mmkin-5.png' alt='' width='700' height='433' /></div><div class='input'><span class='co'># }</span>
</div></pre>
</div>
@@ -257,7 +270,7 @@ plotting.</p></div>
</div>
<div class="pkgdown">
- <p>Site built with <a href="https://pkgdown.r-lib.org/">pkgdown</a> 1.5.1.</p>
+ <p>Site built with <a href="https://pkgdown.r-lib.org/">pkgdown</a> 1.6.1.</p>
</div>
</footer>
diff --git a/docs/dev/reference/saemix-1.png b/docs/dev/reference/saemix-1.png
index 696fa7d9..e5e01249 100644
--- a/docs/dev/reference/saemix-1.png
+++ b/docs/dev/reference/saemix-1.png
Binary files differ
diff --git a/docs/dev/reference/saemix-10.png b/docs/dev/reference/saemix-10.png
new file mode 100644
index 00000000..19aa6cfb
--- /dev/null
+++ b/docs/dev/reference/saemix-10.png
Binary files differ
diff --git a/docs/dev/reference/saemix-11.png b/docs/dev/reference/saemix-11.png
new file mode 100644
index 00000000..454b9be0
--- /dev/null
+++ b/docs/dev/reference/saemix-11.png
Binary files differ
diff --git a/docs/dev/reference/saemix-12.png b/docs/dev/reference/saemix-12.png
new file mode 100644
index 00000000..c8b0fd71
--- /dev/null
+++ b/docs/dev/reference/saemix-12.png
Binary files differ
diff --git a/docs/dev/reference/saemix-13.png b/docs/dev/reference/saemix-13.png
new file mode 100644
index 00000000..e3538cb6
--- /dev/null
+++ b/docs/dev/reference/saemix-13.png
Binary files differ
diff --git a/docs/dev/reference/saemix-2.png b/docs/dev/reference/saemix-2.png
index 6525a36c..4bc3d0bc 100644
--- a/docs/dev/reference/saemix-2.png
+++ b/docs/dev/reference/saemix-2.png
Binary files differ
diff --git a/docs/dev/reference/saemix-3.png b/docs/dev/reference/saemix-3.png
index 86ae1f19..be6b0acb 100644
--- a/docs/dev/reference/saemix-3.png
+++ b/docs/dev/reference/saemix-3.png
Binary files differ
diff --git a/docs/dev/reference/saemix-4.png b/docs/dev/reference/saemix-4.png
index e0c5ce4a..fa4db812 100644
--- a/docs/dev/reference/saemix-4.png
+++ b/docs/dev/reference/saemix-4.png
Binary files differ
diff --git a/docs/dev/reference/saemix-5.png b/docs/dev/reference/saemix-5.png
new file mode 100644
index 00000000..2b7b8f46
--- /dev/null
+++ b/docs/dev/reference/saemix-5.png
Binary files differ
diff --git a/docs/dev/reference/saemix-6.png b/docs/dev/reference/saemix-6.png
new file mode 100644
index 00000000..af14b43b
--- /dev/null
+++ b/docs/dev/reference/saemix-6.png
Binary files differ
diff --git a/docs/dev/reference/saemix-7.png b/docs/dev/reference/saemix-7.png
new file mode 100644
index 00000000..e3538cb6
--- /dev/null
+++ b/docs/dev/reference/saemix-7.png
Binary files differ
diff --git a/docs/dev/reference/saemix-8.png b/docs/dev/reference/saemix-8.png
new file mode 100644
index 00000000..35cc6c6e
--- /dev/null
+++ b/docs/dev/reference/saemix-8.png
Binary files differ
diff --git a/docs/dev/reference/saemix-9.png b/docs/dev/reference/saemix-9.png
new file mode 100644
index 00000000..e3538cb6
--- /dev/null
+++ b/docs/dev/reference/saemix-9.png
Binary files differ
diff --git a/docs/dev/reference/saemix.html b/docs/dev/reference/saemix.html
index c8cf9fab..5dacefc9 100644
--- a/docs/dev/reference/saemix.html
+++ b/docs/dev/reference/saemix.html
@@ -190,16 +190,15 @@ mmkin. Starting variances of the random effects (argument omega.init) are the
variances of the deviations of the parameters from these mean values.</p>
<h2 class="hasAnchor" id="examples"><a class="anchor" href="#examples"></a>Examples</h2>
- <pre class="examples"><div class='input'><span class='va'>ds</span> <span class='op'>&lt;-</span> <span class='fu'><a href='https://rdrr.io/r/base/lapply.html'>lapply</a></span><span class='op'>(</span><span class='va'>experimental_data_for_UBA_2019</span><span class='op'>[</span><span class='fl'>6</span><span class='op'>:</span><span class='fl'>10</span><span class='op'>]</span>,
- <span class='kw'>function</span><span class='op'>(</span><span class='va'>x</span><span class='op'>)</span> <span class='fu'><a href='https://rdrr.io/r/base/subset.html'>subset</a></span><span class='op'>(</span><span class='va'>x</span><span class='op'>$</span><span class='va'>data</span><span class='op'>[</span><span class='fu'><a href='https://rdrr.io/r/base/c.html'>c</a></span><span class='op'>(</span><span class='st'>"name"</span>, <span class='st'>"time"</span>, <span class='st'>"value"</span><span class='op'>)</span><span class='op'>]</span><span class='op'>)</span><span class='op'>)</span>
-<span class='fu'><a href='https://rdrr.io/r/base/names.html'>names</a></span><span class='op'>(</span><span class='va'>ds</span><span class='op'>)</span> <span class='op'>&lt;-</span> <span class='fu'><a href='https://rdrr.io/r/base/paste.html'>paste</a></span><span class='op'>(</span><span class='st'>"Dataset"</span>, <span class='fl'>6</span><span class='op'>:</span><span class='fl'>10</span><span class='op'>)</span>
-<span class='va'>sfo_sfo</span> <span class='op'>&lt;-</span> <span class='fu'><a href='mkinmod.html'>mkinmod</a></span><span class='op'>(</span>parent <span class='op'>=</span> <span class='fu'><a href='mkinsub.html'>mkinsub</a></span><span class='op'>(</span><span class='st'>"SFO"</span>, <span class='st'>"A1"</span><span class='op'>)</span>,
- A1 <span class='op'>=</span> <span class='fu'><a href='mkinsub.html'>mkinsub</a></span><span class='op'>(</span><span class='st'>"SFO"</span><span class='op'>)</span><span class='op'>)</span>
-</div><div class='output co'>#&gt; <span class='message'>Successfully compiled differential equation model from auto-generated C code.</span></div><div class='input'><span class='co'># \dontrun{</span>
-<span class='va'>f_mmkin</span> <span class='op'>&lt;-</span> <span class='fu'><a href='mmkin.html'>mmkin</a></span><span class='op'>(</span><span class='fu'><a href='https://rdrr.io/r/base/list.html'>list</a></span><span class='op'>(</span><span class='st'>"SFO-SFO"</span> <span class='op'>=</span> <span class='va'>sfo_sfo</span><span class='op'>)</span>, <span class='va'>ds</span>, quiet <span class='op'>=</span> <span class='cn'>TRUE</span><span class='op'>)</span>
+ <pre class="examples"><div class='input'><span class='co'># \dontrun{</span>
<span class='kw'><a href='https://rdrr.io/r/base/library.html'>library</a></span><span class='op'>(</span><span class='va'>saemix</span><span class='op'>)</span>
</div><div class='output co'>#&gt; <span class='message'>Package saemix, version 3.1.9000</span>
-#&gt; <span class='message'> please direct bugs, questions and feedback to emmanuelle.comets@inserm.fr</span></div><div class='input'><span class='va'>m_saemix</span> <span class='op'>&lt;-</span> <span class='fu'>saemix_model</span><span class='op'>(</span><span class='va'>f_mmkin</span>, cores <span class='op'>=</span> <span class='fl'>1</span><span class='op'>)</span>
+#&gt; <span class='message'> please direct bugs, questions and feedback to emmanuelle.comets@inserm.fr</span></div><div class='input'><span class='va'>ds</span> <span class='op'>&lt;-</span> <span class='fu'><a href='https://rdrr.io/r/base/lapply.html'>lapply</a></span><span class='op'>(</span><span class='va'>experimental_data_for_UBA_2019</span><span class='op'>[</span><span class='fl'>6</span><span class='op'>:</span><span class='fl'>10</span><span class='op'>]</span>,
+ <span class='kw'>function</span><span class='op'>(</span><span class='va'>x</span><span class='op'>)</span> <span class='fu'><a href='https://rdrr.io/pkg/saemix/man/subset.html'>subset</a></span><span class='op'>(</span><span class='va'>x</span><span class='op'>$</span><span class='va'>data</span><span class='op'>[</span><span class='fu'><a href='https://rdrr.io/r/base/c.html'>c</a></span><span class='op'>(</span><span class='st'>"name"</span>, <span class='st'>"time"</span>, <span class='st'>"value"</span><span class='op'>)</span><span class='op'>]</span><span class='op'>)</span><span class='op'>)</span>
+<span class='fu'><a href='https://rdrr.io/r/base/names.html'>names</a></span><span class='op'>(</span><span class='va'>ds</span><span class='op'>)</span> <span class='op'>&lt;-</span> <span class='fu'><a href='https://rdrr.io/r/base/paste.html'>paste</a></span><span class='op'>(</span><span class='st'>"Dataset"</span>, <span class='fl'>6</span><span class='op'>:</span><span class='fl'>10</span><span class='op'>)</span>
+<span class='va'>f_mmkin_parent_p0_fixed</span> <span class='op'>&lt;-</span> <span class='fu'><a href='mmkin.html'>mmkin</a></span><span class='op'>(</span><span class='st'>"FOMC"</span>, <span class='va'>ds</span>, cores <span class='op'>=</span> <span class='fl'>1</span>,
+ state.ini <span class='op'>=</span> <span class='fu'><a href='https://rdrr.io/r/base/c.html'>c</a></span><span class='op'>(</span>parent <span class='op'>=</span> <span class='fl'>100</span><span class='op'>)</span>, fixed_initials <span class='op'>=</span> <span class='st'>"parent"</span>, quiet <span class='op'>=</span> <span class='cn'>TRUE</span><span class='op'>)</span>
+<span class='va'>m_saemix_p0_fixed</span> <span class='op'>&lt;-</span> <span class='fu'>saemix_model</span><span class='op'>(</span><span class='va'>f_mmkin_parent_p0_fixed</span><span class='op'>[</span><span class='st'>"FOMC"</span>, <span class='op'>]</span><span class='op'>)</span>
</div><div class='output co'>#&gt;
#&gt;
#&gt; The following SaemixModel object was successfully created:
@@ -208,59 +207,236 @@ variances of the deviations of the parameters from these mean values.</p>
#&gt; Model function: Mixed model generated from mmkin object Model type: structural
#&gt; function (psi, id, xidep)
#&gt; {
-#&gt; uid &lt;- unique(id)
-#&gt; res_list &lt;- parallel::mclapply(uid, function(i) {
-#&gt; transparms_optim &lt;- psi[i, ]
-#&gt; names(transparms_optim) &lt;- names(degparms_optim)
-#&gt; odeini_optim &lt;- transparms_optim[odeini_optim_parm_names]
-#&gt; names(odeini_optim) &lt;- gsub("_0$", "", odeini_optim_parm_names)
-#&gt; odeini &lt;- c(odeini_optim, odeini_fixed)[names(mkin_model$diffs)]
-#&gt; ode_transparms_optim_names &lt;- setdiff(names(transparms_optim),
-#&gt; odeini_optim_parm_names)
-#&gt; odeparms_optim &lt;- backtransform_odeparms(transparms_optim[ode_transparms_optim_names],
-#&gt; mkin_model, transform_rates = object[[1]]$transform_rates,
-#&gt; transform_fractions = object[[1]]$transform_fractions)
-#&gt; odeparms &lt;- c(odeparms_optim, odeparms_fixed)
-#&gt; xidep_i &lt;- subset(xidep, id == i)
-#&gt; if (analytical) {
-#&gt; out_values &lt;- mkin_model$deg_func(xidep_i, odeini,
-#&gt; odeparms)
-#&gt; }
-#&gt; else {
-#&gt; i_time &lt;- xidep_i$time
-#&gt; i_name &lt;- xidep_i$name
-#&gt; out_wide &lt;- mkinpredict(mkin_model, odeparms = odeparms,
-#&gt; odeini = odeini, solution_type = object[[1]]$solution_type,
-#&gt; outtimes = sort(unique(i_time)))
-#&gt; out_index &lt;- cbind(as.character(i_time), as.character(i_name))
-#&gt; out_values &lt;- out_wide[out_index]
-#&gt; }
-#&gt; return(out_values)
-#&gt; }, mc.cores = cores)
-#&gt; res &lt;- unlist(res_list)
-#&gt; return(res)
+#&gt; odeini_fixed/(xidep[, "time"]/exp(psi[id, 2]) + 1)^exp(psi[id,
+#&gt; 1])
+#&gt; }
+#&gt; &lt;bytecode: 0x5555599945b8&gt;
+#&gt; &lt;environment: 0x555559984388&gt;
+#&gt; Nb of parameters: 2
+#&gt; parameter names: log_alpha log_beta
+#&gt; distribution:
+#&gt; Parameter Distribution Estimated
+#&gt; [1,] log_alpha normal Estimated
+#&gt; [2,] log_beta normal Estimated
+#&gt; Variance-covariance matrix:
+#&gt; log_alpha log_beta
+#&gt; log_alpha 1 0
+#&gt; log_beta 0 1
+#&gt; Error model: constant , initial values: a.1=2.95893806804889
+#&gt; No covariate in the model.
+#&gt; Initial values
+#&gt; log_alpha log_beta
+#&gt; Pop.CondInit -0.347996 1.66788</div><div class='input'><span class='va'>d_saemix_parent</span> <span class='op'>&lt;-</span> <span class='fu'>saemix_data</span><span class='op'>(</span><span class='va'>f_mmkin_parent_p0_fixed</span><span class='op'>)</span>
+</div><div class='output co'>#&gt;
+#&gt;
+#&gt; The following SaemixData object was successfully created:
+#&gt;
+#&gt; Object of class SaemixData
+#&gt; longitudinal data for use with the SAEM algorithm
+#&gt; Dataset ds_saemix
+#&gt; Structured data: value ~ time + name | ds
+#&gt; X variable for graphs: time () </div><div class='input'><span class='va'>saemix_options</span> <span class='op'>&lt;-</span> <span class='fu'><a href='https://rdrr.io/r/base/list.html'>list</a></span><span class='op'>(</span>seed <span class='op'>=</span> <span class='fl'>123456</span>, displayProgress <span class='op'>=</span> <span class='cn'>FALSE</span>,
+ save <span class='op'>=</span> <span class='cn'>FALSE</span>, save.graphs <span class='op'>=</span> <span class='cn'>FALSE</span>, nbiter.saemix <span class='op'>=</span> <span class='fu'><a href='https://rdrr.io/r/base/c.html'>c</a></span><span class='op'>(</span><span class='fl'>200</span>, <span class='fl'>80</span><span class='op'>)</span><span class='op'>)</span>
+<span class='va'>f_saemix_p0_fixed</span> <span class='op'>&lt;-</span> <span class='fu'><a href='https://rdrr.io/pkg/saemix/man/saemix.html'>saemix</a></span><span class='op'>(</span><span class='va'>m_saemix_p0_fixed</span>, <span class='va'>d_saemix_parent</span>, <span class='va'>saemix_options</span><span class='op'>)</span>
+</div><div class='output co'>#&gt; Running main SAEM algorithm
+#&gt; [1] "Thu Nov 5 23:53:29 2020"
+#&gt; ..
+#&gt; Minimisation finished
+#&gt; [1] "Thu Nov 5 23:53:30 2020"</div><div class='img'><img src='saemix-1.png' alt='' width='700' height='433' /></div><div class='output co'>#&gt; Nonlinear mixed-effects model fit by the SAEM algorithm
+#&gt; -----------------------------------
+#&gt; ---- Data ----
+#&gt; -----------------------------------
+#&gt; Object of class SaemixData
+#&gt; longitudinal data for use with the SAEM algorithm
+#&gt; Dataset ds_saemix
+#&gt; Structured data: value ~ time + name | ds
+#&gt; X variable for graphs: time ()
+#&gt; Dataset characteristics:
+#&gt; number of subjects: 5
+#&gt; number of observations: 90
+#&gt; average/min/max nb obs: 18.00 / 16 / 20
+#&gt; First 10 lines of data:
+#&gt; ds time name value mdv cens occ ytype
+#&gt; 1 Dataset 6 0 parent 97.2 0 0 1 1
+#&gt; 2 Dataset 6 0 parent 96.4 0 0 1 1
+#&gt; 3 Dataset 6 3 parent 71.1 0 0 1 1
+#&gt; 4 Dataset 6 3 parent 69.2 0 0 1 1
+#&gt; 5 Dataset 6 6 parent 58.1 0 0 1 1
+#&gt; 6 Dataset 6 6 parent 56.6 0 0 1 1
+#&gt; 7 Dataset 6 10 parent 44.4 0 0 1 1
+#&gt; 8 Dataset 6 10 parent 43.4 0 0 1 1
+#&gt; 9 Dataset 6 20 parent 33.3 0 0 1 1
+#&gt; 10 Dataset 6 20 parent 29.2 0 0 1 1
+#&gt; -----------------------------------
+#&gt; ---- Model ----
+#&gt; -----------------------------------
+#&gt; Nonlinear mixed-effects model
+#&gt; Model function: Mixed model generated from mmkin object Model type: structural
+#&gt; function (psi, id, xidep)
+#&gt; {
+#&gt; odeini_fixed/(xidep[, "time"]/exp(psi[id, 2]) + 1)^exp(psi[id,
+#&gt; 1])
+#&gt; }
+#&gt; &lt;bytecode: 0x5555599945b8&gt;
+#&gt; &lt;environment: 0x555559984388&gt;
+#&gt; Nb of parameters: 2
+#&gt; parameter names: log_alpha log_beta
+#&gt; distribution:
+#&gt; Parameter Distribution Estimated
+#&gt; [1,] log_alpha normal Estimated
+#&gt; [2,] log_beta normal Estimated
+#&gt; Variance-covariance matrix:
+#&gt; log_alpha log_beta
+#&gt; log_alpha 1 0
+#&gt; log_beta 0 1
+#&gt; Error model: constant , initial values: a.1=2.95893806804889
+#&gt; No covariate in the model.
+#&gt; Initial values
+#&gt; log_alpha log_beta
+#&gt; Pop.CondInit -0.347996 1.66788
+#&gt; -----------------------------------
+#&gt; ---- Key algorithm options ----
+#&gt; -----------------------------------
+#&gt; Estimation of individual parameters (MAP)
+#&gt; Estimation of standard errors and linearised log-likelihood
+#&gt; Estimation of log-likelihood by importance sampling
+#&gt; Number of iterations: K1=200, K2=80
+#&gt; Number of chains: 10
+#&gt; Seed: 123456
+#&gt; Number of MCMC iterations for IS: 5000
+#&gt; Simulations:
+#&gt; nb of simulated datasets used for npde: 1000
+#&gt; nb of simulated datasets used for VPC: 100
+#&gt; Input/output
+#&gt; save the results to a file: FALSE
+#&gt; save the graphs to files: FALSE
+#&gt; ----------------------------------------------------
+#&gt; ---- Results ----
+#&gt; ----------------------------------------------------
+#&gt; ----------------- Fixed effects ------------------
+#&gt; ----------------------------------------------------
+#&gt; Parameter Estimate SE CV(%)
+#&gt; log_alpha -0.33 0.30 91.6
+#&gt; log_beta 1.70 0.21 12.4
+#&gt; a a.1 3.15 0.25 7.9
+#&gt; ----------------------------------------------------
+#&gt; ----------- Variance of random effects -----------
+#&gt; ----------------------------------------------------
+#&gt; Parameter Estimate SE CV(%)
+#&gt; log_alpha omega2.log_alpha 0.44 0.28 65
+#&gt; log_beta omega2.log_beta 0.18 0.14 79
+#&gt; ----------------------------------------------------
+#&gt; ------ Correlation matrix of random effects ------
+#&gt; ----------------------------------------------------
+#&gt; omega2.log_alpha omega2.log_beta
+#&gt; omega2.log_alpha 1 0
+#&gt; omega2.log_beta 0 1
+#&gt; ----------------------------------------------------
+#&gt; --------------- Statistical criteria -------------
+#&gt; ----------------------------------------------------
+#&gt; Likelihood computed by linearisation
+#&gt; -2LL= 501.6082
+#&gt; AIC = 511.6082
+#&gt; BIC = 509.6554
+#&gt;
+#&gt; Likelihood computed by importance sampling
+#&gt; -2LL= 501.7
+#&gt; AIC = 511.7
+#&gt; BIC = 509.7472
+#&gt; ----------------------------------------------------</div><div class='input'>
+<span class='va'>f_mmkin_parent</span> <span class='op'>&lt;-</span> <span class='fu'><a href='mmkin.html'>mmkin</a></span><span class='op'>(</span><span class='fu'><a href='https://rdrr.io/r/base/c.html'>c</a></span><span class='op'>(</span><span class='st'>"SFO"</span>, <span class='st'>"FOMC"</span>, <span class='st'>"DFOP"</span><span class='op'>)</span>, <span class='va'>ds</span>, quiet <span class='op'>=</span> <span class='cn'>TRUE</span><span class='op'>)</span>
+<span class='va'>m_saemix_sfo</span> <span class='op'>&lt;-</span> <span class='fu'>saemix_model</span><span class='op'>(</span><span class='va'>f_mmkin_parent</span><span class='op'>[</span><span class='st'>"SFO"</span>, <span class='op'>]</span><span class='op'>)</span>
+</div><div class='output co'>#&gt;
+#&gt;
+#&gt; The following SaemixModel object was successfully created:
+#&gt;
+#&gt; Nonlinear mixed-effects model
+#&gt; Model function: Mixed model generated from mmkin object Model type: structural
+#&gt; function (psi, id, xidep)
+#&gt; {
+#&gt; psi[id, 1] * exp(-exp(psi[id, 2]) * xidep[, "time"])
#&gt; }
-#&gt; &lt;bytecode: 0x55555d62aeb8&gt;
-#&gt; &lt;environment: 0x55555e35c170&gt;
+#&gt; &lt;bytecode: 0x55555998d588&gt;
+#&gt; &lt;environment: 0x55555c0f4ae8&gt;
+#&gt; Nb of parameters: 2
+#&gt; parameter names: parent_0 log_k_parent
+#&gt; distribution:
+#&gt; Parameter Distribution Estimated
+#&gt; [1,] parent_0 normal Estimated
+#&gt; [2,] log_k_parent normal Estimated
+#&gt; Variance-covariance matrix:
+#&gt; parent_0 log_k_parent
+#&gt; parent_0 1 0
+#&gt; log_k_parent 0 1
+#&gt; Error model: constant , initial values: a.1=5.76827561471585
+#&gt; No covariate in the model.
+#&gt; Initial values
+#&gt; parent_0 log_k_parent
+#&gt; Pop.CondInit 86.39406 -3.215063</div><div class='input'><span class='va'>m_saemix_fomc</span> <span class='op'>&lt;-</span> <span class='fu'>saemix_model</span><span class='op'>(</span><span class='va'>f_mmkin_parent</span><span class='op'>[</span><span class='st'>"FOMC"</span>, <span class='op'>]</span><span class='op'>)</span>
+</div><div class='output co'>#&gt;
+#&gt;
+#&gt; The following SaemixModel object was successfully created:
+#&gt;
+#&gt; Nonlinear mixed-effects model
+#&gt; Model function: Mixed model generated from mmkin object Model type: structural
+#&gt; function (psi, id, xidep)
+#&gt; {
+#&gt; psi[id, 1]/(xidep[, "time"]/exp(psi[id, 3]) + 1)^exp(psi[id,
+#&gt; 2])
+#&gt; }
+#&gt; &lt;bytecode: 0x55555998dc50&gt;
+#&gt; &lt;environment: 0x5555595d7668&gt;
+#&gt; Nb of parameters: 3
+#&gt; parameter names: parent_0 log_alpha log_beta
+#&gt; distribution:
+#&gt; Parameter Distribution Estimated
+#&gt; [1,] parent_0 normal Estimated
+#&gt; [2,] log_alpha normal Estimated
+#&gt; [3,] log_beta normal Estimated
+#&gt; Variance-covariance matrix:
+#&gt; parent_0 log_alpha log_beta
+#&gt; parent_0 1 0 0
+#&gt; log_alpha 0 1 0
+#&gt; log_beta 0 0 1
+#&gt; Error model: constant , initial values: a.1=1.91976382242696
+#&gt; No covariate in the model.
+#&gt; Initial values
+#&gt; parent_0 log_alpha log_beta
+#&gt; Pop.CondInit 94.43884 -0.2226095 2.048192</div><div class='input'><span class='va'>m_saemix_dfop</span> <span class='op'>&lt;-</span> <span class='fu'>saemix_model</span><span class='op'>(</span><span class='va'>f_mmkin_parent</span><span class='op'>[</span><span class='st'>"DFOP"</span>, <span class='op'>]</span><span class='op'>)</span>
+</div><div class='output co'>#&gt;
+#&gt;
+#&gt; The following SaemixModel object was successfully created:
+#&gt;
+#&gt; Nonlinear mixed-effects model
+#&gt; Model function: Mixed model generated from mmkin object Model type: structural
+#&gt; function (psi, id, xidep)
+#&gt; {
+#&gt; g &lt;- plogis(psi[id, 4])
+#&gt; t = xidep[, "time"]
+#&gt; psi[id, 1] * (g * exp(-exp(psi[id, 2]) * t) + (1 - g) * exp(-exp(psi[id,
+#&gt; 3]) * t))
+#&gt; }
+#&gt; &lt;bytecode: 0x55555998e548&gt;
+#&gt; &lt;environment: 0x555558225bf0&gt;
#&gt; Nb of parameters: 4
-#&gt; parameter names: parent_0 log_k_parent log_k_A1 f_parent_ilr_1
+#&gt; parameter names: parent_0 log_k1 log_k2 g_qlogis
#&gt; distribution:
-#&gt; Parameter Distribution Estimated
-#&gt; [1,] parent_0 normal Estimated
-#&gt; [2,] log_k_parent normal Estimated
-#&gt; [3,] log_k_A1 normal Estimated
-#&gt; [4,] f_parent_ilr_1 normal Estimated
+#&gt; Parameter Distribution Estimated
+#&gt; [1,] parent_0 normal Estimated
+#&gt; [2,] log_k1 normal Estimated
+#&gt; [3,] log_k2 normal Estimated
+#&gt; [4,] g_qlogis normal Estimated
#&gt; Variance-covariance matrix:
-#&gt; parent_0 log_k_parent log_k_A1 f_parent_ilr_1
-#&gt; parent_0 1 0 0 0
-#&gt; log_k_parent 0 1 0 0
-#&gt; log_k_A1 0 0 1 0
-#&gt; f_parent_ilr_1 0 0 0 1
-#&gt; Error model: constant , initial values: a.1=4.97259024646577
+#&gt; parent_0 log_k1 log_k2 g_qlogis
+#&gt; parent_0 1 0 0 0
+#&gt; log_k1 0 1 0 0
+#&gt; log_k2 0 0 1 0
+#&gt; g_qlogis 0 0 0 1
+#&gt; Error model: constant , initial values: a.1=1.94671278396371
#&gt; No covariate in the model.
#&gt; Initial values
-#&gt; parent_0 log_k_parent log_k_A1 f_parent_ilr_1
-#&gt; Pop.CondInit 86.53449 -3.207005 -3.060308 -1.920449</div><div class='input'><span class='va'>d_saemix</span> <span class='op'>&lt;-</span> <span class='fu'>saemix_data</span><span class='op'>(</span><span class='va'>f_mmkin</span><span class='op'>)</span>
+#&gt; parent_0 log_k1 log_k2 g_qlogis
+#&gt; Pop.CondInit 94.08322 -1.834163 -4.210797 0.11002</div><div class='input'><span class='va'>d_saemix_parent</span> <span class='op'>&lt;-</span> <span class='fu'>saemix_data</span><span class='op'>(</span><span class='va'>f_mmkin_parent</span><span class='op'>[</span><span class='st'>"SFO"</span>, <span class='op'>]</span><span class='op'>)</span>
</div><div class='output co'>#&gt;
#&gt;
#&gt; The following SaemixData object was successfully created:
@@ -269,15 +445,12 @@ variances of the deviations of the parameters from these mean values.</p>
#&gt; longitudinal data for use with the SAEM algorithm
#&gt; Dataset ds_saemix
#&gt; Structured data: value ~ time + name | ds
-#&gt; X variable for graphs: time () </div><div class='input'><span class='va'>saemix_options</span> <span class='op'>&lt;-</span> <span class='fu'><a href='https://rdrr.io/r/base/list.html'>list</a></span><span class='op'>(</span>seed <span class='op'>=</span> <span class='fl'>123456</span>,
- save <span class='op'>=</span> <span class='cn'>FALSE</span>, save.graphs <span class='op'>=</span> <span class='cn'>FALSE</span>, displayProgress <span class='op'>=</span> <span class='cn'>FALSE</span>,
- nbiter.saemix <span class='op'>=</span> <span class='fu'><a href='https://rdrr.io/r/base/c.html'>c</a></span><span class='op'>(</span><span class='fl'>200</span>, <span class='fl'>80</span><span class='op'>)</span><span class='op'>)</span>
-<span class='va'>f_saemix</span> <span class='op'>&lt;-</span> <span class='fu'><a href='https://rdrr.io/pkg/saemix/man/saemix.html'>saemix</a></span><span class='op'>(</span><span class='va'>m_saemix</span>, <span class='va'>d_saemix</span>, <span class='va'>saemix_options</span><span class='op'>)</span>
+#&gt; X variable for graphs: time () </div><div class='input'><span class='va'>f_saemix_sfo</span> <span class='op'>&lt;-</span> <span class='fu'><a href='https://rdrr.io/pkg/saemix/man/saemix.html'>saemix</a></span><span class='op'>(</span><span class='va'>m_saemix_sfo</span>, <span class='va'>d_saemix_parent</span>, <span class='va'>saemix_options</span><span class='op'>)</span>
</div><div class='output co'>#&gt; Running main SAEM algorithm
-#&gt; [1] "Thu Nov 5 08:26:39 2020"
+#&gt; [1] "Thu Nov 5 23:53:31 2020"
#&gt; ..
#&gt; Minimisation finished
-#&gt; [1] "Thu Nov 5 08:28:33 2020"</div><div class='img'><img src='saemix-1.png' alt='' width='700' height='433' /></div><div class='output co'>#&gt; Nonlinear mixed-effects model fit by the SAEM algorithm
+#&gt; [1] "Thu Nov 5 23:53:32 2020"</div><div class='img'><img src='saemix-2.png' alt='' width='700' height='433' /></div><div class='output co'>#&gt; Nonlinear mixed-effects model fit by the SAEM algorithm
#&gt; -----------------------------------
#&gt; ---- Data ----
#&gt; -----------------------------------
@@ -288,8 +461,8 @@ variances of the deviations of the parameters from these mean values.</p>
#&gt; X variable for graphs: time ()
#&gt; Dataset characteristics:
#&gt; number of subjects: 5
-#&gt; number of observations: 170
-#&gt; average/min/max nb obs: 34.00 / 30 / 38
+#&gt; number of observations: 90
+#&gt; average/min/max nb obs: 18.00 / 16 / 20
#&gt; First 10 lines of data:
#&gt; ds time name value mdv cens occ ytype
#&gt; 1 Dataset 6 0 parent 97.2 0 0 1 1
@@ -309,59 +482,248 @@ variances of the deviations of the parameters from these mean values.</p>
#&gt; Model function: Mixed model generated from mmkin object Model type: structural
#&gt; function (psi, id, xidep)
#&gt; {
-#&gt; uid &lt;- unique(id)
-#&gt; res_list &lt;- parallel::mclapply(uid, function(i) {
-#&gt; transparms_optim &lt;- psi[i, ]
-#&gt; names(transparms_optim) &lt;- names(degparms_optim)
-#&gt; odeini_optim &lt;- transparms_optim[odeini_optim_parm_names]
-#&gt; names(odeini_optim) &lt;- gsub("_0$", "", odeini_optim_parm_names)
-#&gt; odeini &lt;- c(odeini_optim, odeini_fixed)[names(mkin_model$diffs)]
-#&gt; ode_transparms_optim_names &lt;- setdiff(names(transparms_optim),
-#&gt; odeini_optim_parm_names)
-#&gt; odeparms_optim &lt;- backtransform_odeparms(transparms_optim[ode_transparms_optim_names],
-#&gt; mkin_model, transform_rates = object[[1]]$transform_rates,
-#&gt; transform_fractions = object[[1]]$transform_fractions)
-#&gt; odeparms &lt;- c(odeparms_optim, odeparms_fixed)
-#&gt; xidep_i &lt;- subset(xidep, id == i)
-#&gt; if (analytical) {
-#&gt; out_values &lt;- mkin_model$deg_func(xidep_i, odeini,
-#&gt; odeparms)
-#&gt; }
-#&gt; else {
-#&gt; i_time &lt;- xidep_i$time
-#&gt; i_name &lt;- xidep_i$name
-#&gt; out_wide &lt;- mkinpredict(mkin_model, odeparms = odeparms,
-#&gt; odeini = odeini, solution_type = object[[1]]$solution_type,
-#&gt; outtimes = sort(unique(i_time)))
-#&gt; out_index &lt;- cbind(as.character(i_time), as.character(i_name))
-#&gt; out_values &lt;- out_wide[out_index]
-#&gt; }
-#&gt; return(out_values)
-#&gt; }, mc.cores = cores)
-#&gt; res &lt;- unlist(res_list)
-#&gt; return(res)
+#&gt; psi[id, 1] * exp(-exp(psi[id, 2]) * xidep[, "time"])
#&gt; }
-#&gt; &lt;bytecode: 0x55555d62aeb8&gt;
-#&gt; &lt;environment: 0x55555e35c170&gt;
+#&gt; &lt;bytecode: 0x55555998d588&gt;
+#&gt; &lt;environment: 0x55555c0f4ae8&gt;
+#&gt; Nb of parameters: 2
+#&gt; parameter names: parent_0 log_k_parent
+#&gt; distribution:
+#&gt; Parameter Distribution Estimated
+#&gt; [1,] parent_0 normal Estimated
+#&gt; [2,] log_k_parent normal Estimated
+#&gt; Variance-covariance matrix:
+#&gt; parent_0 log_k_parent
+#&gt; parent_0 1 0
+#&gt; log_k_parent 0 1
+#&gt; Error model: constant , initial values: a.1=5.76827561471585
+#&gt; No covariate in the model.
+#&gt; Initial values
+#&gt; parent_0 log_k_parent
+#&gt; Pop.CondInit 86.39406 -3.215063
+#&gt; -----------------------------------
+#&gt; ---- Key algorithm options ----
+#&gt; -----------------------------------
+#&gt; Estimation of individual parameters (MAP)
+#&gt; Estimation of standard errors and linearised log-likelihood
+#&gt; Estimation of log-likelihood by importance sampling
+#&gt; Number of iterations: K1=200, K2=80
+#&gt; Number of chains: 10
+#&gt; Seed: 123456
+#&gt; Number of MCMC iterations for IS: 5000
+#&gt; Simulations:
+#&gt; nb of simulated datasets used for npde: 1000
+#&gt; nb of simulated datasets used for VPC: 100
+#&gt; Input/output
+#&gt; save the results to a file: FALSE
+#&gt; save the graphs to files: FALSE
+#&gt; ----------------------------------------------------
+#&gt; ---- Results ----
+#&gt; ----------------------------------------------------
+#&gt; ----------------- Fixed effects ------------------
+#&gt; ----------------------------------------------------
+#&gt; Parameter Estimate SE CV(%)
+#&gt; parent_0 85.8 1.85 2.2
+#&gt; log_k_parent -3.2 0.59 18.3
+#&gt; a a.1 6.2 0.49 7.9
+#&gt; ----------------------------------------------------
+#&gt; ----------- Variance of random effects -----------
+#&gt; ----------------------------------------------------
+#&gt; Parameter Estimate SE CV(%)
+#&gt; parent_0 omega2.parent_0 7.8 10.7 138
+#&gt; log_k_parent omega2.log_k_parent 1.7 1.1 64
+#&gt; ----------------------------------------------------
+#&gt; ------ Correlation matrix of random effects ------
+#&gt; ----------------------------------------------------
+#&gt; omega2.parent_0 omega2.log_k_parent
+#&gt; omega2.parent_0 1 0
+#&gt; omega2.log_k_parent 0 1
+#&gt; ----------------------------------------------------
+#&gt; --------------- Statistical criteria -------------
+#&gt; ----------------------------------------------------
+#&gt; Likelihood computed by linearisation
+#&gt; -2LL= 615.4074
+#&gt; AIC = 625.4074
+#&gt; BIC = 623.4546
+#&gt;
+#&gt; Likelihood computed by importance sampling
+#&gt; -2LL= 614.4911
+#&gt; AIC = 624.4911
+#&gt; BIC = 622.5382
+#&gt; ----------------------------------------------------</div><div class='input'><span class='va'>f_saemix_fomc</span> <span class='op'>&lt;-</span> <span class='fu'><a href='https://rdrr.io/pkg/saemix/man/saemix.html'>saemix</a></span><span class='op'>(</span><span class='va'>m_saemix_fomc</span>, <span class='va'>d_saemix_parent</span>, <span class='va'>saemix_options</span><span class='op'>)</span>
+</div><div class='output co'>#&gt; Running main SAEM algorithm
+#&gt; [1] "Thu Nov 5 23:53:33 2020"
+#&gt; ..
+#&gt; Minimisation finished
+#&gt; [1] "Thu Nov 5 23:53:34 2020"</div><div class='img'><img src='saemix-3.png' alt='' width='700' height='433' /></div><div class='output co'>#&gt; Nonlinear mixed-effects model fit by the SAEM algorithm
+#&gt; -----------------------------------
+#&gt; ---- Data ----
+#&gt; -----------------------------------
+#&gt; Object of class SaemixData
+#&gt; longitudinal data for use with the SAEM algorithm
+#&gt; Dataset ds_saemix
+#&gt; Structured data: value ~ time + name | ds
+#&gt; X variable for graphs: time ()
+#&gt; Dataset characteristics:
+#&gt; number of subjects: 5
+#&gt; number of observations: 90
+#&gt; average/min/max nb obs: 18.00 / 16 / 20
+#&gt; First 10 lines of data:
+#&gt; ds time name value mdv cens occ ytype
+#&gt; 1 Dataset 6 0 parent 97.2 0 0 1 1
+#&gt; 2 Dataset 6 0 parent 96.4 0 0 1 1
+#&gt; 3 Dataset 6 3 parent 71.1 0 0 1 1
+#&gt; 4 Dataset 6 3 parent 69.2 0 0 1 1
+#&gt; 5 Dataset 6 6 parent 58.1 0 0 1 1
+#&gt; 6 Dataset 6 6 parent 56.6 0 0 1 1
+#&gt; 7 Dataset 6 10 parent 44.4 0 0 1 1
+#&gt; 8 Dataset 6 10 parent 43.4 0 0 1 1
+#&gt; 9 Dataset 6 20 parent 33.3 0 0 1 1
+#&gt; 10 Dataset 6 20 parent 29.2 0 0 1 1
+#&gt; -----------------------------------
+#&gt; ---- Model ----
+#&gt; -----------------------------------
+#&gt; Nonlinear mixed-effects model
+#&gt; Model function: Mixed model generated from mmkin object Model type: structural
+#&gt; function (psi, id, xidep)
+#&gt; {
+#&gt; psi[id, 1]/(xidep[, "time"]/exp(psi[id, 3]) + 1)^exp(psi[id,
+#&gt; 2])
+#&gt; }
+#&gt; &lt;bytecode: 0x55555998dc50&gt;
+#&gt; &lt;environment: 0x5555595d7668&gt;
+#&gt; Nb of parameters: 3
+#&gt; parameter names: parent_0 log_alpha log_beta
+#&gt; distribution:
+#&gt; Parameter Distribution Estimated
+#&gt; [1,] parent_0 normal Estimated
+#&gt; [2,] log_alpha normal Estimated
+#&gt; [3,] log_beta normal Estimated
+#&gt; Variance-covariance matrix:
+#&gt; parent_0 log_alpha log_beta
+#&gt; parent_0 1 0 0
+#&gt; log_alpha 0 1 0
+#&gt; log_beta 0 0 1
+#&gt; Error model: constant , initial values: a.1=1.91976382242696
+#&gt; No covariate in the model.
+#&gt; Initial values
+#&gt; parent_0 log_alpha log_beta
+#&gt; Pop.CondInit 94.43884 -0.2226095 2.048192
+#&gt; -----------------------------------
+#&gt; ---- Key algorithm options ----
+#&gt; -----------------------------------
+#&gt; Estimation of individual parameters (MAP)
+#&gt; Estimation of standard errors and linearised log-likelihood
+#&gt; Estimation of log-likelihood by importance sampling
+#&gt; Number of iterations: K1=200, K2=80
+#&gt; Number of chains: 10
+#&gt; Seed: 123456
+#&gt; Number of MCMC iterations for IS: 5000
+#&gt; Simulations:
+#&gt; nb of simulated datasets used for npde: 1000
+#&gt; nb of simulated datasets used for VPC: 100
+#&gt; Input/output
+#&gt; save the results to a file: FALSE
+#&gt; save the graphs to files: FALSE
+#&gt; ----------------------------------------------------
+#&gt; ---- Results ----
+#&gt; ----------------------------------------------------
+#&gt; ----------------- Fixed effects ------------------
+#&gt; ----------------------------------------------------
+#&gt; Parameter Estimate SE CV(%)
+#&gt; parent_0 94.49 1.18 1.2
+#&gt; log_alpha -0.21 0.30 142.0
+#&gt; log_beta 2.06 0.21 10.4
+#&gt; a a.1 2.28 0.19 8.2
+#&gt; ----------------------------------------------------
+#&gt; ----------- Variance of random effects -----------
+#&gt; ----------------------------------------------------
+#&gt; Parameter Estimate SE CV(%)
+#&gt; parent_0 omega2.parent_0 4.66 4.34 93
+#&gt; log_alpha omega2.log_alpha 0.45 0.29 65
+#&gt; log_beta omega2.log_beta 0.19 0.14 75
+#&gt; ----------------------------------------------------
+#&gt; ------ Correlation matrix of random effects ------
+#&gt; ----------------------------------------------------
+#&gt; omega2.parent_0 omega2.log_alpha omega2.log_beta
+#&gt; omega2.parent_0 1 0 0
+#&gt; omega2.log_alpha 0 1 0
+#&gt; omega2.log_beta 0 0 1
+#&gt; ----------------------------------------------------
+#&gt; --------------- Statistical criteria -------------
+#&gt; ----------------------------------------------------
+#&gt; Likelihood computed by linearisation
+#&gt; -2LL= 454.0598
+#&gt; AIC = 468.0598
+#&gt; BIC = 465.3259
+#&gt;
+#&gt; Likelihood computed by importance sampling
+#&gt; -2LL= 453.7499
+#&gt; AIC = 467.7499
+#&gt; BIC = 465.016
+#&gt; ----------------------------------------------------</div><div class='input'><span class='va'>f_saemix_dfop</span> <span class='op'>&lt;-</span> <span class='fu'><a href='https://rdrr.io/pkg/saemix/man/saemix.html'>saemix</a></span><span class='op'>(</span><span class='va'>m_saemix_dfop</span>, <span class='va'>d_saemix_parent</span>, <span class='va'>saemix_options</span><span class='op'>)</span>
+</div><div class='output co'>#&gt; Running main SAEM algorithm
+#&gt; [1] "Thu Nov 5 23:53:35 2020"
+#&gt; ..
+#&gt; Minimisation finished
+#&gt; [1] "Thu Nov 5 23:53:37 2020"</div><div class='img'><img src='saemix-4.png' alt='' width='700' height='433' /></div><div class='output co'>#&gt; Nonlinear mixed-effects model fit by the SAEM algorithm
+#&gt; -----------------------------------
+#&gt; ---- Data ----
+#&gt; -----------------------------------
+#&gt; Object of class SaemixData
+#&gt; longitudinal data for use with the SAEM algorithm
+#&gt; Dataset ds_saemix
+#&gt; Structured data: value ~ time + name | ds
+#&gt; X variable for graphs: time ()
+#&gt; Dataset characteristics:
+#&gt; number of subjects: 5
+#&gt; number of observations: 90
+#&gt; average/min/max nb obs: 18.00 / 16 / 20
+#&gt; First 10 lines of data:
+#&gt; ds time name value mdv cens occ ytype
+#&gt; 1 Dataset 6 0 parent 97.2 0 0 1 1
+#&gt; 2 Dataset 6 0 parent 96.4 0 0 1 1
+#&gt; 3 Dataset 6 3 parent 71.1 0 0 1 1
+#&gt; 4 Dataset 6 3 parent 69.2 0 0 1 1
+#&gt; 5 Dataset 6 6 parent 58.1 0 0 1 1
+#&gt; 6 Dataset 6 6 parent 56.6 0 0 1 1
+#&gt; 7 Dataset 6 10 parent 44.4 0 0 1 1
+#&gt; 8 Dataset 6 10 parent 43.4 0 0 1 1
+#&gt; 9 Dataset 6 20 parent 33.3 0 0 1 1
+#&gt; 10 Dataset 6 20 parent 29.2 0 0 1 1
+#&gt; -----------------------------------
+#&gt; ---- Model ----
+#&gt; -----------------------------------
+#&gt; Nonlinear mixed-effects model
+#&gt; Model function: Mixed model generated from mmkin object Model type: structural
+#&gt; function (psi, id, xidep)
+#&gt; {
+#&gt; g &lt;- plogis(psi[id, 4])
+#&gt; t = xidep[, "time"]
+#&gt; psi[id, 1] * (g * exp(-exp(psi[id, 2]) * t) + (1 - g) * exp(-exp(psi[id,
+#&gt; 3]) * t))
+#&gt; }
+#&gt; &lt;bytecode: 0x55555998e548&gt;
+#&gt; &lt;environment: 0x555558225bf0&gt;
#&gt; Nb of parameters: 4
-#&gt; parameter names: parent_0 log_k_parent log_k_A1 f_parent_ilr_1
+#&gt; parameter names: parent_0 log_k1 log_k2 g_qlogis
#&gt; distribution:
-#&gt; Parameter Distribution Estimated
-#&gt; [1,] parent_0 normal Estimated
-#&gt; [2,] log_k_parent normal Estimated
-#&gt; [3,] log_k_A1 normal Estimated
-#&gt; [4,] f_parent_ilr_1 normal Estimated
+#&gt; Parameter Distribution Estimated
+#&gt; [1,] parent_0 normal Estimated
+#&gt; [2,] log_k1 normal Estimated
+#&gt; [3,] log_k2 normal Estimated
+#&gt; [4,] g_qlogis normal Estimated
#&gt; Variance-covariance matrix:
-#&gt; parent_0 log_k_parent log_k_A1 f_parent_ilr_1
-#&gt; parent_0 1 0 0 0
-#&gt; log_k_parent 0 1 0 0
-#&gt; log_k_A1 0 0 1 0
-#&gt; f_parent_ilr_1 0 0 0 1
-#&gt; Error model: constant , initial values: a.1=4.97259024646577
+#&gt; parent_0 log_k1 log_k2 g_qlogis
+#&gt; parent_0 1 0 0 0
+#&gt; log_k1 0 1 0 0
+#&gt; log_k2 0 0 1 0
+#&gt; g_qlogis 0 0 0 1
+#&gt; Error model: constant , initial values: a.1=1.94671278396371
#&gt; No covariate in the model.
#&gt; Initial values
-#&gt; parent_0 log_k_parent log_k_A1 f_parent_ilr_1
-#&gt; Pop.CondInit 86.53449 -3.207005 -3.060308 -1.920449
+#&gt; parent_0 log_k1 log_k2 g_qlogis
+#&gt; Pop.CondInit 94.08322 -1.834163 -4.210797 0.11002
#&gt; -----------------------------------
#&gt; ---- Key algorithm options ----
#&gt; -----------------------------------
@@ -383,69 +745,195 @@ variances of the deviations of the parameters from these mean values.</p>
#&gt; ----------------------------------------------------
#&gt; ----------------- Fixed effects ------------------
#&gt; ----------------------------------------------------
-#&gt; Parameter Estimate SE CV(%)
-#&gt; parent_0 86.09 1.57 1.8
-#&gt; log_k_parent -3.21 0.59 18.5
-#&gt; log_k_A1 -4.69 0.31 6.6
-#&gt; f_parent_ilr_1 -0.34 0.30 89.2
-#&gt; a a.1 4.69 0.27 5.8
+#&gt; Parameter Estimate SE CV(%)
+#&gt; parent_0 93.97 1.35 1.4
+#&gt; log_k1 -2.37 0.58 24.5
+#&gt; log_k2 -3.63 0.87 24.0
+#&gt; g_qlogis -0.14 0.34 246.1
+#&gt; a a.1 2.32 0.19 8.3
#&gt; ----------------------------------------------------
#&gt; ----------- Variance of random effects -----------
#&gt; ----------------------------------------------------
-#&gt; Parameter Estimate SE CV(%)
-#&gt; parent_0 omega2.parent_0 7.07 7.72 109
-#&gt; log_k_parent omega2.log_k_parent 1.75 1.11 63
-#&gt; log_k_A1 omega2.log_k_A1 0.28 0.28 99
-#&gt; f_parent_ilr_1 omega2.f_parent_ilr_1 0.39 0.27 71
+#&gt; Parameter Estimate SE CV(%)
+#&gt; parent_0 omega2.parent_0 6.97 5.72 82
+#&gt; log_k1 omega2.log_k1 1.63 1.06 65
+#&gt; log_k2 omega2.log_k2 3.73 2.39 64
+#&gt; g_qlogis omega2.g_qlogis 0.16 0.27 173
#&gt; ----------------------------------------------------
#&gt; ------ Correlation matrix of random effects ------
#&gt; ----------------------------------------------------
-#&gt; omega2.parent_0 omega2.log_k_parent omega2.log_k_A1
-#&gt; omega2.parent_0 1 0 0
-#&gt; omega2.log_k_parent 0 1 0
-#&gt; omega2.log_k_A1 0 0 1
-#&gt; omega2.f_parent_ilr_1 0 0 0
-#&gt; omega2.f_parent_ilr_1
-#&gt; omega2.parent_0 0
-#&gt; omega2.log_k_parent 0
-#&gt; omega2.log_k_A1 0
-#&gt; omega2.f_parent_ilr_1 1
+#&gt; omega2.parent_0 omega2.log_k1 omega2.log_k2 omega2.g_qlogis
+#&gt; omega2.parent_0 1 0 0 0
+#&gt; omega2.log_k1 0 1 0 0
+#&gt; omega2.log_k2 0 0 1 0
+#&gt; omega2.g_qlogis 0 0 0 1
#&gt; ----------------------------------------------------
#&gt; --------------- Statistical criteria -------------
#&gt; ----------------------------------------------------
#&gt; Likelihood computed by linearisation
-#&gt; -2LL= 1064.35
-#&gt; AIC = 1082.35
-#&gt; BIC = 1078.835
+#&gt; -2LL= 485.4627
+#&gt; AIC = 503.4627
+#&gt; BIC = 499.9477
#&gt;
#&gt; Likelihood computed by importance sampling
-#&gt; -2LL= 1063.475
-#&gt; AIC = 1081.475
-#&gt; BIC = 1077.96
-#&gt; ----------------------------------------------------</div><div class='input'><span class='fu'><a href='https://rdrr.io/pkg/saemix/man/plot-SaemixObject-method.html'>plot</a></span><span class='op'>(</span><span class='va'>f_saemix</span>, plot.type <span class='op'>=</span> <span class='st'>"convergence"</span><span class='op'>)</span>
-</div><div class='output co'>#&gt; Plotting convergence plots</div><div class='img'><img src='saemix-2.png' alt='' width='700' height='433' /></div><div class='input'><span class='co'># }</span>
-<span class='co'># Synthetic data with two-component error</span>
-<span class='va'>sampling_times</span> <span class='op'>=</span> <span class='fu'><a href='https://rdrr.io/r/base/c.html'>c</a></span><span class='op'>(</span><span class='fl'>0</span>, <span class='fl'>1</span>, <span class='fl'>3</span>, <span class='fl'>7</span>, <span class='fl'>14</span>, <span class='fl'>28</span>, <span class='fl'>60</span>, <span class='fl'>90</span>, <span class='fl'>120</span><span class='op'>)</span>
-<span class='va'>dt50_sfo_in</span> <span class='op'>&lt;-</span> <span class='fu'><a href='https://rdrr.io/r/base/c.html'>c</a></span><span class='op'>(</span><span class='fl'>80</span>, <span class='fl'>90</span>, <span class='fl'>100</span>, <span class='fl'>111.111</span>, <span class='fl'>125</span><span class='op'>)</span>
-<span class='va'>k_in</span> <span class='op'>&lt;-</span> <span class='fu'><a href='https://rdrr.io/r/base/Log.html'>log</a></span><span class='op'>(</span><span class='fl'>2</span><span class='op'>)</span> <span class='op'>/</span> <span class='va'>dt50_sfo_in</span>
-
-<span class='va'>SFO</span> <span class='op'>&lt;-</span> <span class='fu'><a href='mkinmod.html'>mkinmod</a></span><span class='op'>(</span>parent <span class='op'>=</span> <span class='fu'><a href='mkinsub.html'>mkinsub</a></span><span class='op'>(</span><span class='st'>"SFO"</span><span class='op'>)</span><span class='op'>)</span>
-
-<span class='va'>pred_sfo</span> <span class='op'>&lt;-</span> <span class='kw'>function</span><span class='op'>(</span><span class='va'>k</span><span class='op'>)</span> <span class='op'>{</span>
- <span class='fu'><a href='mkinpredict.html'>mkinpredict</a></span><span class='op'>(</span><span class='va'>SFO</span>, <span class='fu'><a href='https://rdrr.io/r/base/c.html'>c</a></span><span class='op'>(</span>k_parent <span class='op'>=</span> <span class='va'>k</span><span class='op'>)</span>,
- <span class='fu'><a href='https://rdrr.io/r/base/c.html'>c</a></span><span class='op'>(</span>parent <span class='op'>=</span> <span class='fl'>100</span><span class='op'>)</span>, <span class='va'>sampling_times</span><span class='op'>)</span>
-<span class='op'>}</span>
-
-<span class='va'>ds_sfo_mean</span> <span class='op'>&lt;-</span> <span class='fu'><a href='https://rdrr.io/r/base/lapply.html'>lapply</a></span><span class='op'>(</span><span class='va'>k_in</span>, <span class='va'>pred_sfo</span><span class='op'>)</span>
-<span class='fu'><a href='https://rdrr.io/r/base/Random.html'>set.seed</a></span><span class='op'>(</span><span class='fl'>123456L</span><span class='op'>)</span>
-<span class='va'>ds_sfo_syn</span> <span class='op'>&lt;-</span> <span class='fu'><a href='https://rdrr.io/r/base/lapply.html'>lapply</a></span><span class='op'>(</span><span class='va'>ds_sfo_mean</span>, <span class='kw'>function</span><span class='op'>(</span><span class='va'>ds</span><span class='op'>)</span> <span class='op'>{</span>
- <span class='fu'><a href='add_err.html'>add_err</a></span><span class='op'>(</span><span class='va'>ds</span>, sdfunc <span class='op'>=</span> <span class='kw'>function</span><span class='op'>(</span><span class='va'>value</span><span class='op'>)</span> <span class='fu'><a href='https://rdrr.io/r/base/MathFun.html'>sqrt</a></span><span class='op'>(</span><span class='fl'>1</span><span class='op'>^</span><span class='fl'>2</span> <span class='op'>+</span> <span class='va'>value</span><span class='op'>^</span><span class='fl'>2</span> <span class='op'>*</span> <span class='fl'>0.07</span><span class='op'>^</span><span class='fl'>2</span><span class='op'>)</span>,
- n <span class='op'>=</span> <span class='fl'>1</span><span class='op'>)</span><span class='op'>[[</span><span class='fl'>1</span><span class='op'>]</span><span class='op'>]</span>
- <span class='op'>}</span><span class='op'>)</span>
-<span class='co'># \dontrun{</span>
-<span class='va'>f_mmkin_syn</span> <span class='op'>&lt;-</span> <span class='fu'><a href='mmkin.html'>mmkin</a></span><span class='op'>(</span><span class='st'>"SFO"</span>, <span class='va'>ds_sfo_syn</span>, error_model <span class='op'>=</span> <span class='st'>"tc"</span>, quiet <span class='op'>=</span> <span class='cn'>TRUE</span><span class='op'>)</span>
-<span class='co'># plot(f_mmkin_syn)</span>
-<span class='va'>m_saemix_tc</span> <span class='op'>&lt;-</span> <span class='fu'>saemix_model</span><span class='op'>(</span><span class='va'>f_mmkin_syn</span>, cores <span class='op'>=</span> <span class='fl'>1</span><span class='op'>)</span>
+#&gt; -2LL= 473.563
+#&gt; AIC = 491.563
+#&gt; BIC = 488.048
+#&gt; ----------------------------------------------------</div><div class='input'><span class='fu'><a href='https://rdrr.io/pkg/saemix/man/compare.saemix.html'>compare.saemix</a></span><span class='op'>(</span><span class='fu'><a href='https://rdrr.io/r/base/list.html'>list</a></span><span class='op'>(</span><span class='va'>f_saemix_sfo</span>, <span class='va'>f_saemix_fomc</span>, <span class='va'>f_saemix_dfop</span><span class='op'>)</span><span class='op'>)</span>
+</div><div class='output co'>#&gt; Likelihoods computed by importance sampling </div><div class='output co'>#&gt; AIC BIC
+#&gt; 1 624.4911 622.5382
+#&gt; 2 467.7499 465.0160
+#&gt; 3 491.5630 488.0480</div><div class='input'><span class='va'>f_mmkin_parent_tc</span> <span class='op'>&lt;-</span> <span class='fu'><a href='https://rdrr.io/r/stats/update.html'>update</a></span><span class='op'>(</span><span class='va'>f_mmkin_parent</span>, error_model <span class='op'>=</span> <span class='st'>"tc"</span><span class='op'>)</span>
+<span class='va'>m_saemix_fomc_tc</span> <span class='op'>&lt;-</span> <span class='fu'>saemix_model</span><span class='op'>(</span><span class='va'>f_mmkin_parent_tc</span><span class='op'>[</span><span class='st'>"FOMC"</span>, <span class='op'>]</span><span class='op'>)</span>
+</div><div class='output co'>#&gt;
+#&gt;
+#&gt; The following SaemixModel object was successfully created:
+#&gt;
+#&gt; Nonlinear mixed-effects model
+#&gt; Model function: Mixed model generated from mmkin object Model type: structural
+#&gt; function (psi, id, xidep)
+#&gt; {
+#&gt; psi[id, 1]/(xidep[, "time"]/exp(psi[id, 3]) + 1)^exp(psi[id,
+#&gt; 2])
+#&gt; }
+#&gt; &lt;bytecode: 0x55555998dc50&gt;
+#&gt; &lt;environment: 0x555559a957f8&gt;
+#&gt; Nb of parameters: 3
+#&gt; parameter names: parent_0 log_alpha log_beta
+#&gt; distribution:
+#&gt; Parameter Distribution Estimated
+#&gt; [1,] parent_0 normal Estimated
+#&gt; [2,] log_alpha normal Estimated
+#&gt; [3,] log_beta normal Estimated
+#&gt; Variance-covariance matrix:
+#&gt; parent_0 log_alpha log_beta
+#&gt; parent_0 1 0 0
+#&gt; log_alpha 0 1 0
+#&gt; log_beta 0 0 1
+#&gt; Error model: combined , initial values: a.1=1.10728182011691 b.1=0.024889924291374
+#&gt; No covariate in the model.
+#&gt; Initial values
+#&gt; parent_0 log_alpha log_beta
+#&gt; Pop.CondInit 93.13042 -0.1215336 2.230815</div><div class='input'><span class='va'>f_saemix_fomc_tc</span> <span class='op'>&lt;-</span> <span class='fu'><a href='https://rdrr.io/pkg/saemix/man/saemix.html'>saemix</a></span><span class='op'>(</span><span class='va'>m_saemix_fomc_tc</span>, <span class='va'>d_saemix_parent</span>, <span class='va'>saemix_options</span><span class='op'>)</span>
+</div><div class='output co'>#&gt; Running main SAEM algorithm
+#&gt; [1] "Thu Nov 5 23:53:38 2020"
+#&gt; ..
+#&gt; Minimisation finished
+#&gt; [1] "Thu Nov 5 23:53:42 2020"</div><div class='img'><img src='saemix-5.png' alt='' width='700' height='433' /></div><div class='output co'>#&gt; Nonlinear mixed-effects model fit by the SAEM algorithm
+#&gt; -----------------------------------
+#&gt; ---- Data ----
+#&gt; -----------------------------------
+#&gt; Object of class SaemixData
+#&gt; longitudinal data for use with the SAEM algorithm
+#&gt; Dataset ds_saemix
+#&gt; Structured data: value ~ time + name | ds
+#&gt; X variable for graphs: time ()
+#&gt; Dataset characteristics:
+#&gt; number of subjects: 5
+#&gt; number of observations: 90
+#&gt; average/min/max nb obs: 18.00 / 16 / 20
+#&gt; First 10 lines of data:
+#&gt; ds time name value mdv cens occ ytype
+#&gt; 1 Dataset 6 0 parent 97.2 0 0 1 1
+#&gt; 2 Dataset 6 0 parent 96.4 0 0 1 1
+#&gt; 3 Dataset 6 3 parent 71.1 0 0 1 1
+#&gt; 4 Dataset 6 3 parent 69.2 0 0 1 1
+#&gt; 5 Dataset 6 6 parent 58.1 0 0 1 1
+#&gt; 6 Dataset 6 6 parent 56.6 0 0 1 1
+#&gt; 7 Dataset 6 10 parent 44.4 0 0 1 1
+#&gt; 8 Dataset 6 10 parent 43.4 0 0 1 1
+#&gt; 9 Dataset 6 20 parent 33.3 0 0 1 1
+#&gt; 10 Dataset 6 20 parent 29.2 0 0 1 1
+#&gt; -----------------------------------
+#&gt; ---- Model ----
+#&gt; -----------------------------------
+#&gt; Nonlinear mixed-effects model
+#&gt; Model function: Mixed model generated from mmkin object Model type: structural
+#&gt; function (psi, id, xidep)
+#&gt; {
+#&gt; psi[id, 1]/(xidep[, "time"]/exp(psi[id, 3]) + 1)^exp(psi[id,
+#&gt; 2])
+#&gt; }
+#&gt; &lt;bytecode: 0x55555998dc50&gt;
+#&gt; &lt;environment: 0x555559a957f8&gt;
+#&gt; Nb of parameters: 3
+#&gt; parameter names: parent_0 log_alpha log_beta
+#&gt; distribution:
+#&gt; Parameter Distribution Estimated
+#&gt; [1,] parent_0 normal Estimated
+#&gt; [2,] log_alpha normal Estimated
+#&gt; [3,] log_beta normal Estimated
+#&gt; Variance-covariance matrix:
+#&gt; parent_0 log_alpha log_beta
+#&gt; parent_0 1 0 0
+#&gt; log_alpha 0 1 0
+#&gt; log_beta 0 0 1
+#&gt; Error model: combined , initial values: a.1=1.10728182011691 b.1=0.024889924291374
+#&gt; No covariate in the model.
+#&gt; Initial values
+#&gt; parent_0 log_alpha log_beta
+#&gt; Pop.CondInit 93.13042 -0.1215336 2.230815
+#&gt; -----------------------------------
+#&gt; ---- Key algorithm options ----
+#&gt; -----------------------------------
+#&gt; Estimation of individual parameters (MAP)
+#&gt; Estimation of standard errors and linearised log-likelihood
+#&gt; Estimation of log-likelihood by importance sampling
+#&gt; Number of iterations: K1=200, K2=80
+#&gt; Number of chains: 10
+#&gt; Seed: 123456
+#&gt; Number of MCMC iterations for IS: 5000
+#&gt; Simulations:
+#&gt; nb of simulated datasets used for npde: 1000
+#&gt; nb of simulated datasets used for VPC: 100
+#&gt; Input/output
+#&gt; save the results to a file: FALSE
+#&gt; save the graphs to files: FALSE
+#&gt; ----------------------------------------------------
+#&gt; ---- Results ----
+#&gt; ----------------------------------------------------
+#&gt; ----------------- Fixed effects ------------------
+#&gt; ----------------------------------------------------
+#&gt; Parameter Estimate SE CV(%)
+#&gt; parent_0 94.4481 1.2052 1.3
+#&gt; log_alpha -0.2088 0.3059 146.5
+#&gt; log_beta 2.0668 0.2182 10.6
+#&gt; a a.1 2.4273 0.3178 13.1
+#&gt; b b.1 -0.0037 0.0062 168.3
+#&gt; ----------------------------------------------------
+#&gt; ----------- Variance of random effects -----------
+#&gt; ----------------------------------------------------
+#&gt; Parameter Estimate SE CV(%)
+#&gt; parent_0 omega2.parent_0 5.34 4.58 86
+#&gt; log_alpha omega2.log_alpha 0.46 0.29 65
+#&gt; log_beta omega2.log_beta 0.20 0.15 74
+#&gt; ----------------------------------------------------
+#&gt; ------ Correlation matrix of random effects ------
+#&gt; ----------------------------------------------------
+#&gt; omega2.parent_0 omega2.log_alpha omega2.log_beta
+#&gt; omega2.parent_0 1 0 0
+#&gt; omega2.log_alpha 0 1 0
+#&gt; omega2.log_beta 0 0 1
+#&gt; ----------------------------------------------------
+#&gt; --------------- Statistical criteria -------------
+#&gt; ----------------------------------------------------
+#&gt; Likelihood computed by linearisation
+#&gt; -2LL= 453.7703
+#&gt; AIC = 469.7703
+#&gt; BIC = 466.6458
+#&gt;
+#&gt; Likelihood computed by importance sampling
+#&gt; -2LL= 453.6186
+#&gt; AIC = 469.6186
+#&gt; BIC = 466.4942
+#&gt; ----------------------------------------------------</div><div class='input'><span class='fu'><a href='https://rdrr.io/pkg/saemix/man/compare.saemix.html'>compare.saemix</a></span><span class='op'>(</span><span class='fu'><a href='https://rdrr.io/r/base/list.html'>list</a></span><span class='op'>(</span><span class='va'>f_saemix_fomc</span>, <span class='va'>f_saemix_fomc_tc</span><span class='op'>)</span><span class='op'>)</span>
+</div><div class='output co'>#&gt; Likelihoods computed by importance sampling </div><div class='output co'>#&gt; AIC BIC
+#&gt; 1 467.7499 465.0160
+#&gt; 2 469.6186 466.4942</div><div class='input'>
+<span class='va'>dfop_sfo</span> <span class='op'>&lt;-</span> <span class='fu'><a href='mkinmod.html'>mkinmod</a></span><span class='op'>(</span>parent <span class='op'>=</span> <span class='fu'><a href='mkinsub.html'>mkinsub</a></span><span class='op'>(</span><span class='st'>"DFOP"</span>, <span class='st'>"A1"</span><span class='op'>)</span>,
+ A1 <span class='op'>=</span> <span class='fu'><a href='mkinsub.html'>mkinsub</a></span><span class='op'>(</span><span class='st'>"SFO"</span><span class='op'>)</span><span class='op'>)</span>
+</div><div class='output co'>#&gt; <span class='message'>Successfully compiled differential equation model from auto-generated C code.</span></div><div class='input'><span class='va'>f_mmkin</span> <span class='op'>&lt;-</span> <span class='fu'><a href='mmkin.html'>mmkin</a></span><span class='op'>(</span><span class='fu'><a href='https://rdrr.io/r/base/list.html'>list</a></span><span class='op'>(</span><span class='st'>"DFOP-SFO"</span> <span class='op'>=</span> <span class='va'>dfop_sfo</span><span class='op'>)</span>, <span class='va'>ds</span>, quiet <span class='op'>=</span> <span class='cn'>TRUE</span><span class='op'>)</span>
+<span class='va'>m_saemix</span> <span class='op'>&lt;-</span> <span class='fu'>saemix_model</span><span class='op'>(</span><span class='va'>f_mmkin</span><span class='op'>)</span>
</div><div class='output co'>#&gt;
#&gt;
#&gt; The following SaemixModel object was successfully created:
@@ -468,7 +956,7 @@ variances of the deviations of the parameters from these mean values.</p>
#&gt; transform_fractions = object[[1]]$transform_fractions)
#&gt; odeparms &lt;- c(odeparms_optim, odeparms_fixed)
#&gt; xidep_i &lt;- subset(xidep, id == i)
-#&gt; if (analytical) {
+#&gt; if (solution_type == "analytical") {
#&gt; out_values &lt;- mkin_model$deg_func(xidep_i, odeini,
#&gt; odeparms)
#&gt; }
@@ -476,7 +964,7 @@ variances of the deviations of the parameters from these mean values.</p>
#&gt; i_time &lt;- xidep_i$time
#&gt; i_name &lt;- xidep_i$name
#&gt; out_wide &lt;- mkinpredict(mkin_model, odeparms = odeparms,
-#&gt; odeini = odeini, solution_type = object[[1]]$solution_type,
+#&gt; odeini = odeini, solution_type = solution_type,
#&gt; outtimes = sort(unique(i_time)))
#&gt; out_index &lt;- cbind(as.character(i_time), as.character(i_name))
#&gt; out_values &lt;- out_wide[out_index]
@@ -486,23 +974,31 @@ variances of the deviations of the parameters from these mean values.</p>
#&gt; res &lt;- unlist(res_list)
#&gt; return(res)
#&gt; }
-#&gt; &lt;bytecode: 0x55555d62aeb8&gt;
-#&gt; &lt;environment: 0x55555cd8e028&gt;
-#&gt; Nb of parameters: 2
-#&gt; parameter names: parent_0 log_k_parent
+#&gt; &lt;bytecode: 0x55555998cba0&gt;
+#&gt; &lt;environment: 0x55555bd1fee8&gt;
+#&gt; Nb of parameters: 6
+#&gt; parameter names: parent_0 log_k_A1 f_parent_qlogis log_k1 log_k2 g_qlogis
#&gt; distribution:
-#&gt; Parameter Distribution Estimated
-#&gt; [1,] parent_0 normal Estimated
-#&gt; [2,] log_k_parent normal Estimated
+#&gt; Parameter Distribution Estimated
+#&gt; [1,] parent_0 normal Estimated
+#&gt; [2,] log_k_A1 normal Estimated
+#&gt; [3,] f_parent_qlogis normal Estimated
+#&gt; [4,] log_k1 normal Estimated
+#&gt; [5,] log_k2 normal Estimated
+#&gt; [6,] g_qlogis normal Estimated
#&gt; Variance-covariance matrix:
-#&gt; parent_0 log_k_parent
-#&gt; parent_0 1 0
-#&gt; log_k_parent 0 1
-#&gt; Error model: combined , initial values: a.1=1.05209877924905 b.1=0.0586479225303944
+#&gt; parent_0 log_k_A1 f_parent_qlogis log_k1 log_k2 g_qlogis
+#&gt; parent_0 1 0 0 0 0 0
+#&gt; log_k_A1 0 1 0 0 0 0
+#&gt; f_parent_qlogis 0 0 1 0 0 0
+#&gt; log_k1 0 0 0 1 0 0
+#&gt; log_k2 0 0 0 0 1 0
+#&gt; g_qlogis 0 0 0 0 0 1
+#&gt; Error model: constant , initial values: a.1=1.64723790168612
#&gt; No covariate in the model.
#&gt; Initial values
-#&gt; parent_0 log_k_parent
-#&gt; Pop.CondInit 100.315 -4.962075</div><div class='input'><span class='va'>d_saemix_tc</span> <span class='op'>&lt;-</span> <span class='fu'>saemix_data</span><span class='op'>(</span><span class='va'>f_mmkin_syn</span><span class='op'>)</span>
+#&gt; parent_0 log_k_A1 f_parent_qlogis log_k1 log_k2 g_qlogis
+#&gt; Pop.CondInit 93.81015 -9.764746 -0.9711148 -1.879937 -4.270814 0.1356441</div><div class='input'><span class='va'>d_saemix</span> <span class='op'>&lt;-</span> <span class='fu'>saemix_data</span><span class='op'>(</span><span class='va'>f_mmkin</span><span class='op'>)</span>
</div><div class='output co'>#&gt;
#&gt;
#&gt; The following SaemixData object was successfully created:
@@ -511,12 +1007,12 @@ variances of the deviations of the parameters from these mean values.</p>
#&gt; longitudinal data for use with the SAEM algorithm
#&gt; Dataset ds_saemix
#&gt; Structured data: value ~ time + name | ds
-#&gt; X variable for graphs: time () </div><div class='input'><span class='va'>f_saemix_tc</span> <span class='op'>&lt;-</span> <span class='fu'><a href='https://rdrr.io/pkg/saemix/man/saemix.html'>saemix</a></span><span class='op'>(</span><span class='va'>m_saemix_tc</span>, <span class='va'>d_saemix_tc</span>, <span class='va'>saemix_options</span><span class='op'>)</span>
+#&gt; X variable for graphs: time () </div><div class='input'><span class='va'>f_saemix</span> <span class='op'>&lt;-</span> <span class='fu'><a href='https://rdrr.io/pkg/saemix/man/saemix.html'>saemix</a></span><span class='op'>(</span><span class='va'>m_saemix</span>, <span class='va'>d_saemix</span>, <span class='va'>saemix_options</span><span class='op'>)</span>
</div><div class='output co'>#&gt; Running main SAEM algorithm
-#&gt; [1] "Thu Nov 5 08:28:50 2020"
+#&gt; [1] "Thu Nov 5 23:53:43 2020"
#&gt; ..
#&gt; Minimisation finished
-#&gt; [1] "Thu Nov 5 08:29:41 2020"</div><div class='output co'>#&gt; Nonlinear mixed-effects model fit by the SAEM algorithm
+#&gt; [1] "Thu Nov 5 23:56:33 2020"</div><div class='img'><img src='saemix-6.png' alt='' width='700' height='433' /></div><div class='output co'>#&gt; Nonlinear mixed-effects model fit by the SAEM algorithm
#&gt; -----------------------------------
#&gt; ---- Data ----
#&gt; -----------------------------------
@@ -527,20 +1023,20 @@ variances of the deviations of the parameters from these mean values.</p>
#&gt; X variable for graphs: time ()
#&gt; Dataset characteristics:
#&gt; number of subjects: 5
-#&gt; number of observations: 90
-#&gt; average/min/max nb obs: 18.00 / 18 / 18
+#&gt; number of observations: 170
+#&gt; average/min/max nb obs: 34.00 / 30 / 38
#&gt; First 10 lines of data:
-#&gt; ds time name value mdv cens occ ytype
-#&gt; 1 1 0 parent 105.9 0 0 1 1
-#&gt; 2 1 0 parent 98.0 0 0 1 1
-#&gt; 3 1 1 parent 96.6 0 0 1 1
-#&gt; 4 1 1 parent 99.8 0 0 1 1
-#&gt; 5 1 3 parent 113.0 0 0 1 1
-#&gt; 6 1 3 parent 103.2 0 0 1 1
-#&gt; 7 1 7 parent 102.9 0 0 1 1
-#&gt; 8 1 7 parent 110.8 0 0 1 1
-#&gt; 9 1 14 parent 95.9 0 0 1 1
-#&gt; 10 1 14 parent 85.9 0 0 1 1
+#&gt; ds time name value mdv cens occ ytype
+#&gt; 1 Dataset 6 0 parent 97.2 0 0 1 1
+#&gt; 2 Dataset 6 0 parent 96.4 0 0 1 1
+#&gt; 3 Dataset 6 3 parent 71.1 0 0 1 1
+#&gt; 4 Dataset 6 3 parent 69.2 0 0 1 1
+#&gt; 5 Dataset 6 6 parent 58.1 0 0 1 1
+#&gt; 6 Dataset 6 6 parent 56.6 0 0 1 1
+#&gt; 7 Dataset 6 10 parent 44.4 0 0 1 1
+#&gt; 8 Dataset 6 10 parent 43.4 0 0 1 1
+#&gt; 9 Dataset 6 20 parent 33.3 0 0 1 1
+#&gt; 10 Dataset 6 20 parent 29.2 0 0 1 1
#&gt; -----------------------------------
#&gt; ---- Model ----
#&gt; -----------------------------------
@@ -562,7 +1058,7 @@ variances of the deviations of the parameters from these mean values.</p>
#&gt; transform_fractions = object[[1]]$transform_fractions)
#&gt; odeparms &lt;- c(odeparms_optim, odeparms_fixed)
#&gt; xidep_i &lt;- subset(xidep, id == i)
-#&gt; if (analytical) {
+#&gt; if (solution_type == "analytical") {
#&gt; out_values &lt;- mkin_model$deg_func(xidep_i, odeini,
#&gt; odeparms)
#&gt; }
@@ -570,7 +1066,7 @@ variances of the deviations of the parameters from these mean values.</p>
#&gt; i_time &lt;- xidep_i$time
#&gt; i_name &lt;- xidep_i$name
#&gt; out_wide &lt;- mkinpredict(mkin_model, odeparms = odeparms,
-#&gt; odeini = odeini, solution_type = object[[1]]$solution_type,
+#&gt; odeini = odeini, solution_type = solution_type,
#&gt; outtimes = sort(unique(i_time)))
#&gt; out_index &lt;- cbind(as.character(i_time), as.character(i_name))
#&gt; out_values &lt;- out_wide[out_index]
@@ -580,23 +1076,31 @@ variances of the deviations of the parameters from these mean values.</p>
#&gt; res &lt;- unlist(res_list)
#&gt; return(res)
#&gt; }
-#&gt; &lt;bytecode: 0x55555d62aeb8&gt;
-#&gt; &lt;environment: 0x55555cd8e028&gt;
-#&gt; Nb of parameters: 2
-#&gt; parameter names: parent_0 log_k_parent
+#&gt; &lt;bytecode: 0x55555998cba0&gt;
+#&gt; &lt;environment: 0x55555bd1fee8&gt;
+#&gt; Nb of parameters: 6
+#&gt; parameter names: parent_0 log_k_A1 f_parent_qlogis log_k1 log_k2 g_qlogis
#&gt; distribution:
-#&gt; Parameter Distribution Estimated
-#&gt; [1,] parent_0 normal Estimated
-#&gt; [2,] log_k_parent normal Estimated
+#&gt; Parameter Distribution Estimated
+#&gt; [1,] parent_0 normal Estimated
+#&gt; [2,] log_k_A1 normal Estimated
+#&gt; [3,] f_parent_qlogis normal Estimated
+#&gt; [4,] log_k1 normal Estimated
+#&gt; [5,] log_k2 normal Estimated
+#&gt; [6,] g_qlogis normal Estimated
#&gt; Variance-covariance matrix:
-#&gt; parent_0 log_k_parent
-#&gt; parent_0 1 0
-#&gt; log_k_parent 0 1
-#&gt; Error model: combined , initial values: a.1=1.05209877924905 b.1=0.0586479225303944
+#&gt; parent_0 log_k_A1 f_parent_qlogis log_k1 log_k2 g_qlogis
+#&gt; parent_0 1 0 0 0 0 0
+#&gt; log_k_A1 0 1 0 0 0 0
+#&gt; f_parent_qlogis 0 0 1 0 0 0
+#&gt; log_k1 0 0 0 1 0 0
+#&gt; log_k2 0 0 0 0 1 0
+#&gt; g_qlogis 0 0 0 0 0 1
+#&gt; Error model: constant , initial values: a.1=1.64723790168612
#&gt; No covariate in the model.
#&gt; Initial values
-#&gt; parent_0 log_k_parent
-#&gt; Pop.CondInit 100.315 -4.962075
+#&gt; parent_0 log_k_A1 f_parent_qlogis log_k1 log_k2 g_qlogis
+#&gt; Pop.CondInit 93.81015 -9.764746 -0.9711148 -1.879937 -4.270814 0.1356441
#&gt; -----------------------------------
#&gt; ---- Key algorithm options ----
#&gt; -----------------------------------
@@ -618,37 +1122,55 @@ variances of the deviations of the parameters from these mean values.</p>
#&gt; ----------------------------------------------------
#&gt; ----------------- Fixed effects ------------------
#&gt; ----------------------------------------------------
-#&gt; Parameter Estimate SE CV(%)
-#&gt; parent_0 100.232 1.266 1.3
-#&gt; log_k_parent -4.961 0.089 1.8
-#&gt; a a.1 -0.106 1.211 1142.0
-#&gt; b b.1 0.071 0.017 24.2
+#&gt; Parameter Estimate SE CV(%)
+#&gt; parent_0 93.78 1.35 1.4
+#&gt; log_k_A1 -6.05 1.12 18.5
+#&gt; f_parent_qlogis -0.97 0.20 21.1
+#&gt; log_k1 -2.46 0.51 20.7
+#&gt; log_k2 -3.63 0.95 26.3
+#&gt; g_qlogis -0.08 0.36 447.7
+#&gt; a a.1 1.88 0.11 5.9
#&gt; ----------------------------------------------------
#&gt; ----------- Variance of random effects -----------
#&gt; ----------------------------------------------------
-#&gt; Parameter Estimate SE CV(%)
-#&gt; parent_0 omega2.parent_0 3.334 5.024 151
-#&gt; log_k_parent omega2.log_k_parent 0.036 0.024 68
+#&gt; Parameter Estimate SE CV(%)
+#&gt; parent_0 omega2.parent_0 7.85 5.76 73
+#&gt; log_k_A1 omega2.log_k_A1 4.27 3.44 80
+#&gt; f_parent_qlogis omega2.f_parent_qlogis 0.20 0.13 65
+#&gt; log_k1 omega2.log_k1 1.08 0.77 72
+#&gt; log_k2 omega2.log_k2 4.24 2.83 67
+#&gt; g_qlogis omega2.g_qlogis 0.21 0.26 123
#&gt; ----------------------------------------------------
#&gt; ------ Correlation matrix of random effects ------
#&gt; ----------------------------------------------------
-#&gt; omega2.parent_0 omega2.log_k_parent
-#&gt; omega2.parent_0 1 0
-#&gt; omega2.log_k_parent 0 1
+#&gt; omega2.parent_0 omega2.log_k_A1 omega2.f_parent_qlogis
+#&gt; omega2.parent_0 1 0 0
+#&gt; omega2.log_k_A1 0 1 0
+#&gt; omega2.f_parent_qlogis 0 0 1
+#&gt; omega2.log_k1 0 0 0
+#&gt; omega2.log_k2 0 0 0
+#&gt; omega2.g_qlogis 0 0 0
+#&gt; omega2.log_k1 omega2.log_k2 omega2.g_qlogis
+#&gt; omega2.parent_0 0 0 0
+#&gt; omega2.log_k_A1 0 0 0
+#&gt; omega2.f_parent_qlogis 0 0 0
+#&gt; omega2.log_k1 1 0 0
+#&gt; omega2.log_k2 0 1 0
+#&gt; omega2.g_qlogis 0 0 1
#&gt; ----------------------------------------------------
#&gt; --------------- Statistical criteria -------------
#&gt; ----------------------------------------------------
#&gt; Likelihood computed by linearisation
-#&gt; -2LL= 575.5586
-#&gt; AIC = 587.5586
-#&gt; BIC = 585.2153
+#&gt; -2LL= 879.7721
+#&gt; AIC = 905.7721
+#&gt; BIC = 900.6948
#&gt;
#&gt; Likelihood computed by importance sampling
-#&gt; -2LL= 575.7797
-#&gt; AIC = 587.7797
-#&gt; BIC = 585.4364
-#&gt; ----------------------------------------------------</div><div class='input'><span class='fu'><a href='https://rdrr.io/pkg/saemix/man/plot-SaemixObject-method.html'>plot</a></span><span class='op'>(</span><span class='va'>f_saemix_tc</span>, plot.type <span class='op'>=</span> <span class='st'>"convergence"</span><span class='op'>)</span>
-</div><div class='img'><img src='saemix-3.png' alt='' width='700' height='433' /></div><div class='output co'>#&gt; Plotting convergence plots</div><div class='img'><img src='saemix-4.png' alt='' width='700' height='433' /></div><div class='input'><span class='co'># }</span>
+#&gt; -2LL= 816.8276
+#&gt; AIC = 842.8276
+#&gt; BIC = 837.7503
+#&gt; ----------------------------------------------------</div><div class='input'>
+<span class='co'># }</span>
</div></pre>
</div>
<div class="col-md-3 hidden-xs hidden-sm" id="pkgdown-sidebar">
diff --git a/docs/dev/reference/transform_odeparms.html b/docs/dev/reference/transform_odeparms.html
index 58a1e9a1..6b849d3f 100644
--- a/docs/dev/reference/transform_odeparms.html
+++ b/docs/dev/reference/transform_odeparms.html
@@ -77,7 +77,7 @@ the ilr transformation is used." />
</button>
<span class="navbar-brand">
<a class="navbar-link" href="../index.html">mkin</a>
- <span class="version label label-info" data-toggle="tooltip" data-placement="bottom" title="In-development version">0.9.50.3</span>
+ <span class="version label label-info" data-toggle="tooltip" data-placement="bottom" title="In-development version">0.9.50.4</span>
</span>
</div>
@@ -125,7 +125,7 @@ the ilr transformation is used." />
</ul>
<ul class="nav navbar-nav navbar-right">
<li>
- <a href="http://github.com/jranke/mkin/">
+ <a href="https://github.com/jranke/mkin/">
<span class="fab fa fab fa-github fa-lg"></span>
</a>
@@ -144,7 +144,7 @@ the ilr transformation is used." />
<div class="col-md-9 contents">
<div class="page-header">
<h1>Functions to transform and backtransform kinetic parameters for fitting</h1>
- <small class="dont-index">Source: <a href='http://github.com/jranke/mkin/blob/master/R/transform_odeparms.R'><code>R/transform_odeparms.R</code></a></small>
+ <small class="dont-index">Source: <a href='https://github.com/jranke/mkin/blob/master/R/transform_odeparms.R'><code>R/transform_odeparms.R</code></a></small>
<div class="hidden name"><code>transform_odeparms.Rd</code></div>
</div>
@@ -154,22 +154,22 @@ restricted values to the full scale of real numbers. For kinetic rate
constants and other parameters that can only take on positive values, a
simple log transformation is used. For compositional parameters, such as the
formations fractions that should always sum up to 1 and can not be negative,
-the <code><a href='ilr.html'>ilr</a></code> transformation is used.</p>
+the <a href='ilr.html'>ilr</a> transformation is used.</p>
</div>
- <pre class="usage"><span class='fu'>transform_odeparms</span>(
- <span class='no'>parms</span>,
- <span class='no'>mkinmod</span>,
- <span class='kw'>transform_rates</span> <span class='kw'>=</span> <span class='fl'>TRUE</span>,
- <span class='kw'>transform_fractions</span> <span class='kw'>=</span> <span class='fl'>TRUE</span>
-)
+ <pre class="usage"><span class='fu'>transform_odeparms</span><span class='op'>(</span>
+ <span class='va'>parms</span>,
+ <span class='va'>mkinmod</span>,
+ transform_rates <span class='op'>=</span> <span class='cn'>TRUE</span>,
+ transform_fractions <span class='op'>=</span> <span class='cn'>TRUE</span>
+<span class='op'>)</span>
-<span class='fu'>backtransform_odeparms</span>(
- <span class='no'>transparms</span>,
- <span class='no'>mkinmod</span>,
- <span class='kw'>transform_rates</span> <span class='kw'>=</span> <span class='fl'>TRUE</span>,
- <span class='kw'>transform_fractions</span> <span class='kw'>=</span> <span class='fl'>TRUE</span>
-)</pre>
+<span class='fu'>backtransform_odeparms</span><span class='op'>(</span>
+ <span class='va'>transparms</span>,
+ <span class='va'>mkinmod</span>,
+ transform_rates <span class='op'>=</span> <span class='cn'>TRUE</span>,
+ transform_fractions <span class='op'>=</span> <span class='cn'>TRUE</span>
+<span class='op'>)</span></pre>
<h2 class="hasAnchor" id="arguments"><a class="anchor" href="#arguments"></a>Arguments</h2>
<table class="ref-arguments">
@@ -181,9 +181,9 @@ equations.</p></td>
</tr>
<tr>
<th>mkinmod</th>
- <td><p>The kinetic model of class <code><a href='mkinmod.html'>mkinmod</a></code>, containing
+ <td><p>The kinetic model of class <a href='mkinmod.html'>mkinmod</a>, containing
the names of the model variables that are needed for grouping the
-formation fractions before <code><a href='ilr.html'>ilr</a></code> transformation, the parameter
+formation fractions before <a href='ilr.html'>ilr</a> transformation, the parameter
names and the information if the pathway to sink is included in the model.</p></td>
</tr>
<tr>
@@ -200,10 +200,13 @@ models and the break point tb of the HS model.</p></td>
<td><p>Boolean specifying if formation fractions
constants should be transformed in the model specification used in the
fitting for better compliance with the assumption of normal distribution
-of the estimator. The default (TRUE) is to do transformations. The g
-parameter of the DFOP and HS models are also transformed, as they can also
-be seen as compositional data. The transformation used for these
-transformations is the <code><a href='ilr.html'>ilr</a></code> transformation.</p></td>
+of the estimator. The default (TRUE) is to do transformations.
+The g parameter of the DFOP model is also seen as a fraction.
+If a single fraction is transformed (g parameter of DFOP or only a single
+target variable e.g. a single metabolite plus a pathway to sink), a
+logistic transformation is used <code><a href='https://rdrr.io/r/stats/Logistic.html'>stats::qlogis()</a></code>. In other cases, i.e. if
+two or more formation fractions need to be transformed whose sum cannot
+exceed one, the <a href='ilr.html'>ilr</a> transformation is used.</p></td>
</tr>
<tr>
<th>transparms</th>
@@ -219,74 +222,96 @@ fitting procedure.</p></td>
<p>The transformation of sets of formation fractions is fragile, as it supposes
the same ordering of the components in forward and backward transformation.
-This is no problem for the internal use in <code><a href='mkinfit.html'>mkinfit</a></code>.</p>
+This is no problem for the internal use in <a href='mkinfit.html'>mkinfit</a>.</p>
+ <h2 class="hasAnchor" id="author"><a class="anchor" href="#author"></a>Author</h2>
+
+ <p>Johannes Ranke</p>
<h2 class="hasAnchor" id="examples"><a class="anchor" href="#examples"></a>Examples</h2>
<pre class="examples"><div class='input'>
-<span class='no'>SFO_SFO</span> <span class='kw'>&lt;-</span> <span class='fu'><a href='mkinmod.html'>mkinmod</a></span>(
- <span class='kw'>parent</span> <span class='kw'>=</span> <span class='fu'><a href='https://rdrr.io/r/base/list.html'>list</a></span>(<span class='kw'>type</span> <span class='kw'>=</span> <span class='st'>"SFO"</span>, <span class='kw'>to</span> <span class='kw'>=</span> <span class='st'>"m1"</span>, <span class='kw'>sink</span> <span class='kw'>=</span> <span class='fl'>TRUE</span>),
- <span class='kw'>m1</span> <span class='kw'>=</span> <span class='fu'><a href='https://rdrr.io/r/base/list.html'>list</a></span>(<span class='kw'>type</span> <span class='kw'>=</span> <span class='st'>"SFO"</span>))</div><div class='output co'>#&gt; <span class='message'>Successfully compiled differential equation model from auto-generated C code.</span></div><div class='input'><span class='co'># Fit the model to the FOCUS example dataset D using defaults</span>
-<span class='no'>fit</span> <span class='kw'>&lt;-</span> <span class='fu'><a href='mkinfit.html'>mkinfit</a></span>(<span class='no'>SFO_SFO</span>, <span class='no'>FOCUS_2006_D</span>, <span class='kw'>quiet</span> <span class='kw'>=</span> <span class='fl'>TRUE</span>)</div><div class='output co'>#&gt; <span class='warning'>Warning: Observations with value of zero were removed from the data</span></div><div class='output co'>#&gt; <span class='warning'>Warning: Shapiro-Wilk test for standardized residuals: p = 0.0165</span></div><div class='input'><span class='no'>fit.s</span> <span class='kw'>&lt;-</span> <span class='fu'><a href='https://rdrr.io/r/base/summary.html'>summary</a></span>(<span class='no'>fit</span>)
+<span class='va'>SFO_SFO</span> <span class='op'>&lt;-</span> <span class='fu'><a href='mkinmod.html'>mkinmod</a></span><span class='op'>(</span>
+ parent <span class='op'>=</span> <span class='fu'><a href='https://rdrr.io/r/base/list.html'>list</a></span><span class='op'>(</span>type <span class='op'>=</span> <span class='st'>"SFO"</span>, to <span class='op'>=</span> <span class='st'>"m1"</span>, sink <span class='op'>=</span> <span class='cn'>TRUE</span><span class='op'>)</span>,
+ m1 <span class='op'>=</span> <span class='fu'><a href='https://rdrr.io/r/base/list.html'>list</a></span><span class='op'>(</span>type <span class='op'>=</span> <span class='st'>"SFO"</span><span class='op'>)</span><span class='op'>)</span>
+</div><div class='output co'>#&gt; <span class='message'>Successfully compiled differential equation model from auto-generated C code.</span></div><div class='input'><span class='co'># Fit the model to the FOCUS example dataset D using defaults</span>
+<span class='va'>fit</span> <span class='op'>&lt;-</span> <span class='fu'><a href='mkinfit.html'>mkinfit</a></span><span class='op'>(</span><span class='va'>SFO_SFO</span>, <span class='va'>FOCUS_2006_D</span>, quiet <span class='op'>=</span> <span class='cn'>TRUE</span><span class='op'>)</span>
+</div><div class='output co'>#&gt; <span class='warning'>Warning: Observations with value of zero were removed from the data</span></div><div class='input'><span class='va'>fit.s</span> <span class='op'>&lt;-</span> <span class='fu'><a href='https://rdrr.io/pkg/saemix/man/summary-methods.html'>summary</a></span><span class='op'>(</span><span class='va'>fit</span><span class='op'>)</span>
<span class='co'># Transformed and backtransformed parameters</span>
-<span class='fu'><a href='https://rdrr.io/r/base/print.html'>print</a></span>(<span class='no'>fit.s</span>$<span class='no'>par</span>, <span class='fl'>3</span>)</div><div class='output co'>#&gt; Estimate Std. Error Lower Upper
-#&gt; parent_0 99.598 1.5702 96.4038 102.793
-#&gt; log_k_parent -2.316 0.0409 -2.3988 -2.233
-#&gt; log_k_m1 -5.248 0.1332 -5.5184 -4.977
-#&gt; f_parent_ilr_1 0.041 0.0631 -0.0875 0.169
-#&gt; sigma 3.126 0.3585 2.3961 3.855</div><div class='input'><span class='fu'><a href='https://rdrr.io/r/base/print.html'>print</a></span>(<span class='no'>fit.s</span>$<span class='no'>bpar</span>, <span class='fl'>3</span>)</div><div class='output co'>#&gt; Estimate se_notrans t value Pr(&gt;t) Lower Upper
-#&gt; parent_0 99.59848 1.57022 63.43 2.30e-36 96.40384 102.7931
+<span class='fu'><a href='https://rdrr.io/r/base/print.html'>print</a></span><span class='op'>(</span><span class='va'>fit.s</span><span class='op'>$</span><span class='va'>par</span>, <span class='fl'>3</span><span class='op'>)</span>
+</div><div class='output co'>#&gt; Estimate Std. Error Lower Upper
+#&gt; parent_0 99.5985 1.5702 96.404 102.79
+#&gt; log_k_parent -2.3157 0.0409 -2.399 -2.23
+#&gt; log_k_m1 -5.2475 0.1332 -5.518 -4.98
+#&gt; f_parent_qlogis 0.0579 0.0893 -0.124 0.24
+#&gt; sigma 3.1255 0.3585 2.396 3.85</div><div class='input'><span class='fu'><a href='https://rdrr.io/r/base/print.html'>print</a></span><span class='op'>(</span><span class='va'>fit.s</span><span class='op'>$</span><span class='va'>bpar</span>, <span class='fl'>3</span><span class='op'>)</span>
+</div><div class='output co'>#&gt; Estimate se_notrans t value Pr(&gt;t) Lower Upper
+#&gt; parent_0 99.59848 1.57022 63.43 2.30e-36 96.40383 102.7931
#&gt; k_parent 0.09870 0.00403 24.47 4.96e-23 0.09082 0.1073
#&gt; k_m1 0.00526 0.00070 7.51 6.16e-09 0.00401 0.0069
#&gt; f_parent_to_m1 0.51448 0.02230 23.07 3.10e-22 0.46912 0.5596
#&gt; sigma 3.12550 0.35852 8.72 2.24e-10 2.39609 3.8549</div><div class='input'>
<span class='co'># \dontrun{</span>
<span class='co'># Compare to the version without transforming rate parameters</span>
-<span class='no'>fit.2</span> <span class='kw'>&lt;-</span> <span class='fu'><a href='mkinfit.html'>mkinfit</a></span>(<span class='no'>SFO_SFO</span>, <span class='no'>FOCUS_2006_D</span>, <span class='kw'>transform_rates</span> <span class='kw'>=</span> <span class='fl'>FALSE</span>, <span class='kw'>quiet</span> <span class='kw'>=</span> <span class='fl'>TRUE</span>)</div><div class='output co'>#&gt; <span class='warning'>Warning: Observations with value of zero were removed from the data</span></div><div class='output co'>#&gt; <span class='error'>Error in if (cost &lt; cost.current) { assign("cost.current", cost, inherits = TRUE) if (!quiet) cat(ifelse(OLS, "Sum of squared residuals", "Negative log-likelihood"), " at call ", calls, ": ", signif(cost.current, 6), "\n", sep = "")}: missing value where TRUE/FALSE needed</span></div><div class='output co'>#&gt; <span class='message'>Timing stopped at: 0.002 0 0.003</span></div><div class='input'><span class='no'>fit.2.s</span> <span class='kw'>&lt;-</span> <span class='fu'><a href='https://rdrr.io/r/base/summary.html'>summary</a></span>(<span class='no'>fit.2</span>)</div><div class='output co'>#&gt; <span class='error'>Error in summary(fit.2): object 'fit.2' not found</span></div><div class='input'><span class='fu'><a href='https://rdrr.io/r/base/print.html'>print</a></span>(<span class='no'>fit.2.s</span>$<span class='no'>par</span>, <span class='fl'>3</span>)</div><div class='output co'>#&gt; <span class='error'>Error in print(fit.2.s$par, 3): object 'fit.2.s' not found</span></div><div class='input'><span class='fu'><a href='https://rdrr.io/r/base/print.html'>print</a></span>(<span class='no'>fit.2.s</span>$<span class='no'>bpar</span>, <span class='fl'>3</span>)</div><div class='output co'>#&gt; <span class='error'>Error in print(fit.2.s$bpar, 3): object 'fit.2.s' not found</span></div><div class='input'><span class='co'># }</span>
-
-<span class='no'>initials</span> <span class='kw'>&lt;-</span> <span class='no'>fit</span>$<span class='no'>start</span>$<span class='no'>value</span>
-<span class='fu'><a href='https://rdrr.io/r/base/names.html'>names</a></span>(<span class='no'>initials</span>) <span class='kw'>&lt;-</span> <span class='fu'><a href='https://rdrr.io/r/base/colnames.html'>rownames</a></span>(<span class='no'>fit</span>$<span class='no'>start</span>)
-<span class='no'>transformed</span> <span class='kw'>&lt;-</span> <span class='no'>fit</span>$<span class='no'>start_transformed</span>$<span class='no'>value</span>
-<span class='fu'><a href='https://rdrr.io/r/base/names.html'>names</a></span>(<span class='no'>transformed</span>) <span class='kw'>&lt;-</span> <span class='fu'><a href='https://rdrr.io/r/base/colnames.html'>rownames</a></span>(<span class='no'>fit</span>$<span class='no'>start_transformed</span>)
-<span class='fu'>transform_odeparms</span>(<span class='no'>initials</span>, <span class='no'>SFO_SFO</span>)</div><div class='output co'>#&gt; parent_0 log_k_parent log_k_m1 f_parent_ilr_1
-#&gt; 100.750000 -2.302585 -2.301586 0.000000 </div><div class='input'><span class='fu'>backtransform_odeparms</span>(<span class='no'>transformed</span>, <span class='no'>SFO_SFO</span>)</div><div class='output co'>#&gt; parent_0 k_parent k_m1 f_parent_to_m1
+<span class='va'>fit.2</span> <span class='op'>&lt;-</span> <span class='fu'><a href='mkinfit.html'>mkinfit</a></span><span class='op'>(</span><span class='va'>SFO_SFO</span>, <span class='va'>FOCUS_2006_D</span>, transform_rates <span class='op'>=</span> <span class='cn'>FALSE</span>, quiet <span class='op'>=</span> <span class='cn'>TRUE</span><span class='op'>)</span>
+</div><div class='output co'>#&gt; <span class='warning'>Warning: Observations with value of zero were removed from the data</span></div><div class='output co'>#&gt; <span class='error'>Error in if (cost &lt; cost.current) { assign("cost.current", cost, inherits = TRUE) if (!quiet) cat(ifelse(OLS, "Sum of squared residuals", "Negative log-likelihood"), " at call ", calls, ": ", signif(cost.current, 6), "\n", sep = "")}: missing value where TRUE/FALSE needed</span></div><div class='output co'>#&gt; <span class='message'>Timing stopped at: 0.003 0 0.002</span></div><div class='input'><span class='va'>fit.2.s</span> <span class='op'>&lt;-</span> <span class='fu'><a href='https://rdrr.io/pkg/saemix/man/summary-methods.html'>summary</a></span><span class='op'>(</span><span class='va'>fit.2</span><span class='op'>)</span>
+</div><div class='output co'>#&gt; <span class='error'>Error in h(simpleError(msg, call)): error in evaluating the argument 'object' in selecting a method for function 'summary': object 'fit.2' not found</span></div><div class='input'><span class='fu'><a href='https://rdrr.io/r/base/print.html'>print</a></span><span class='op'>(</span><span class='va'>fit.2.s</span><span class='op'>$</span><span class='va'>par</span>, <span class='fl'>3</span><span class='op'>)</span>
+</div><div class='output co'>#&gt; <span class='error'>Error in h(simpleError(msg, call)): error in evaluating the argument 'x' in selecting a method for function 'print': object 'fit.2.s' not found</span></div><div class='input'><span class='fu'><a href='https://rdrr.io/r/base/print.html'>print</a></span><span class='op'>(</span><span class='va'>fit.2.s</span><span class='op'>$</span><span class='va'>bpar</span>, <span class='fl'>3</span><span class='op'>)</span>
+</div><div class='output co'>#&gt; <span class='error'>Error in h(simpleError(msg, call)): error in evaluating the argument 'x' in selecting a method for function 'print': object 'fit.2.s' not found</span></div><div class='input'><span class='co'># }</span>
+
+<span class='va'>initials</span> <span class='op'>&lt;-</span> <span class='va'>fit</span><span class='op'>$</span><span class='va'>start</span><span class='op'>$</span><span class='va'>value</span>
+<span class='fu'><a href='https://rdrr.io/r/base/names.html'>names</a></span><span class='op'>(</span><span class='va'>initials</span><span class='op'>)</span> <span class='op'>&lt;-</span> <span class='fu'><a href='https://rdrr.io/r/base/colnames.html'>rownames</a></span><span class='op'>(</span><span class='va'>fit</span><span class='op'>$</span><span class='va'>start</span><span class='op'>)</span>
+<span class='va'>transformed</span> <span class='op'>&lt;-</span> <span class='va'>fit</span><span class='op'>$</span><span class='va'>start_transformed</span><span class='op'>$</span><span class='va'>value</span>
+<span class='fu'><a href='https://rdrr.io/r/base/names.html'>names</a></span><span class='op'>(</span><span class='va'>transformed</span><span class='op'>)</span> <span class='op'>&lt;-</span> <span class='fu'><a href='https://rdrr.io/r/base/colnames.html'>rownames</a></span><span class='op'>(</span><span class='va'>fit</span><span class='op'>$</span><span class='va'>start_transformed</span><span class='op'>)</span>
+<span class='fu'>transform_odeparms</span><span class='op'>(</span><span class='va'>initials</span>, <span class='va'>SFO_SFO</span><span class='op'>)</span>
+</div><div class='output co'>#&gt; parent_0 log_k_parent log_k_m1 f_parent_qlogis
+#&gt; 100.750000 -2.302585 -2.301586 0.000000 </div><div class='input'><span class='fu'>backtransform_odeparms</span><span class='op'>(</span><span class='va'>transformed</span>, <span class='va'>SFO_SFO</span><span class='op'>)</span>
+</div><div class='output co'>#&gt; parent_0 k_parent k_m1 f_parent_to_m1
#&gt; 100.7500 0.1000 0.1001 0.5000 </div><div class='input'>
<span class='co'># \dontrun{</span>
<span class='co'># The case of formation fractions</span>
-<span class='no'>SFO_SFO.ff</span> <span class='kw'>&lt;-</span> <span class='fu'><a href='mkinmod.html'>mkinmod</a></span>(
- <span class='kw'>parent</span> <span class='kw'>=</span> <span class='fu'><a href='https://rdrr.io/r/base/list.html'>list</a></span>(<span class='kw'>type</span> <span class='kw'>=</span> <span class='st'>"SFO"</span>, <span class='kw'>to</span> <span class='kw'>=</span> <span class='st'>"m1"</span>, <span class='kw'>sink</span> <span class='kw'>=</span> <span class='fl'>TRUE</span>),
- <span class='kw'>m1</span> <span class='kw'>=</span> <span class='fu'><a href='https://rdrr.io/r/base/list.html'>list</a></span>(<span class='kw'>type</span> <span class='kw'>=</span> <span class='st'>"SFO"</span>),
- <span class='kw'>use_of_ff</span> <span class='kw'>=</span> <span class='st'>"max"</span>)</div><div class='output co'>#&gt; <span class='message'>Successfully compiled differential equation model from auto-generated C code.</span></div><div class='input'>
-<span class='no'>fit.ff</span> <span class='kw'>&lt;-</span> <span class='fu'><a href='mkinfit.html'>mkinfit</a></span>(<span class='no'>SFO_SFO.ff</span>, <span class='no'>FOCUS_2006_D</span>, <span class='kw'>quiet</span> <span class='kw'>=</span> <span class='fl'>TRUE</span>)</div><div class='output co'>#&gt; <span class='warning'>Warning: Observations with value of zero were removed from the data</span></div><div class='output co'>#&gt; <span class='warning'>Warning: Shapiro-Wilk test for standardized residuals: p = 0.0165</span></div><div class='input'><span class='no'>fit.ff.s</span> <span class='kw'>&lt;-</span> <span class='fu'><a href='https://rdrr.io/r/base/summary.html'>summary</a></span>(<span class='no'>fit.ff</span>)
-<span class='fu'><a href='https://rdrr.io/r/base/print.html'>print</a></span>(<span class='no'>fit.ff.s</span>$<span class='no'>par</span>, <span class='fl'>3</span>)</div><div class='output co'>#&gt; Estimate Std. Error Lower Upper
-#&gt; parent_0 99.598 1.5702 96.4038 102.793
-#&gt; log_k_parent -2.316 0.0409 -2.3988 -2.233
-#&gt; log_k_m1 -5.248 0.1332 -5.5184 -4.977
-#&gt; f_parent_ilr_1 0.041 0.0631 -0.0875 0.169
-#&gt; sigma 3.126 0.3585 2.3961 3.855</div><div class='input'><span class='fu'><a href='https://rdrr.io/r/base/print.html'>print</a></span>(<span class='no'>fit.ff.s</span>$<span class='no'>bpar</span>, <span class='fl'>3</span>)</div><div class='output co'>#&gt; Estimate se_notrans t value Pr(&gt;t) Lower Upper
-#&gt; parent_0 99.59848 1.57022 63.43 2.30e-36 96.40384 102.7931
+<span class='va'>SFO_SFO.ff</span> <span class='op'>&lt;-</span> <span class='fu'><a href='mkinmod.html'>mkinmod</a></span><span class='op'>(</span>
+ parent <span class='op'>=</span> <span class='fu'><a href='https://rdrr.io/r/base/list.html'>list</a></span><span class='op'>(</span>type <span class='op'>=</span> <span class='st'>"SFO"</span>, to <span class='op'>=</span> <span class='st'>"m1"</span>, sink <span class='op'>=</span> <span class='cn'>TRUE</span><span class='op'>)</span>,
+ m1 <span class='op'>=</span> <span class='fu'><a href='https://rdrr.io/r/base/list.html'>list</a></span><span class='op'>(</span>type <span class='op'>=</span> <span class='st'>"SFO"</span><span class='op'>)</span>,
+ use_of_ff <span class='op'>=</span> <span class='st'>"max"</span><span class='op'>)</span>
+</div><div class='output co'>#&gt; <span class='message'>Successfully compiled differential equation model from auto-generated C code.</span></div><div class='input'>
+<span class='va'>fit.ff</span> <span class='op'>&lt;-</span> <span class='fu'><a href='mkinfit.html'>mkinfit</a></span><span class='op'>(</span><span class='va'>SFO_SFO.ff</span>, <span class='va'>FOCUS_2006_D</span>, quiet <span class='op'>=</span> <span class='cn'>TRUE</span><span class='op'>)</span>
+</div><div class='output co'>#&gt; <span class='warning'>Warning: Observations with value of zero were removed from the data</span></div><div class='input'><span class='va'>fit.ff.s</span> <span class='op'>&lt;-</span> <span class='fu'><a href='https://rdrr.io/pkg/saemix/man/summary-methods.html'>summary</a></span><span class='op'>(</span><span class='va'>fit.ff</span><span class='op'>)</span>
+<span class='fu'><a href='https://rdrr.io/r/base/print.html'>print</a></span><span class='op'>(</span><span class='va'>fit.ff.s</span><span class='op'>$</span><span class='va'>par</span>, <span class='fl'>3</span><span class='op'>)</span>
+</div><div class='output co'>#&gt; Estimate Std. Error Lower Upper
+#&gt; parent_0 99.5985 1.5702 96.404 102.79
+#&gt; log_k_parent -2.3157 0.0409 -2.399 -2.23
+#&gt; log_k_m1 -5.2475 0.1332 -5.518 -4.98
+#&gt; f_parent_qlogis 0.0579 0.0893 -0.124 0.24
+#&gt; sigma 3.1255 0.3585 2.396 3.85</div><div class='input'><span class='fu'><a href='https://rdrr.io/r/base/print.html'>print</a></span><span class='op'>(</span><span class='va'>fit.ff.s</span><span class='op'>$</span><span class='va'>bpar</span>, <span class='fl'>3</span><span class='op'>)</span>
+</div><div class='output co'>#&gt; Estimate se_notrans t value Pr(&gt;t) Lower Upper
+#&gt; parent_0 99.59848 1.57022 63.43 2.30e-36 96.40383 102.7931
#&gt; k_parent 0.09870 0.00403 24.47 4.96e-23 0.09082 0.1073
#&gt; k_m1 0.00526 0.00070 7.51 6.16e-09 0.00401 0.0069
#&gt; f_parent_to_m1 0.51448 0.02230 23.07 3.10e-22 0.46912 0.5596
-#&gt; sigma 3.12550 0.35852 8.72 2.24e-10 2.39609 3.8549</div><div class='input'><span class='no'>initials</span> <span class='kw'>&lt;-</span> <span class='fu'><a href='https://rdrr.io/r/base/c.html'>c</a></span>(<span class='st'>"f_parent_to_m1"</span> <span class='kw'>=</span> <span class='fl'>0.5</span>)
-<span class='no'>transformed</span> <span class='kw'>&lt;-</span> <span class='fu'>transform_odeparms</span>(<span class='no'>initials</span>, <span class='no'>SFO_SFO.ff</span>)
-<span class='fu'>backtransform_odeparms</span>(<span class='no'>transformed</span>, <span class='no'>SFO_SFO.ff</span>)</div><div class='output co'>#&gt; f_parent_to_m1
+#&gt; sigma 3.12550 0.35852 8.72 2.24e-10 2.39609 3.8549</div><div class='input'><span class='va'>initials</span> <span class='op'>&lt;-</span> <span class='fu'><a href='https://rdrr.io/r/base/c.html'>c</a></span><span class='op'>(</span><span class='st'>"f_parent_to_m1"</span> <span class='op'>=</span> <span class='fl'>0.5</span><span class='op'>)</span>
+<span class='va'>transformed</span> <span class='op'>&lt;-</span> <span class='fu'>transform_odeparms</span><span class='op'>(</span><span class='va'>initials</span>, <span class='va'>SFO_SFO.ff</span><span class='op'>)</span>
+<span class='fu'>backtransform_odeparms</span><span class='op'>(</span><span class='va'>transformed</span>, <span class='va'>SFO_SFO.ff</span><span class='op'>)</span>
+</div><div class='output co'>#&gt; f_parent_to_m1
#&gt; 0.5 </div><div class='input'>
<span class='co'># And without sink</span>
-<span class='no'>SFO_SFO.ff.2</span> <span class='kw'>&lt;-</span> <span class='fu'><a href='mkinmod.html'>mkinmod</a></span>(
- <span class='kw'>parent</span> <span class='kw'>=</span> <span class='fu'><a href='https://rdrr.io/r/base/list.html'>list</a></span>(<span class='kw'>type</span> <span class='kw'>=</span> <span class='st'>"SFO"</span>, <span class='kw'>to</span> <span class='kw'>=</span> <span class='st'>"m1"</span>, <span class='kw'>sink</span> <span class='kw'>=</span> <span class='fl'>FALSE</span>),
- <span class='kw'>m1</span> <span class='kw'>=</span> <span class='fu'><a href='https://rdrr.io/r/base/list.html'>list</a></span>(<span class='kw'>type</span> <span class='kw'>=</span> <span class='st'>"SFO"</span>),
- <span class='kw'>use_of_ff</span> <span class='kw'>=</span> <span class='st'>"max"</span>)</div><div class='output co'>#&gt; <span class='message'>Successfully compiled differential equation model from auto-generated C code.</span></div><div class='input'>
-
-<span class='no'>fit.ff.2</span> <span class='kw'>&lt;-</span> <span class='fu'><a href='mkinfit.html'>mkinfit</a></span>(<span class='no'>SFO_SFO.ff.2</span>, <span class='no'>FOCUS_2006_D</span>, <span class='kw'>quiet</span> <span class='kw'>=</span> <span class='fl'>TRUE</span>)</div><div class='output co'>#&gt; <span class='warning'>Warning: Observations with value of zero were removed from the data</span></div><div class='output co'>#&gt; <span class='warning'>Warning: Shapiro-Wilk test for standardized residuals: p = 0.0242</span></div><div class='input'><span class='no'>fit.ff.2.s</span> <span class='kw'>&lt;-</span> <span class='fu'><a href='https://rdrr.io/r/base/summary.html'>summary</a></span>(<span class='no'>fit.ff.2</span>)
-<span class='fu'><a href='https://rdrr.io/r/base/print.html'>print</a></span>(<span class='no'>fit.ff.2.s</span>$<span class='no'>par</span>, <span class='fl'>3</span>)</div><div class='output co'>#&gt; Estimate Std. Error Lower Upper
+<span class='va'>SFO_SFO.ff.2</span> <span class='op'>&lt;-</span> <span class='fu'><a href='mkinmod.html'>mkinmod</a></span><span class='op'>(</span>
+ parent <span class='op'>=</span> <span class='fu'><a href='https://rdrr.io/r/base/list.html'>list</a></span><span class='op'>(</span>type <span class='op'>=</span> <span class='st'>"SFO"</span>, to <span class='op'>=</span> <span class='st'>"m1"</span>, sink <span class='op'>=</span> <span class='cn'>FALSE</span><span class='op'>)</span>,
+ m1 <span class='op'>=</span> <span class='fu'><a href='https://rdrr.io/r/base/list.html'>list</a></span><span class='op'>(</span>type <span class='op'>=</span> <span class='st'>"SFO"</span><span class='op'>)</span>,
+ use_of_ff <span class='op'>=</span> <span class='st'>"max"</span><span class='op'>)</span>
+</div><div class='output co'>#&gt; <span class='message'>Successfully compiled differential equation model from auto-generated C code.</span></div><div class='input'>
+
+<span class='va'>fit.ff.2</span> <span class='op'>&lt;-</span> <span class='fu'><a href='mkinfit.html'>mkinfit</a></span><span class='op'>(</span><span class='va'>SFO_SFO.ff.2</span>, <span class='va'>FOCUS_2006_D</span>, quiet <span class='op'>=</span> <span class='cn'>TRUE</span><span class='op'>)</span>
+</div><div class='output co'>#&gt; <span class='warning'>Warning: Observations with value of zero were removed from the data</span></div><div class='input'><span class='va'>fit.ff.2.s</span> <span class='op'>&lt;-</span> <span class='fu'><a href='https://rdrr.io/pkg/saemix/man/summary-methods.html'>summary</a></span><span class='op'>(</span><span class='va'>fit.ff.2</span><span class='op'>)</span>
+<span class='fu'><a href='https://rdrr.io/r/base/print.html'>print</a></span><span class='op'>(</span><span class='va'>fit.ff.2.s</span><span class='op'>$</span><span class='va'>par</span>, <span class='fl'>3</span><span class='op'>)</span>
+</div><div class='output co'>#&gt; Estimate Std. Error Lower Upper
#&gt; parent_0 84.79 3.012 78.67 90.91
#&gt; log_k_parent -2.76 0.082 -2.92 -2.59
#&gt; log_k_m1 -4.21 0.123 -4.46 -3.96
-#&gt; sigma 8.22 0.943 6.31 10.14</div><div class='input'><span class='fu'><a href='https://rdrr.io/r/base/print.html'>print</a></span>(<span class='no'>fit.ff.2.s</span>$<span class='no'>bpar</span>, <span class='fl'>3</span>)</div><div class='output co'>#&gt; Estimate se_notrans t value Pr(&gt;t) Lower Upper
+#&gt; sigma 8.22 0.943 6.31 10.14</div><div class='input'><span class='fu'><a href='https://rdrr.io/r/base/print.html'>print</a></span><span class='op'>(</span><span class='va'>fit.ff.2.s</span><span class='op'>$</span><span class='va'>bpar</span>, <span class='fl'>3</span><span class='op'>)</span>
+</div><div class='output co'>#&gt; Estimate se_notrans t value Pr(&gt;t) Lower Upper
#&gt; parent_0 84.7916 3.01203 28.15 1.92e-25 78.6704 90.913
#&gt; k_parent 0.0635 0.00521 12.19 2.91e-14 0.0538 0.075
#&gt; k_m1 0.0148 0.00182 8.13 8.81e-10 0.0115 0.019
-#&gt; sigma 8.2229 0.94323 8.72 1.73e-10 6.3060 10.140</div><div class='input'># }
+#&gt; sigma 8.2229 0.94323 8.72 1.73e-10 6.3060 10.140</div><div class='input'><span class='co'># }</span>
</div></pre>
</div>
@@ -304,7 +329,7 @@ This is no problem for the internal use in <code><a href='mkinfit.html'>mkinfit<
</div>
<div class="pkgdown">
- <p>Site built with <a href="https://pkgdown.r-lib.org/">pkgdown</a> 1.5.1.</p>
+ <p>Site built with <a href="https://pkgdown.r-lib.org/">pkgdown</a> 1.6.1.</p>
</div>
</footer>
diff --git a/man/mkinfit.Rd b/man/mkinfit.Rd
index 8f10ea0a..768b85d3 100644
--- a/man/mkinfit.Rd
+++ b/man/mkinfit.Rd
@@ -119,12 +119,11 @@ models and the break point tb of the HS model. If FALSE, zero is used as
a lower bound for the rates in the optimisation.}
\item{transform_fractions}{Boolean specifying if formation fractions
-constants should be transformed in the model specification used in the
-fitting for better compliance with the assumption of normal distribution
-of the estimator. The default (TRUE) is to do transformations. If TRUE,
-the g parameter of the DFOP and HS models are also transformed, as they
-can also be seen as compositional data. The transformation used for these
-transformations is the \code{\link[=ilr]{ilr()}} transformation.}
+should be transformed in the model specification used in the fitting for
+better compliance with the assumption of normal distribution of the
+estimator. The default (TRUE) is to do transformations. If TRUE,
+the g parameter of the DFOP model is also transformed. Transformations
+are described in \link{transform_odeparms}.}
\item{quiet}{Suppress printing out the current value of the negative
log-likelihood after each improvement?}
@@ -233,15 +232,14 @@ SFO_SFO <- mkinmod(
# Fit the model quietly to the FOCUS example dataset D using defaults
fit <- mkinfit(SFO_SFO, FOCUS_D, quiet = TRUE)
-# Since mkin 0.9.50.3, we get a warning about non-normality of residuals,
-# so we try an alternative error model
+plot_sep(fit)
+# As lower parent values appear to have lower variance, we try an alternative error model
fit.tc <- mkinfit(SFO_SFO, FOCUS_D, quiet = TRUE, error_model = "tc")
# This avoids the warning, and the likelihood ratio test confirms it is preferable
lrtest(fit.tc, fit)
# We can also allow for different variances of parent and metabolite as error model
fit.obs <- mkinfit(SFO_SFO, FOCUS_D, quiet = TRUE, error_model = "obs")
-# This also avoids the warning about non-normality, but the two-component error model
-# has significantly higher likelihood
+# The two-component error model has significantly higher likelihood
lrtest(fit.obs, fit.tc)
parms(fit.tc)
endpoints(fit.tc)
diff --git a/man/mmkin.Rd b/man/mmkin.Rd
index e06f6cd1..80360cd7 100644
--- a/man/mmkin.Rd
+++ b/man/mmkin.Rd
@@ -8,7 +8,7 @@ more datasets}
mmkin(
models = c("SFO", "FOMC", "DFOP"),
datasets,
- cores = detectCores(),
+ cores = parallel::detectCores(),
cluster = NULL,
...
)
diff --git a/man/saemix.Rd b/man/saemix.Rd
index 962526ba..d4a8d0a4 100644
--- a/man/saemix.Rd
+++ b/man/saemix.Rd
@@ -38,46 +38,39 @@ mmkin. Starting variances of the random effects (argument omega.init) are the
variances of the deviations of the parameters from these mean values.
}
\examples{
+\dontrun{
+library(saemix)
ds <- lapply(experimental_data_for_UBA_2019[6:10],
function(x) subset(x$data[c("name", "time", "value")]))
names(ds) <- paste("Dataset", 6:10)
-sfo_sfo <- mkinmod(parent = mkinsub("SFO", "A1"),
+f_mmkin_parent_p0_fixed <- mmkin("FOMC", ds, cores = 1,
+ state.ini = c(parent = 100), fixed_initials = "parent", quiet = TRUE)
+m_saemix_p0_fixed <- saemix_model(f_mmkin_parent_p0_fixed["FOMC", ])
+d_saemix_parent <- saemix_data(f_mmkin_parent_p0_fixed)
+saemix_options <- list(seed = 123456, displayProgress = FALSE,
+ save = FALSE, save.graphs = FALSE, nbiter.saemix = c(200, 80))
+f_saemix_p0_fixed <- saemix(m_saemix_p0_fixed, d_saemix_parent, saemix_options)
+
+f_mmkin_parent <- mmkin(c("SFO", "FOMC", "DFOP"), ds, quiet = TRUE)
+m_saemix_sfo <- saemix_model(f_mmkin_parent["SFO", ])
+m_saemix_fomc <- saemix_model(f_mmkin_parent["FOMC", ])
+m_saemix_dfop <- saemix_model(f_mmkin_parent["DFOP", ])
+d_saemix_parent <- saemix_data(f_mmkin_parent["SFO", ])
+f_saemix_sfo <- saemix(m_saemix_sfo, d_saemix_parent, saemix_options)
+f_saemix_fomc <- saemix(m_saemix_fomc, d_saemix_parent, saemix_options)
+f_saemix_dfop <- saemix(m_saemix_dfop, d_saemix_parent, saemix_options)
+compare.saemix(list(f_saemix_sfo, f_saemix_fomc, f_saemix_dfop))
+f_mmkin_parent_tc <- update(f_mmkin_parent, error_model = "tc")
+m_saemix_fomc_tc <- saemix_model(f_mmkin_parent_tc["FOMC", ])
+f_saemix_fomc_tc <- saemix(m_saemix_fomc_tc, d_saemix_parent, saemix_options)
+compare.saemix(list(f_saemix_fomc, f_saemix_fomc_tc))
+
+dfop_sfo <- mkinmod(parent = mkinsub("DFOP", "A1"),
A1 = mkinsub("SFO"))
-\dontrun{
-f_mmkin <- mmkin(list("SFO-SFO" = sfo_sfo), ds, quiet = TRUE)
-library(saemix)
-m_saemix <- saemix_model(f_mmkin, cores = 1)
+f_mmkin <- mmkin(list("DFOP-SFO" = dfop_sfo), ds, quiet = TRUE)
+m_saemix <- saemix_model(f_mmkin)
d_saemix <- saemix_data(f_mmkin)
-saemix_options <- list(seed = 123456,
- save = FALSE, save.graphs = FALSE, displayProgress = FALSE,
- nbiter.saemix = c(200, 80))
f_saemix <- saemix(m_saemix, d_saemix, saemix_options)
-plot(f_saemix, plot.type = "convergence")
-}
-# Synthetic data with two-component error
-sampling_times = c(0, 1, 3, 7, 14, 28, 60, 90, 120)
-dt50_sfo_in <- c(80, 90, 100, 111.111, 125)
-k_in <- log(2) / dt50_sfo_in
-
-SFO <- mkinmod(parent = mkinsub("SFO"))
-pred_sfo <- function(k) {
- mkinpredict(SFO, c(k_parent = k),
- c(parent = 100), sampling_times)
-}
-
-ds_sfo_mean <- lapply(k_in, pred_sfo)
-set.seed(123456L)
-ds_sfo_syn <- lapply(ds_sfo_mean, function(ds) {
- add_err(ds, sdfunc = function(value) sqrt(1^2 + value^2 * 0.07^2),
- n = 1)[[1]]
- })
-\dontrun{
-f_mmkin_syn <- mmkin("SFO", ds_sfo_syn, error_model = "tc", quiet = TRUE)
-# plot(f_mmkin_syn)
-m_saemix_tc <- saemix_model(f_mmkin_syn, cores = 1)
-d_saemix_tc <- saemix_data(f_mmkin_syn)
-f_saemix_tc <- saemix(m_saemix_tc, d_saemix_tc, saemix_options)
-plot(f_saemix_tc, plot.type = "convergence")
}
}
diff --git a/man/transform_odeparms.Rd b/man/transform_odeparms.Rd
index 710b0875..f38bb051 100644
--- a/man/transform_odeparms.Rd
+++ b/man/transform_odeparms.Rd
@@ -23,9 +23,9 @@ backtransform_odeparms(
\item{parms}{Parameters of kinetic models as used in the differential
equations.}
-\item{mkinmod}{The kinetic model of class \code{\link{mkinmod}}, containing
+\item{mkinmod}{The kinetic model of class \link{mkinmod}, containing
the names of the model variables that are needed for grouping the
-formation fractions before \code{\link{ilr}} transformation, the parameter
+formation fractions before \link{ilr} transformation, the parameter
names and the information if the pathway to sink is included in the model.}
\item{transform_rates}{Boolean specifying if kinetic rate constants should
@@ -38,10 +38,13 @@ models and the break point tb of the HS model.}
\item{transform_fractions}{Boolean specifying if formation fractions
constants should be transformed in the model specification used in the
fitting for better compliance with the assumption of normal distribution
-of the estimator. The default (TRUE) is to do transformations. The g
-parameter of the DFOP and HS models are also transformed, as they can also
-be seen as compositional data. The transformation used for these
-transformations is the \code{\link{ilr}} transformation.}
+of the estimator. The default (TRUE) is to do transformations.
+The g parameter of the DFOP model is also seen as a fraction.
+If a single fraction is transformed (g parameter of DFOP or only a single
+target variable e.g. a single metabolite plus a pathway to sink), a
+logistic transformation is used \code{\link[stats:Logistic]{stats::qlogis()}}. In other cases, i.e. if
+two or more formation fractions need to be transformed whose sum cannot
+exceed one, the \link{ilr} transformation is used.}
\item{transparms}{Transformed parameters of kinetic models as used in the
fitting procedure.}
@@ -55,12 +58,12 @@ restricted values to the full scale of real numbers. For kinetic rate
constants and other parameters that can only take on positive values, a
simple log transformation is used. For compositional parameters, such as the
formations fractions that should always sum up to 1 and can not be negative,
-the \code{\link{ilr}} transformation is used.
+the \link{ilr} transformation is used.
}
\details{
The transformation of sets of formation fractions is fragile, as it supposes
the same ordering of the components in forward and backward transformation.
-This is no problem for the internal use in \code{\link{mkinfit}}.
+This is no problem for the internal use in \link{mkinfit}.
}
\examples{
diff --git a/test.log b/test.log
index b356bac5..318cc304 100644
--- a/test.log
+++ b/test.log
@@ -5,11 +5,11 @@ Testing mkin
✔ | 2 | Export dataset for reading into CAKE
✔ | 14 | Results for FOCUS D established in expertise for UBA (Ranke 2014) [0.9 s]
✔ | 4 | Calculation of FOCUS chi2 error levels [0.4 s]
-✔ | 7 | Fitting the SFORB model [3.3 s]
-✔ | 5 | Analytical solutions for coupled models [3.2 s]
+✔ | 7 | Fitting the SFORB model [3.4 s]
+✔ | 5 | Analytical solutions for coupled models [3.1 s]
✔ | 5 | Calculation of Akaike weights
✔ | 10 | Confidence intervals and p-values [1.0 s]
-✔ | 14 | Error model fitting [4.1 s]
+✔ | 14 | Error model fitting [4.3 s]
✔ | 4 | Test fitting the decline of metabolites from their maximum [0.3 s]
✔ | 1 | Fitting the logistic model [0.2 s]
✔ | 1 | Test dataset class mkinds used in gmkin
@@ -25,7 +25,7 @@ Reason: getRversion() < "4.1.0" is TRUE
test_nafta.R:53: skip: Test data from Appendix D are correctly evaluated
Reason: getRversion() < "4.1.0" is TRUE
────────────────────────────────────────────────────────────────────────────────
-✔ | 9 | Nonlinear mixed-effects models [7.7 s]
+✔ | 9 | Nonlinear mixed-effects models [7.9 s]
✔ | 0 1 | Plotting [0.7 s]
────────────────────────────────────────────────────────────────────────────────
test_plot.R:24: skip: Plotting mkinfit and mmkin objects is reproducible
@@ -33,16 +33,23 @@ Reason: getRversion() < "4.1.0" is TRUE
────────────────────────────────────────────────────────────────────────────────
✔ | 4 | Residuals extracted from mkinfit models
✔ | 2 | Complex test case from Schaefer et al. (2007) Piacenza paper [1.5 s]
-✔ | 4 | Summary [0.1 s]
+✖ | 3 1 | Summary [0.1 s]
+────────────────────────────────────────────────────────────────────────────────
+test_summary.R:17: failure: Summaries are reproducible
+Results have changed from known value recorded in 'summary_DFOP_FOCUS_C.txt'.
+1/82 mismatches
+x[66]: "parent 2.661 4 5"
+y[66]: "parent 2.495 3 6"
+────────────────────────────────────────────────────────────────────────────────
✔ | 1 | Summaries of old mkinfit objects
✔ | 4 | Results for synthetic data established in expertise for UBA (Ranke 2014) [2.2 s]
-✔ | 9 | Hypothesis tests [6.7 s]
+✔ | 9 | Hypothesis tests [7.0 s]
✔ | 4 | Calculation of maximum time weighted average concentrations (TWAs) [2.5 s]
══ Results ═════════════════════════════════════════════════════════════════════
-Duration: 37.5 s
+Duration: 38.1 s
-OK: 146
-Failed: 0
+OK: 145
+Failed: 1
Warnings: 0
Skipped: 3
diff --git a/tests/testthat/DFOP_FOCUS_C_messages.txt b/tests/testthat/DFOP_FOCUS_C_messages.txt
index b5a83146..88e9ad5c 100644
--- a/tests/testthat/DFOP_FOCUS_C_messages.txt
+++ b/tests/testthat/DFOP_FOCUS_C_messages.txt
@@ -1,4 +1,4 @@
-parent_0 log_k1 log_k2 g_ilr
+parent_0 log_k1 log_k2 g_qlogis
85.10000 -2.30259 -4.60517 0.00000
Sum of squared residuals at call 1: 7391.39
85.10000 -2.30259 -4.60517 0.00000
@@ -7,159 +7,194 @@ Sum of squared residuals at call 3: 7391.39
85.10000 -2.30259 -4.60517 0.00000
Sum of squared residuals at call 4: 7391.39
8.51000e+01 -2.30259e+00 -4.60517e+00 1.49012e-08
- 85.063710 -1.773280 -4.250366 0.769827
-Sum of squared residuals at call 6: 2000.13
- 85.063752 -1.773280 -4.250366 0.769827
- 85.063710 -1.773322 -4.250366 0.769827
- 85.063710 -1.773280 -4.250408 0.769827
- 85.063710 -1.773280 -4.250366 0.769785
- 85.035419 -0.960852 -4.115460 1.336361
-Sum of squared residuals at call 11: 32.978
- 85.035421 -0.960852 -4.115460 1.336361
- 85.035419 -0.960853 -4.115460 1.336361
- 85.035419 -0.960852 -4.115460 1.336361
- 85.035419 -0.960852 -4.115460 1.336361
- 85.037040 -0.256064 -4.273512 0.644775
- 85.032855 -0.782283 -4.127513 1.312494
-Sum of squared residuals at call 17: 5.34813
- 85.032856 -0.782283 -4.127513 1.312494
-Sum of squared residuals at call 18: 5.34813
- 85.032855 -0.782283 -4.127513 1.312494
-Sum of squared residuals at call 19: 5.34813
- 85.032855 -0.782283 -4.127513 1.312494
- 85.032855 -0.782283 -4.127513 1.312494
-Sum of squared residuals at call 21: 5.34813
- 85.02325 -0.74968 -4.05900 1.14891
- 85.031268 -0.790907 -4.114802 1.268157
-Sum of squared residuals at call 23: 4.70444
- 85.031266 -0.790907 -4.114802 1.268157
-Sum of squared residuals at call 24: 4.70444
- 85.031268 -0.790907 -4.114802 1.268157
- 85.031268 -0.790907 -4.114800 1.268157
-Sum of squared residuals at call 26: 4.70443
- 85.031268 -0.790907 -4.114802 1.268158
- 85.030010 -0.780151 -4.069435 1.262797
-Sum of squared residuals at call 28: 4.42162
- 85.030012 -0.780151 -4.069435 1.262797
- 85.030010 -0.780151 -4.069435 1.262797
-Sum of squared residuals at call 30: 4.42162
- 85.030010 -0.780151 -4.069435 1.262797
- 85.030010 -0.780151 -4.069435 1.262797
- 85.028777 -0.790084 -4.023945 1.256918
- 85.029639 -0.785735 -4.054587 1.260236
-Sum of squared residuals at call 34: 4.41435
- 85.029641 -0.785735 -4.054587 1.260236
- 85.029639 -0.785735 -4.054587 1.260236
-Sum of squared residuals at call 36: 4.41435
- 85.029639 -0.785735 -4.054588 1.260236
- 85.029639 -0.785735 -4.054587 1.260236
- 85.028119 -0.777813 -4.042219 1.253890
-Sum of squared residuals at call 39: 4.37246
- 85.028121 -0.777813 -4.042219 1.253890
- 85.028119 -0.777813 -4.042219 1.253890
-Sum of squared residuals at call 41: 4.37246
- 85.028119 -0.777813 -4.042219 1.253890
- 85.028119 -0.777813 -4.042219 1.253890
- 85.024185 -0.776514 -4.029420 1.245094
- 85.026297 -0.777842 -4.036021 1.249634
-Sum of squared residuals at call 45: 4.36931
- 85.026298 -0.777842 -4.036021 1.249634
- 85.026297 -0.777842 -4.036021 1.249634
-Sum of squared residuals at call 47: 4.36931
- 85.026297 -0.777842 -4.036022 1.249634
- 85.026297 -0.777842 -4.036021 1.249634
-Sum of squared residuals at call 49: 4.36931
- 85.022674 -0.778681 -4.029670 1.252015
-Sum of squared residuals at call 50: 4.36506
- 85.022676 -0.778681 -4.029670 1.252015
- 85.022674 -0.778681 -4.029670 1.252015
- 85.022674 -0.778681 -4.029670 1.252015
-Sum of squared residuals at call 53: 4.36506
- 85.022674 -0.778681 -4.029670 1.252015
- 85.016327 -0.776316 -4.027611 1.248897
-Sum of squared residuals at call 55: 4.36408
- 85.016328 -0.776316 -4.027611 1.248897
-Sum of squared residuals at call 56: 4.36408
- 85.016327 -0.776316 -4.027611 1.248897
-Sum of squared residuals at call 57: 4.36408
- 85.016327 -0.776316 -4.027611 1.248897
- 85.016327 -0.776316 -4.027611 1.248897
- 85.008939 -0.777792 -4.026307 1.247720
-Sum of squared residuals at call 60: 4.36405
- 85.008938 -0.777792 -4.026307 1.247720
-Sum of squared residuals at call 61: 4.36405
- 85.008939 -0.777792 -4.026307 1.247720
-Sum of squared residuals at call 62: 4.36405
- 85.008939 -0.777792 -4.026307 1.247720
- 85.008939 -0.777792 -4.026307 1.247720
-Sum of squared residuals at call 64: 4.36405
- 85.005185 -0.777308 -4.026004 1.248453
-Sum of squared residuals at call 65: 4.36275
- 85.005186 -0.777308 -4.026004 1.248453
- 85.005185 -0.777308 -4.026004 1.248453
-Sum of squared residuals at call 67: 4.36275
- 85.005185 -0.777308 -4.026005 1.248453
- 85.005185 -0.777308 -4.026004 1.248453
- 85.001344 -0.777605 -4.025878 1.248775
-Sum of squared residuals at call 70: 4.36272
- 85.001345 -0.777605 -4.025878 1.248775
-Sum of squared residuals at call 71: 4.36272
- 85.001344 -0.777605 -4.025878 1.248775
-Sum of squared residuals at call 72: 4.36272
- 85.001344 -0.777605 -4.025878 1.248775
- 85.001344 -0.777605 -4.025878 1.248775
- 85.003200 -0.777473 -4.025700 1.248643
-Sum of squared residuals at call 75: 4.36271
- 85.003201 -0.777473 -4.025700 1.248643
- 85.003200 -0.777473 -4.025700 1.248643
-Sum of squared residuals at call 77: 4.36271
- 85.003200 -0.777473 -4.025700 1.248643
- 85.003200 -0.777473 -4.025700 1.248643
- 85.003200 -0.777473 -4.025700 1.248643
- 85.003200 -0.777473 -4.025700 1.248643
- 85.002495 -0.777491 -4.025911 1.248679
-Sum of squared residuals at call 82: 4.36271
- 85.002496 -0.777491 -4.025911 1.248679
-Sum of squared residuals at call 83: 4.36271
- 85.002494 -0.777491 -4.025911 1.248679
- 85.00249 -0.77749 -4.02591 1.24868
- 85.002495 -0.777491 -4.025911 1.248679
-Sum of squared residuals at call 86: 4.36271
- 85.002495 -0.777491 -4.025911 1.248679
- 85.002495 -0.777491 -4.025911 1.248679
- 85.002495 -0.777491 -4.025911 1.248679
- 85.002495 -0.777491 -4.025911 1.248679
- 85.002737 -0.777492 -4.025821 1.248672
-Sum of squared residuals at call 91: 4.36271
- 85.002739 -0.777492 -4.025821 1.248672
- 85.002736 -0.777492 -4.025821 1.248672
-Sum of squared residuals at call 93: 4.36271
- 85.002737 -0.777492 -4.025821 1.248672
-Sum of squared residuals at call 94: 4.36271
- 85.002737 -0.777492 -4.025821 1.248672
- 85.002737 -0.777492 -4.025821 1.248672
- 85.002737 -0.777492 -4.025821 1.248672
- 85.002737 -0.777492 -4.025821 1.248672
- 85.002737 -0.777492 -4.025821 1.248672
- 85.002731 -0.777491 -4.025817 1.248670
-Sum of squared residuals at call 100: 4.36271
- 85.002752 -0.777491 -4.025817 1.248670
- 85.002710 -0.777491 -4.025817 1.248670
- 85.00273 -0.77749 -4.02582 1.24867
- 85.002731 -0.777492 -4.025817 1.248670
- 85.002731 -0.777491 -4.025814 1.248670
- 85.002731 -0.777491 -4.025821 1.248670
- 85.002731 -0.777491 -4.025817 1.248671
- 85.002731 -0.777491 -4.025817 1.248669
- 85.002737 -0.777491 -4.025819 1.248671
-Sum of squared residuals at call 109: 4.36271
- 85.002758 -0.777491 -4.025819 1.248671
- 85.002716 -0.777491 -4.025819 1.248671
- 85.00274 -0.77749 -4.02582 1.24867
- 85.002737 -0.777492 -4.025819 1.248671
- 85.002737 -0.777491 -4.025815 1.248671
- 85.002737 -0.777491 -4.025822 1.248671
- 85.002737 -0.777491 -4.025819 1.248672
- 85.002737 -0.777491 -4.025819 1.248669
- 85.002737 -0.777491 -4.025819 1.248671
- 85.002737 -0.777491 -4.025819 1.248671 0.696237
+ 85.056739 -1.671603 -4.182209 0.648917
+Sum of squared residuals at call 6: 2451.52
+ 84.991262 -0.716611 -3.542058 1.631054
+Sum of squared residuals at call 7: 13.7829
+ 84.991267 -0.716611 -3.542058 1.631054
+Sum of squared residuals at call 8: 13.7829
+ 84.991262 -0.716614 -3.542058 1.631054
+Sum of squared residuals at call 9: 13.7826
+ 84.991262 -0.716611 -3.542062 1.631054
+ 84.991262 -0.716611 -3.542058 1.631050
+ 84.71288 -2.59069 -3.32179 3.26796
+ 84.965536 -0.926698 -3.537257 1.766536
+ 84.992033 -0.743768 -3.556304 1.612681
+Sum of squared residuals at call 14: 11.2376
+ 84.992032 -0.743768 -3.556304 1.612681
+ 84.992033 -0.743768 -3.556304 1.612681
+ 84.992033 -0.743768 -3.556304 1.612681
+ 84.992033 -0.743768 -3.556304 1.612681
+ 84.992597 -0.750733 -3.585098 1.592663
+Sum of squared residuals at call 19: 10.0865
+ 84.992595 -0.750733 -3.585098 1.592663
+Sum of squared residuals at call 20: 10.0865
+ 84.992597 -0.750733 -3.585098 1.592663
+Sum of squared residuals at call 21: 10.0865
+ 84.992597 -0.750733 -3.585097 1.592663
+ 84.992597 -0.750733 -3.585098 1.592664
+ 84.992421 -0.703782 -3.638466 1.584800
+Sum of squared residuals at call 24: 9.53394
+ 84.992423 -0.703782 -3.638466 1.584800
+Sum of squared residuals at call 25: 9.53394
+ 84.992421 -0.703782 -3.638466 1.584800
+Sum of squared residuals at call 26: 9.53394
+ 84.992421 -0.703782 -3.638465 1.584800
+ 84.992421 -0.703782 -3.638466 1.584800
+ 84.994457 -0.747193 -3.694957 1.590668
+Sum of squared residuals at call 29: 7.68535
+ 84.994455 -0.747193 -3.694957 1.590668
+Sum of squared residuals at call 30: 7.68535
+ 84.994457 -0.747193 -3.694957 1.590668
+Sum of squared residuals at call 31: 7.68535
+ 84.994457 -0.747193 -3.694956 1.590668
+ 84.994457 -0.747193 -3.694957 1.590668
+Sum of squared residuals at call 33: 7.68534
+ 84.99561 -0.74145 -3.74977 1.63623
+Sum of squared residuals at call 34: 6.54485
+ 84.99561 -0.74145 -3.74977 1.63623
+Sum of squared residuals at call 35: 6.54485
+ 84.99561 -0.74145 -3.74977 1.63623
+ 84.99561 -0.74145 -3.74977 1.63623
+ 84.99561 -0.74145 -3.74977 1.63623
+ 84.999195 -0.781375 -3.871798 1.699156
+Sum of squared residuals at call 39: 5.4816
+ 84.999193 -0.781375 -3.871798 1.699156
+Sum of squared residuals at call 40: 5.4816
+ 84.999195 -0.781375 -3.871798 1.699156
+Sum of squared residuals at call 41: 5.48159
+ 84.999195 -0.781375 -3.871798 1.699156
+ 84.999195 -0.781375 -3.871798 1.699157
+ 85.000245 -0.729263 -3.998464 1.657965
+ 84.999165 -0.745628 -3.914855 1.691551
+Sum of squared residuals at call 45: 4.96084
+ 84.999167 -0.745628 -3.914855 1.691551
+Sum of squared residuals at call 46: 4.96084
+ 84.999165 -0.745628 -3.914855 1.691551
+Sum of squared residuals at call 47: 4.96084
+ 84.999165 -0.745628 -3.914854 1.691551
+ 84.999165 -0.745628 -3.914855 1.691551
+ 85.000818 -0.765542 -3.951557 1.729540
+Sum of squared residuals at call 50: 4.5314
+ 85.000816 -0.765542 -3.951557 1.729540
+ 85.000818 -0.765542 -3.951557 1.729540
+ 85.000818 -0.765542 -3.951557 1.729540
+ 85.000818 -0.765542 -3.951557 1.729540
+ 85.002931 -0.771499 -4.054666 1.683855
+ 85.001154 -0.773816 -3.960228 1.725768
+ 85.000960 -0.769949 -3.954277 1.728373
+Sum of squared residuals at call 57: 4.51486
+ 85.000959 -0.769949 -3.954277 1.728373
+Sum of squared residuals at call 58: 4.51486
+ 85.000960 -0.769949 -3.954277 1.728373
+Sum of squared residuals at call 59: 4.51486
+ 85.000960 -0.769949 -3.954277 1.728373
+ 85.000960 -0.769949 -3.954277 1.728373
+Sum of squared residuals at call 61: 4.51485
+ 85.001004 -0.767037 -3.958449 1.729895
+Sum of squared residuals at call 62: 4.49757
+ 85.001005 -0.767037 -3.958449 1.729895
+Sum of squared residuals at call 63: 4.49757
+ 85.001004 -0.767037 -3.958449 1.729895
+ 85.001004 -0.767037 -3.958448 1.729895
+ 85.001004 -0.767037 -3.958449 1.729895
+ 85.001424 -0.769932 -3.968566 1.731267
+Sum of squared residuals at call 67: 4.46771
+ 85.001423 -0.769932 -3.968566 1.731267
+Sum of squared residuals at call 68: 4.46771
+ 85.001424 -0.769932 -3.968566 1.731267
+Sum of squared residuals at call 69: 4.46771
+ 85.001424 -0.769932 -3.968565 1.731267
+ 85.001424 -0.769932 -3.968566 1.731267
+ 85.002318 -0.774584 -3.980034 1.748508
+Sum of squared residuals at call 72: 4.42694
+ 85.002319 -0.774584 -3.980034 1.748508
+Sum of squared residuals at call 73: 4.42694
+ 85.002318 -0.774584 -3.980034 1.748508
+ 85.002318 -0.774584 -3.980034 1.748508
+ 85.002318 -0.774584 -3.980034 1.748508
+Sum of squared residuals at call 76: 4.42694
+ 85.002323 -0.762339 -3.996975 1.744734
+ 85.00232 -0.77126 -3.98463 1.74748
+Sum of squared residuals at call 78: 4.41527
+ 85.00232 -0.77126 -3.98463 1.74748
+Sum of squared residuals at call 79: 4.41527
+ 85.00232 -0.77126 -3.98463 1.74748
+ 85.00232 -0.77126 -3.98463 1.74748
+Sum of squared residuals at call 81: 4.41527
+ 85.00232 -0.77126 -3.98463 1.74748
+ 85.00232 -0.77126 -3.98463 1.74748
+ 85.002462 -0.773523 -3.989759 1.748837
+Sum of squared residuals at call 84: 4.39987
+ 85.002461 -0.773523 -3.989759 1.748837
+ 85.002462 -0.773523 -3.989759 1.748837
+Sum of squared residuals at call 86: 4.39987
+ 85.002462 -0.773523 -3.989759 1.748837
+ 85.002462 -0.773523 -3.989759 1.748837
+ 85.00261 -0.77140 -4.00108 1.74936
+Sum of squared residuals at call 89: 4.38752
+ 85.00261 -0.77140 -4.00108 1.74936
+ 85.00261 -0.77140 -4.00108 1.74936
+Sum of squared residuals at call 91: 4.38752
+ 85.00261 -0.77140 -4.00108 1.74936
+ 85.00261 -0.77140 -4.00108 1.74936
+ 85.002849 -0.775911 -4.019460 1.762547
+Sum of squared residuals at call 94: 4.36452
+ 85.002848 -0.775911 -4.019460 1.762547
+ 85.002849 -0.775911 -4.019460 1.762547
+ 85.002849 -0.775911 -4.019460 1.762547
+ 85.002849 -0.775911 -4.019460 1.762547
+Sum of squared residuals at call 98: 4.36452
+ 85.002513 -0.777516 -4.025854 1.765855
+Sum of squared residuals at call 99: 4.36272
+ 85.002512 -0.777516 -4.025854 1.765855
+Sum of squared residuals at call 100: 4.36272
+ 85.002513 -0.777516 -4.025854 1.765855
+Sum of squared residuals at call 101: 4.36272
+ 85.002513 -0.777516 -4.025854 1.765855
+ 85.002513 -0.777516 -4.025854 1.765855
+Sum of squared residuals at call 103: 4.36272
+ 85.002996 -0.777486 -4.025817 1.765889
+Sum of squared residuals at call 104: 4.36271
+ 85.002997 -0.777486 -4.025817 1.765889
+ 85.002995 -0.777486 -4.025817 1.765889
+Sum of squared residuals at call 106: 4.36271
+ 85.002996 -0.777486 -4.025817 1.765889
+ 85.002996 -0.777486 -4.025817 1.765889
+ 85.002996 -0.777486 -4.025817 1.765889
+ 85.002517 -0.777495 -4.025820 1.765890
+Sum of squared residuals at call 110: 4.36271
+ 85.002519 -0.777495 -4.025820 1.765890
+Sum of squared residuals at call 111: 4.36271
+ 85.002516 -0.777495 -4.025820 1.765890
+ 85.002517 -0.777494 -4.025820 1.765890
+ 85.002517 -0.777495 -4.025820 1.765890
+Sum of squared residuals at call 114: 4.36271
+ 85.002517 -0.777495 -4.025818 1.765890
+ 85.002517 -0.777495 -4.025823 1.765890
+ 85.002517 -0.777495 -4.025820 1.765891
+ 85.002517 -0.777495 -4.025820 1.765890
+ 85.002736 -0.777491 -4.025819 1.765887
+Sum of squared residuals at call 119: 4.36271
+ 85.002737 -0.777491 -4.025819 1.765887
+ 85.002734 -0.777491 -4.025819 1.765887
+Sum of squared residuals at call 121: 4.36271
+ 85.002736 -0.777491 -4.025819 1.765887
+ 85.002736 -0.777492 -4.025819 1.765887
+ 85.002736 -0.777491 -4.025818 1.765887
+ 85.002736 -0.777491 -4.025820 1.765887
+ 85.002736 -0.777491 -4.025819 1.765887
+Sum of squared residuals at call 126: 4.36271
+ 85.002736 -0.777491 -4.025819 1.765886
+ 85.002736 -0.777491 -4.025819 1.765887
+Sum of squared residuals at call 128: 4.36271
+ 85.002759 -0.777491 -4.025819 1.765887
+ 85.002713 -0.777491 -4.025819 1.765887
+ 85.002736 -0.777491 -4.025819 1.765887
+ 85.002736 -0.777492 -4.025819 1.765887
+ 85.002736 -0.777491 -4.025815 1.765887
+ 85.002736 -0.777491 -4.025822 1.765887
+ 85.002736 -0.777491 -4.025819 1.765889
+ 85.002736 -0.777491 -4.025819 1.765885
+ 85.002736 -0.777491 -4.025819 1.765887
+ 85.002736 -0.777491 -4.025819 1.765887 0.696237
diff --git a/tests/testthat/FOCUS_2006_D.csf b/tests/testthat/FOCUS_2006_D.csf
index c7cb6d41..8da4cd91 100644
--- a/tests/testthat/FOCUS_2006_D.csf
+++ b/tests/testthat/FOCUS_2006_D.csf
@@ -5,7 +5,7 @@ Description:
MeasurementUnits: % AR
TimeUnits: days
Comments: Created using mkin::CAKE_export
-Date: 2020-11-04
+Date: 2020-11-05
Optimiser: IRLS
[Data]
diff --git a/tests/testthat/summary_DFOP_FOCUS_C.txt b/tests/testthat/summary_DFOP_FOCUS_C.txt
index b9ba7c17..2b0210c0 100644
--- a/tests/testthat/summary_DFOP_FOCUS_C.txt
+++ b/tests/testthat/summary_DFOP_FOCUS_C.txt
@@ -28,7 +28,7 @@ Starting values for the transformed parameters actually optimised:
parent_0 85.100000 -Inf Inf
log_k1 -2.302585 -Inf Inf
log_k2 -4.605170 -Inf Inf
-g_ilr 0.000000 -Inf Inf
+g_qlogis 0.000000 -Inf Inf
Fixed parameter values:
None
@@ -43,7 +43,7 @@ Optimised, transformed parameters with symmetric confidence intervals:
parent_0 85.0000 0.66620 83.1500 86.8500
log_k1 -0.7775 0.03380 -0.8713 -0.6836
log_k2 -4.0260 0.13100 -4.3890 -3.6620
-g_ilr 1.2490 0.05811 1.0870 1.4100
+g_qlogis 1.7660 0.08218 1.5380 1.9940
sigma 0.6962 0.16410 0.2406 1.1520
Parameter correlation:
diff --git a/tests/testthat/test_schaefer07_complex_case.R b/tests/testthat/test_schaefer07_complex_case.R
index 703298d5..60f5d600 100644
--- a/tests/testthat/test_schaefer07_complex_case.R
+++ b/tests/testthat/test_schaefer07_complex_case.R
@@ -1,8 +1,8 @@
context("Complex test case from Schaefer et al. (2007) Piacenza paper")
test_that("Complex test case from Schaefer (2007) can be reproduced (10% tolerance)", {
-
- skip_on_cran()
+
+ skip_on_cran()
schaefer07_complex_model <- mkinmod(
parent = list(type = "SFO", to = c("A1", "B1", "C1"), sink = FALSE),
A1 = list(type = "SFO", to = "A2"),

Contact - Imprint