diff options
| author | Johannes Ranke <jranke@uni-bremen.de> | 2020-11-06 00:03:29 +0100 | 
|---|---|---|
| committer | Johannes Ranke <jranke@uni-bremen.de> | 2020-11-06 00:03:29 +0100 | 
| commit | b5b446b718b15ccaae5b197e147fc1358f0f564e (patch) | |
| tree | a36f32ee664c6925b5afdb812daca41075968152 | |
| parent | 2f24fe0ce70d040e491619d7f2413fc902e433f1 (diff) | |
Fast analytical solutions for saemix, update.mmkin
Also, use logit transformation for g and for solitary formation
fractions, addressing #10.
56 files changed, 1454 insertions, 741 deletions
| @@ -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) @@ -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) @@ -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 +} @@ -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.pngBinary files differ index 36b20f09..17a35806 100644 --- a/docs/dev/reference/Rplot001.png +++ b/docs/dev/reference/Rplot001.png diff --git a/docs/dev/reference/Rplot002.png b/docs/dev/reference/Rplot002.pngBinary files differ index b568eb1c..a33ecd71 100644 --- a/docs/dev/reference/Rplot002.png +++ b/docs/dev/reference/Rplot002.png diff --git a/docs/dev/reference/Rplot003.png b/docs/dev/reference/Rplot003.pngBinary files differ index 53415e5d..dd7e24f3 100644 --- a/docs/dev/reference/Rplot003.png +++ b/docs/dev/reference/Rplot003.png diff --git a/docs/dev/reference/Rplot004.png b/docs/dev/reference/Rplot004.pngBinary files differ index ea685493..2057f883 100644 --- a/docs/dev/reference/Rplot004.png +++ b/docs/dev/reference/Rplot004.png diff --git a/docs/dev/reference/Rplot005.png b/docs/dev/reference/Rplot005.pngBinary files differ index aceec1b5..b9285d56 100644 --- a/docs/dev/reference/Rplot005.png +++ b/docs/dev/reference/Rplot005.png diff --git a/docs/dev/reference/Rplot006.png b/docs/dev/reference/Rplot006.pngBinary files differ index b3c9f16f..511c6b00 100644 --- a/docs/dev/reference/Rplot006.png +++ b/docs/dev/reference/Rplot006.png diff --git a/docs/dev/reference/Rplot007.png b/docs/dev/reference/Rplot007.pngBinary files differ index 225931c4..a0d6336e 100644 --- a/docs/dev/reference/Rplot007.png +++ b/docs/dev/reference/Rplot007.png diff --git a/docs/dev/reference/Rplot008.png b/docs/dev/reference/Rplot008.pngBinary files differ new file mode 100644 index 00000000..5d1701b8 --- /dev/null +++ b/docs/dev/reference/Rplot008.png diff --git a/docs/dev/reference/Rplot009.png b/docs/dev/reference/Rplot009.pngBinary files differ new file mode 100644 index 00000000..7788b2d0 --- /dev/null +++ b/docs/dev/reference/Rplot009.png diff --git a/docs/dev/reference/Rplot010.png b/docs/dev/reference/Rplot010.pngBinary files differ new file mode 100644 index 00000000..86ddd790 --- /dev/null +++ b/docs/dev/reference/Rplot010.png diff --git a/docs/dev/reference/Rplot011.png b/docs/dev/reference/Rplot011.pngBinary files differ new file mode 100644 index 00000000..30861f3e --- /dev/null +++ b/docs/dev/reference/Rplot011.png diff --git a/docs/dev/reference/Rplot012.png b/docs/dev/reference/Rplot012.pngBinary files differ new file mode 100644 index 00000000..4286bb2a --- /dev/null +++ b/docs/dev/reference/Rplot012.png diff --git a/docs/dev/reference/Rplot013.png b/docs/dev/reference/Rplot013.pngBinary files differ new file mode 100644 index 00000000..65903441 --- /dev/null +++ b/docs/dev/reference/Rplot013.png diff --git a/docs/dev/reference/Rplot014.png b/docs/dev/reference/Rplot014.pngBinary files differ new file mode 100644 index 00000000..fe2cf0d9 --- /dev/null +++ b/docs/dev/reference/Rplot014.png diff --git a/docs/dev/reference/Rplot015.png b/docs/dev/reference/Rplot015.pngBinary files differ new file mode 100644 index 00000000..65903441 --- /dev/null +++ b/docs/dev/reference/Rplot015.png diff --git a/docs/dev/reference/mkinfit-1.png b/docs/dev/reference/mkinfit-1.pngBinary files differ new file mode 100644 index 00000000..eed9064f --- /dev/null +++ b/docs/dev/reference/mkinfit-1.png 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'>#> mkin version used for fitting:    0.9.50.4   #> R version used for fitting:       4.0.3  -#> Date of fit:     Thu Nov  5 08:25:42 2020  -#> Date of summary: Thu Nov  5 08:25:42 2020  +#> Date of fit:     Thu Nov  5 23:14:40 2020  +#> Date of summary: Thu Nov  5 23:14:40 2020   #>   #> Equations:  #> d_parent/dt = - (alpha/beta) * 1/((time/beta) + 1) * parent  #>   #> Model predictions using solution type analytical   #>  -#> Fitted using 222 model solutions performed in 0.049 s +#> Fitted using 222 model solutions performed in 0.05 s  #>   #> Error model: Constant variance   #>  @@ -521,8 +520,8 @@ Degradation Data. <em>Environments</em> 6(12) 124  </div><div class='output co'>#> <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'><-</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'><-</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  #> ---  #> 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'><-</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'>#> Likelihood ratio test  #>  @@ -549,9 +547,9 @@ Degradation Data. <em>Environments</em> 6(12) 124  #> ---  #> 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'>#>       parent_0       k_parent           k_m1 f_parent_to_m1      sigma_low  -#>   1.007343e+02   1.005562e-01   5.166712e-03   5.083933e-01   3.049891e-03  +#>   1.007343e+02   1.005562e-01   5.166712e-03   5.083933e-01   3.049884e-03   #>       rsd_high  -#>   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> +#>   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'>#> $ff  #>   parent_m1 parent_sink   #>   0.5083933   0.4916067  @@ -559,7 +557,7 @@ Degradation Data. <em>Environments</em> 6(12) 124  #> $distimes  #>             DT50      DT90  #> parent   6.89313  22.89848 -#> m1     134.15635 445.65776 +#> m1     134.15634 445.65772  #> </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'>#> <span class='message'>Loading required package: rbenchmark</span></div><div class='output co'>#>               test relative elapsed -#> 3       analytical    1.000   0.746 -#> 1 deSolve_compiled    2.288   1.707 -#> 2            eigen    2.708   2.020</div><div class='input'><span class='co'># }</span> +#> 3       analytical    1.000   0.532 +#> 1 deSolve_compiled    1.765   0.939 +#> 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'>#> <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'><-</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'><-</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'>#> <span class='warning'>Warning: Optimisation did not converge:</span> +#> <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'>#> Likelihood ratio test  #>   #> Model 1: FOMC_SFO with error model tc and fixed parameter(s) m1_0  #> Model 2: SFO_SFO with error model tc and fixed parameter(s) m1_0  #>   #Df  LogLik Df  Chisq Pr(>Chisq) -#> 1   7 -64.829                      -#> 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> +#> 1   7 -64.870                      +#> 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'>#> <span class='warning'>Warning: NaNs produced</span></div><div class='output co'>#> <span class='warning'>Warning: NaNs produced</span></div><div class='output co'>#> <span class='warning'>Warning: diag(.) had 0 or NA entries; non-finite result is doubtful</span></div><div class='output co'>#> mkin version used for fitting:    0.9.50.4  +</div><div class='output co'>#> <span class='warning'>Warning: NaNs produced</span></div><div class='output co'>#> <span class='warning'>Warning: NaNs produced</span></div><div class='output co'>#> <span class='warning'>Warning: NaNs produced</span></div><div class='output co'>#> <span class='warning'>Warning: diag(.) had 0 or NA entries; non-finite result is doubtful</span></div><div class='output co'>#> mkin version used for fitting:    0.9.50.4   #> R version used for fitting:       4.0.3  -#> Date of fit:     Thu Nov  5 08:25:56 2020  -#> Date of summary: Thu Nov  5 08:25:56 2020  +#> Date of fit:     Thu Nov  5 23:14:51 2020  +#> Date of summary: Thu Nov  5 23:14:51 2020   #>   #> Equations:  #> d_parent/dt = - (alpha/beta) * 1/((time/beta) + 1) * parent @@ -611,7 +610,7 @@ Degradation Data. <em>Environments</em> 6(12) 124  #>   #> Model predictions using solution type deSolve   #>  -#> Fitted using 3611 model solutions performed in 2.673 s +#> Fitted using 4273 model solutions performed in 3.081 s  #>   #> Error model: Two-component variance function   #>  @@ -629,80 +628,85 @@ Degradation Data. <em>Environments</em> 6(12) 124  #> rsd_high         0.10  error  #>   #> Starting values for the transformed parameters actually optimised: -#>                     value lower upper -#> parent_0       100.750000  -Inf   Inf -#> log_k_m1        -2.302585  -Inf   Inf -#> f_parent_ilr_1   0.000000  -Inf   Inf -#> log_alpha        0.000000  -Inf   Inf -#> log_beta         2.302585  -Inf   Inf -#> sigma_low        0.100000     0   Inf -#> rsd_high         0.100000     0   Inf +#>                      value lower upper +#> parent_0        100.750000  -Inf   Inf +#> log_k_m1         -2.302585  -Inf   Inf +#> f_parent_qlogis   0.000000  -Inf   Inf +#> log_alpha         0.000000  -Inf   Inf +#> log_beta          2.302585  -Inf   Inf +#> sigma_low         0.100000     0   Inf +#> rsd_high          0.100000     0   Inf  #>   #> Fixed parameter values:  #>      value  type  #> m1_0     0 state  #>  +#>  +#> Warning(s):  +#> Optimisation did not converge: +#> iteration limit reached without convergence (10) +#>   #> Results:  #>  -#>       AIC      BIC    logLik -#>   143.658 155.1211 -64.82902 +#>        AIC      BIC    logLik +#>   143.7396 155.2027 -64.86982  #>   #> Optimised, transformed parameters with symmetric confidence intervals: -#>                  Estimate Std. Error     Lower      Upper -#> parent_0       101.600000  2.6390000 96.240000 107.000000 -#> log_k_m1        -5.284000  0.0928900 -5.473000  -5.095000 -#> f_parent_ilr_1   0.001008  0.0541900 -0.109500   0.111500 -#> log_alpha        5.522000  0.0077300  5.506000   5.538000 -#> log_beta         7.806000        NaN       NaN        NaN -#> sigma_low        0.002488  0.0002431  0.001992   0.002984 -#> rsd_high         0.079210  0.0093280  0.060180   0.098230 +#>                   Estimate Std. Error   Lower    Upper +#> parent_0         1.016e+02    1.90600 97.7400 105.5000 +#> log_k_m1        -5.285e+00    0.09286 -5.4740  -5.0950 +#> f_parent_qlogis  6.482e-04    0.06164 -0.1251   0.1264 +#> log_alpha        5.467e+00        NaN     NaN      NaN +#> log_beta         7.750e+00        NaN     NaN      NaN +#> sigma_low        0.000e+00        NaN     NaN      NaN +#> rsd_high         7.989e-02        NaN     NaN      NaN  #>   #> Parameter correlation: -#>                 parent_0  log_k_m1 f_parent_ilr_1 log_alpha log_beta sigma_low -#> parent_0        1.000000 -0.094697       -0.76654   0.70525      NaN  0.016099 -#> log_k_m1       -0.094697  1.000000        0.51404  -0.14347      NaN  0.001576 -#> f_parent_ilr_1 -0.766543  0.514038        1.00000  -0.61368      NaN  0.015465 -#> log_alpha       0.705247 -0.143468       -0.61368   1.00000      NaN  5.871780 -#> log_beta             NaN       NaN            NaN       NaN        1       NaN -#> sigma_low       0.016099  0.001576        0.01546   5.87178      NaN  1.000000 -#> rsd_high        0.006566 -0.011662       -0.05353   0.04845      NaN -0.652554 -#>                 rsd_high -#> parent_0        0.006566 -#> log_k_m1       -0.011662 -#> f_parent_ilr_1 -0.053525 -#> log_alpha       0.048451 -#> log_beta             NaN -#> sigma_low      -0.652554 -#> rsd_high        1.000000 +#>                   parent_0   log_k_m1 f_parent_qlogis log_alpha log_beta +#> parent_0         1.0000000 -0.0002167         -0.6060       NaN      NaN +#> log_k_m1        -0.0002167  1.0000000          0.5474       NaN      NaN +#> f_parent_qlogis -0.6060320  0.5474423          1.0000       NaN      NaN +#> log_alpha              NaN        NaN             NaN         1      NaN +#> log_beta               NaN        NaN             NaN       NaN        1 +#> sigma_low              NaN        NaN             NaN       NaN      NaN +#> rsd_high               NaN        NaN             NaN       NaN      NaN +#>                 sigma_low rsd_high +#> parent_0              NaN      NaN +#> log_k_m1              NaN      NaN +#> f_parent_qlogis       NaN      NaN +#> log_alpha             NaN      NaN +#> log_beta              NaN      NaN +#> sigma_low               1      NaN +#> rsd_high              NaN        1  #>   #> Backtransformed parameters:  #> Confidence intervals for internally transformed parameters are asymmetric.  #> t-test (unrealistically) based on the assumption of normal distribution  #> for estimators of untransformed parameters.  #>                 Estimate t value    Pr(>t)     Lower     Upper -#> parent_0       1.016e+02 32.7800 6.312e-26 9.624e+01 1.070e+02 -#> k_m1           5.072e-03 10.1200 1.216e-11 4.197e-03 6.130e-03 -#> f_parent_to_m1 5.004e-01 20.8300 4.318e-20 4.614e-01 5.394e-01 -#> alpha          2.502e+02  0.5624 2.889e-01 2.463e+02 2.542e+02 -#> beta           2.455e+03  0.5549 2.915e-01        NA        NA -#> sigma_low      2.488e-03  0.4843 3.158e-01 1.992e-03 2.984e-03 -#> rsd_high       7.921e-02  8.4300 8.001e-10 6.018e-02 9.823e-02 +#> parent_0       1.016e+02 32.5400 7.812e-26 97.740000 1.055e+02 +#> k_m1           5.069e-03 10.0400 1.448e-11  0.004194 6.126e-03 +#> f_parent_to_m1 5.002e-01 20.7300 5.001e-20  0.468800 5.315e-01 +#> alpha          2.367e+02  0.6205 2.697e-01        NA        NA +#> beta           2.322e+03  0.6114 2.727e-01        NA        NA +#> sigma_low      0.000e+00     NaN       NaN       NaN       NaN +#> rsd_high       7.989e-02  8.6630 4.393e-10       NaN       NaN  #>   #> FOCUS Chi2 error levels in percent:  #>          err.min n.optim df -#> All data   6.781       5 14 -#> parent     7.141       3  6 -#> m1         4.640       2  8 +#> All data   6.782       5 14 +#> parent     7.142       3  6 +#> m1         4.639       2  8  #>   #> Resulting formation fractions:  #>                 ff -#> parent_m1   0.5004 -#> parent_sink 0.4996 +#> parent_m1   0.5002 +#> parent_sink 0.4998  #>   #> Estimated disappearance times: -#>           DT50  DT90 DT50back -#> parent   6.812  22.7    6.834 -#> m1     136.661 454.0       NA</div><div class='input'> +#>          DT50  DT90 DT50back +#> parent   6.81  22.7    6.833 +#> 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'><-</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.pngBinary files differ index 135d5446..7b7da90a 100644 --- a/docs/dev/reference/mmkin-1.png +++ b/docs/dev/reference/mmkin-1.png diff --git a/docs/dev/reference/mmkin-2.png b/docs/dev/reference/mmkin-2.pngBinary files differ index 40109afc..ce2b2af4 100644 --- a/docs/dev/reference/mmkin-2.png +++ b/docs/dev/reference/mmkin-2.png diff --git a/docs/dev/reference/mmkin-3.png b/docs/dev/reference/mmkin-3.pngBinary files differ index bce34531..bb96f1b2 100644 --- a/docs/dev/reference/mmkin-3.png +++ b/docs/dev/reference/mmkin-3.png diff --git a/docs/dev/reference/mmkin-4.png b/docs/dev/reference/mmkin-4.pngBinary files differ index 02976ced..351b21aa 100644 --- a/docs/dev/reference/mmkin-4.png +++ b/docs/dev/reference/mmkin-4.png diff --git a/docs/dev/reference/mmkin-5.png b/docs/dev/reference/mmkin-5.pngBinary files differ index 56750342..c1c05eea 100644 --- a/docs/dev/reference/mmkin-5.png +++ b/docs/dev/reference/mmkin-5.png 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'><-</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'>#> <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'><-</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'>#> <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'><-</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'><-</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'><-</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'><-</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'><-</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'><-</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'><-</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'>#> <span class='warning'>Warning: Optimisation did not converge:</span> -#> <span class='warning'>false convergence (8)</span></div><div class='output co'>#> <span class='warning'>Warning: Shapiro-Wilk test for standardized residuals: p =  0.0117</span></div><div class='output co'>#> <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'>#>    user  system elapsed  -#>   4.500   0.399   1.311 </div><div class='input'><span class='no'>time_1</span></div><div class='output co'>#>    user  system elapsed  -#>   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'>#> $ff +<span class='va'>m_synth_SFO_lin</span> <span class='op'><-</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'>#> <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'><-</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'>#> <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'><-</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'><-</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'><-</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'><-</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'><-</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'><-</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'><-</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'>#>    user  system elapsed  +#>   4.706   0.488   1.375 </div><div class='input'><span class='va'>time_1</span> +</div><div class='output co'>#>    user  system elapsed  +#>   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'>#> $ff  #>   parent_M1 parent_sink       M1_M2     M1_sink  -#>   0.7340478   0.2659522   0.7505691   0.2494309  +#>   0.7340478   0.2659522   0.7505687   0.2494313   #>   #> $distimes -#>              DT50       DT90 -#> parent  0.8777688   2.915885 -#> M1      2.3257466   7.725963 -#> M2     33.7200800 112.015681 +#>             DT50       DT90 +#> parent  0.877769   2.915885 +#> M1      2.325746   7.725960 +#> M2     33.720083 112.015691  #> </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.pngBinary files differ index 696fa7d9..e5e01249 100644 --- a/docs/dev/reference/saemix-1.png +++ b/docs/dev/reference/saemix-1.png diff --git a/docs/dev/reference/saemix-10.png b/docs/dev/reference/saemix-10.pngBinary files differ new file mode 100644 index 00000000..19aa6cfb --- /dev/null +++ b/docs/dev/reference/saemix-10.png diff --git a/docs/dev/reference/saemix-11.png b/docs/dev/reference/saemix-11.pngBinary files differ new file mode 100644 index 00000000..454b9be0 --- /dev/null +++ b/docs/dev/reference/saemix-11.png diff --git a/docs/dev/reference/saemix-12.png b/docs/dev/reference/saemix-12.pngBinary files differ new file mode 100644 index 00000000..c8b0fd71 --- /dev/null +++ b/docs/dev/reference/saemix-12.png diff --git a/docs/dev/reference/saemix-13.png b/docs/dev/reference/saemix-13.pngBinary files differ new file mode 100644 index 00000000..e3538cb6 --- /dev/null +++ b/docs/dev/reference/saemix-13.png diff --git a/docs/dev/reference/saemix-2.png b/docs/dev/reference/saemix-2.pngBinary files differ index 6525a36c..4bc3d0bc 100644 --- a/docs/dev/reference/saemix-2.png +++ b/docs/dev/reference/saemix-2.png diff --git a/docs/dev/reference/saemix-3.png b/docs/dev/reference/saemix-3.pngBinary files differ index 86ae1f19..be6b0acb 100644 --- a/docs/dev/reference/saemix-3.png +++ b/docs/dev/reference/saemix-3.png diff --git a/docs/dev/reference/saemix-4.png b/docs/dev/reference/saemix-4.pngBinary files differ index e0c5ce4a..fa4db812 100644 --- a/docs/dev/reference/saemix-4.png +++ b/docs/dev/reference/saemix-4.png diff --git a/docs/dev/reference/saemix-5.png b/docs/dev/reference/saemix-5.pngBinary files differ new file mode 100644 index 00000000..2b7b8f46 --- /dev/null +++ b/docs/dev/reference/saemix-5.png diff --git a/docs/dev/reference/saemix-6.png b/docs/dev/reference/saemix-6.pngBinary files differ new file mode 100644 index 00000000..af14b43b --- /dev/null +++ b/docs/dev/reference/saemix-6.png diff --git a/docs/dev/reference/saemix-7.png b/docs/dev/reference/saemix-7.pngBinary files differ new file mode 100644 index 00000000..e3538cb6 --- /dev/null +++ b/docs/dev/reference/saemix-7.png diff --git a/docs/dev/reference/saemix-8.png b/docs/dev/reference/saemix-8.pngBinary files differ new file mode 100644 index 00000000..35cc6c6e --- /dev/null +++ b/docs/dev/reference/saemix-8.png diff --git a/docs/dev/reference/saemix-9.png b/docs/dev/reference/saemix-9.pngBinary files differ new file mode 100644 index 00000000..e3538cb6 --- /dev/null +++ b/docs/dev/reference/saemix-9.png 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'><-</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'><-</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'><-</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'>#> <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'><-</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'>#> <span class='message'>Package saemix, version 3.1.9000</span> -#> <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'><-</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> +#> <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'><-</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'><-</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'><-</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'><-</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'>#>   #>   #> The following SaemixModel object was successfully created: @@ -208,59 +207,236 @@ variances of the deviations of the parameters from these mean values.</p>  #>   Model function:  Mixed model generated from mmkin object  Model type:  structural  #> function (psi, id, xidep)   #> { -#>     uid <- unique(id) -#>     res_list <- parallel::mclapply(uid, function(i) { -#>         transparms_optim <- psi[i, ] -#>         names(transparms_optim) <- names(degparms_optim) -#>         odeini_optim <- transparms_optim[odeini_optim_parm_names] -#>         names(odeini_optim) <- gsub("_0$", "", odeini_optim_parm_names) -#>         odeini <- c(odeini_optim, odeini_fixed)[names(mkin_model$diffs)] -#>         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) -#>         xidep_i <- subset(xidep, id == i) -#>         if (analytical) { -#>             out_values <- mkin_model$deg_func(xidep_i, odeini,  -#>                 odeparms) -#>         } -#>         else { -#>             i_time <- xidep_i$time -#>             i_name <- xidep_i$name -#>             out_wide <- mkinpredict(mkin_model, odeparms = odeparms,  -#>                 odeini = odeini, solution_type = object[[1]]$solution_type,  -#>                 outtimes = sort(unique(i_time))) -#>             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) +#>     odeini_fixed/(xidep[, "time"]/exp(psi[id, 2]) + 1)^exp(psi[id,  +#>         1]) +#> } +#> <bytecode: 0x5555599945b8> +#> <environment: 0x555559984388> +#>   Nb of parameters: 2  +#>       parameter names:  log_alpha log_beta  +#>       distribution: +#>      Parameter Distribution Estimated +#> [1,] log_alpha normal       Estimated +#> [2,] log_beta  normal       Estimated +#>   Variance-covariance matrix: +#>           log_alpha log_beta +#> log_alpha         1        0 +#> log_beta          0        1 +#>   Error model: constant , initial values: a.1=2.95893806804889  +#>     No covariate in the model. +#>     Initial values +#>              log_alpha log_beta +#> Pop.CondInit -0.347996  1.66788</div><div class='input'><span class='va'>d_saemix_parent</span> <span class='op'><-</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'>#>  +#>  +#> The following SaemixData object was successfully created: +#>  +#> Object of class SaemixData +#>     longitudinal data for use with the SAEM algorithm +#> Dataset ds_saemix  +#>     Structured data: value ~ time + name | ds  +#>     X variable for graphs: time () </div><div class='input'><span class='va'>saemix_options</span> <span class='op'><-</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'><-</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'>#> Running main SAEM algorithm +#> [1] "Thu Nov  5 23:53:29 2020" +#> .. +#>     Minimisation finished +#> [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'>#> Nonlinear mixed-effects model fit by the SAEM algorithm +#> ----------------------------------- +#> ----          Data             ---- +#> ----------------------------------- +#> Object of class SaemixData +#>     longitudinal data for use with the SAEM algorithm +#> Dataset ds_saemix  +#>     Structured data: value ~ time + name | ds  +#>     X variable for graphs: time ()  +#> Dataset characteristics: +#>     number of subjects:     5  +#>     number of observations: 90  +#>     average/min/max nb obs: 18.00  /  16  /  20  +#> First 10 lines of data: +#>           ds time   name value mdv cens occ ytype +#> 1  Dataset 6    0 parent  97.2   0    0   1     1 +#> 2  Dataset 6    0 parent  96.4   0    0   1     1 +#> 3  Dataset 6    3 parent  71.1   0    0   1     1 +#> 4  Dataset 6    3 parent  69.2   0    0   1     1 +#> 5  Dataset 6    6 parent  58.1   0    0   1     1 +#> 6  Dataset 6    6 parent  56.6   0    0   1     1 +#> 7  Dataset 6   10 parent  44.4   0    0   1     1 +#> 8  Dataset 6   10 parent  43.4   0    0   1     1 +#> 9  Dataset 6   20 parent  33.3   0    0   1     1 +#> 10 Dataset 6   20 parent  29.2   0    0   1     1 +#> ----------------------------------- +#> ----          Model            ---- +#> ----------------------------------- +#> Nonlinear mixed-effects model +#>   Model function:  Mixed model generated from mmkin object  Model type:  structural +#> function (psi, id, xidep)  +#> { +#>     odeini_fixed/(xidep[, "time"]/exp(psi[id, 2]) + 1)^exp(psi[id,  +#>         1]) +#> } +#> <bytecode: 0x5555599945b8> +#> <environment: 0x555559984388> +#>   Nb of parameters: 2  +#>       parameter names:  log_alpha log_beta  +#>       distribution: +#>      Parameter Distribution Estimated +#> [1,] log_alpha normal       Estimated +#> [2,] log_beta  normal       Estimated +#>   Variance-covariance matrix: +#>           log_alpha log_beta +#> log_alpha         1        0 +#> log_beta          0        1 +#>   Error model: constant , initial values: a.1=2.95893806804889  +#>     No covariate in the model. +#>     Initial values +#>              log_alpha log_beta +#> Pop.CondInit -0.347996  1.66788 +#> ----------------------------------- +#> ----    Key algorithm options  ---- +#> ----------------------------------- +#>     Estimation of individual parameters (MAP) +#>     Estimation of standard errors and linearised log-likelihood +#>     Estimation of log-likelihood by importance sampling +#>     Number of iterations:  K1=200, K2=80  +#>     Number of chains:  10  +#>     Seed:  123456  +#>     Number of MCMC iterations for IS:  5000  +#>     Simulations: +#>         nb of simulated datasets used for npde:  1000  +#>         nb of simulated datasets used for VPC:  100  +#>     Input/output +#>         save the results to a file:  FALSE  +#>         save the graphs to files:  FALSE  +#> ---------------------------------------------------- +#> ----                  Results                   ---- +#> ---------------------------------------------------- +#> -----------------  Fixed effects  ------------------ +#> ---------------------------------------------------- +#>   Parameter Estimate SE   CV(%) +#>   log_alpha -0.33    0.30 91.6  +#>   log_beta   1.70    0.21 12.4  +#> a a.1        3.15    0.25  7.9  +#> ---------------------------------------------------- +#> -----------  Variance of random effects  ----------- +#> ---------------------------------------------------- +#>           Parameter        Estimate SE   CV(%) +#> log_alpha omega2.log_alpha 0.44     0.28 65    +#> log_beta  omega2.log_beta  0.18     0.14 79    +#> ---------------------------------------------------- +#> ------  Correlation matrix of random effects  ------ +#> ---------------------------------------------------- +#>                  omega2.log_alpha omega2.log_beta +#> omega2.log_alpha 1                0               +#> omega2.log_beta  0                1               +#> ---------------------------------------------------- +#> ---------------  Statistical criteria  ------------- +#> ---------------------------------------------------- +#> Likelihood computed by linearisation +#>       -2LL= 501.6082  +#>       AIC = 511.6082  +#>       BIC = 509.6554  +#>  +#> Likelihood computed by importance sampling +#>       -2LL= 501.7  +#>       AIC = 511.7  +#>       BIC = 509.7472  +#> ----------------------------------------------------</div><div class='input'> +<span class='va'>f_mmkin_parent</span> <span class='op'><-</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'><-</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'>#>  +#>  +#> The following SaemixModel object was successfully created: +#>  +#> Nonlinear mixed-effects model +#>   Model function:  Mixed model generated from mmkin object  Model type:  structural +#> function (psi, id, xidep)  +#> { +#>     psi[id, 1] * exp(-exp(psi[id, 2]) * xidep[, "time"])  #> } -#> <bytecode: 0x55555d62aeb8> -#> <environment: 0x55555e35c170> +#> <bytecode: 0x55555998d588> +#> <environment: 0x55555c0f4ae8> +#>   Nb of parameters: 2  +#>       parameter names:  parent_0 log_k_parent  +#>       distribution: +#>      Parameter    Distribution Estimated +#> [1,] parent_0     normal       Estimated +#> [2,] log_k_parent normal       Estimated +#>   Variance-covariance matrix: +#>              parent_0 log_k_parent +#> parent_0            1            0 +#> log_k_parent        0            1 +#>   Error model: constant , initial values: a.1=5.76827561471585  +#>     No covariate in the model. +#>     Initial values +#>              parent_0 log_k_parent +#> Pop.CondInit 86.39406    -3.215063</div><div class='input'><span class='va'>m_saemix_fomc</span> <span class='op'><-</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'>#>  +#>  +#> The following SaemixModel object was successfully created: +#>  +#> Nonlinear mixed-effects model +#>   Model function:  Mixed model generated from mmkin object  Model type:  structural +#> function (psi, id, xidep)  +#> { +#>     psi[id, 1]/(xidep[, "time"]/exp(psi[id, 3]) + 1)^exp(psi[id,  +#>         2]) +#> } +#> <bytecode: 0x55555998dc50> +#> <environment: 0x5555595d7668> +#>   Nb of parameters: 3  +#>       parameter names:  parent_0 log_alpha log_beta  +#>       distribution: +#>      Parameter Distribution Estimated +#> [1,] parent_0  normal       Estimated +#> [2,] log_alpha normal       Estimated +#> [3,] log_beta  normal       Estimated +#>   Variance-covariance matrix: +#>           parent_0 log_alpha log_beta +#> parent_0         1         0        0 +#> log_alpha        0         1        0 +#> log_beta         0         0        1 +#>   Error model: constant , initial values: a.1=1.91976382242696  +#>     No covariate in the model. +#>     Initial values +#>              parent_0  log_alpha log_beta +#> Pop.CondInit 94.43884 -0.2226095 2.048192</div><div class='input'><span class='va'>m_saemix_dfop</span> <span class='op'><-</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'>#>  +#>  +#> The following SaemixModel object was successfully created: +#>  +#> Nonlinear mixed-effects model +#>   Model function:  Mixed model generated from mmkin object  Model type:  structural +#> 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)) +#> } +#> <bytecode: 0x55555998e548> +#> <environment: 0x555558225bf0>  #>   Nb of parameters: 4  -#>       parameter names:  parent_0 log_k_parent log_k_A1 f_parent_ilr_1  +#>       parameter names:  parent_0 log_k1 log_k2 g_qlogis   #>       distribution: -#>      Parameter      Distribution Estimated -#> [1,] parent_0       normal       Estimated -#> [2,] log_k_parent   normal       Estimated -#> [3,] log_k_A1       normal       Estimated -#> [4,] f_parent_ilr_1 normal       Estimated +#>      Parameter Distribution Estimated +#> [1,] parent_0  normal       Estimated +#> [2,] log_k1    normal       Estimated +#> [3,] log_k2    normal       Estimated +#> [4,] g_qlogis  normal       Estimated  #>   Variance-covariance matrix: -#>                parent_0 log_k_parent log_k_A1 f_parent_ilr_1 -#> parent_0              1            0        0              0 -#> log_k_parent          0            1        0              0 -#> log_k_A1              0            0        1              0 -#> f_parent_ilr_1        0            0        0              1 -#>   Error model: constant , initial values: a.1=4.97259024646577  +#>          parent_0 log_k1 log_k2 g_qlogis +#> parent_0        1      0      0        0 +#> log_k1          0      1      0        0 +#> log_k2          0      0      1        0 +#> g_qlogis        0      0      0        1 +#>   Error model: constant , initial values: a.1=1.94671278396371   #>     No covariate in the model.  #>     Initial values -#>              parent_0 log_k_parent  log_k_A1 f_parent_ilr_1 -#> Pop.CondInit 86.53449    -3.207005 -3.060308      -1.920449</div><div class='input'><span class='va'>d_saemix</span> <span class='op'><-</span> <span class='fu'>saemix_data</span><span class='op'>(</span><span class='va'>f_mmkin</span><span class='op'>)</span> +#>              parent_0    log_k1    log_k2 g_qlogis +#> Pop.CondInit 94.08322 -1.834163 -4.210797  0.11002</div><div class='input'><span class='va'>d_saemix_parent</span> <span class='op'><-</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'>#>   #>   #> The following SaemixData object was successfully created: @@ -269,15 +445,12 @@ variances of the deviations of the parameters from these mean values.</p>  #>     longitudinal data for use with the SAEM algorithm  #> Dataset ds_saemix   #>     Structured data: value ~ time + name | ds  -#>     X variable for graphs: time () </div><div class='input'><span class='va'>saemix_options</span> <span class='op'><-</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'><-</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> +#>     X variable for graphs: time () </div><div class='input'><span class='va'>f_saemix_sfo</span> <span class='op'><-</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'>#> Running main SAEM algorithm -#> [1] "Thu Nov  5 08:26:39 2020" +#> [1] "Thu Nov  5 23:53:31 2020"  #> ..  #>     Minimisation finished -#> [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'>#> Nonlinear mixed-effects model fit by the SAEM algorithm +#> [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'>#> Nonlinear mixed-effects model fit by the SAEM algorithm  #> -----------------------------------  #> ----          Data             ----  #> ----------------------------------- @@ -288,8 +461,8 @@ variances of the deviations of the parameters from these mean values.</p>  #>     X variable for graphs: time ()   #> Dataset characteristics:  #>     number of subjects:     5  -#>     number of observations: 170  -#>     average/min/max nb obs: 34.00  /  30  /  38  +#>     number of observations: 90  +#>     average/min/max nb obs: 18.00  /  16  /  20   #> First 10 lines of data:  #>           ds time   name value mdv cens occ ytype  #> 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>  #>   Model function:  Mixed model generated from mmkin object  Model type:  structural  #> function (psi, id, xidep)   #> { -#>     uid <- unique(id) -#>     res_list <- parallel::mclapply(uid, function(i) { -#>         transparms_optim <- psi[i, ] -#>         names(transparms_optim) <- names(degparms_optim) -#>         odeini_optim <- transparms_optim[odeini_optim_parm_names] -#>         names(odeini_optim) <- gsub("_0$", "", odeini_optim_parm_names) -#>         odeini <- c(odeini_optim, odeini_fixed)[names(mkin_model$diffs)] -#>         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) -#>         xidep_i <- subset(xidep, id == i) -#>         if (analytical) { -#>             out_values <- mkin_model$deg_func(xidep_i, odeini,  -#>                 odeparms) -#>         } -#>         else { -#>             i_time <- xidep_i$time -#>             i_name <- xidep_i$name -#>             out_wide <- mkinpredict(mkin_model, odeparms = odeparms,  -#>                 odeini = odeini, solution_type = object[[1]]$solution_type,  -#>                 outtimes = sort(unique(i_time))) -#>             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) +#>     psi[id, 1] * exp(-exp(psi[id, 2]) * xidep[, "time"])  #> } -#> <bytecode: 0x55555d62aeb8> -#> <environment: 0x55555e35c170> +#> <bytecode: 0x55555998d588> +#> <environment: 0x55555c0f4ae8> +#>   Nb of parameters: 2  +#>       parameter names:  parent_0 log_k_parent  +#>       distribution: +#>      Parameter    Distribution Estimated +#> [1,] parent_0     normal       Estimated +#> [2,] log_k_parent normal       Estimated +#>   Variance-covariance matrix: +#>              parent_0 log_k_parent +#> parent_0            1            0 +#> log_k_parent        0            1 +#>   Error model: constant , initial values: a.1=5.76827561471585  +#>     No covariate in the model. +#>     Initial values +#>              parent_0 log_k_parent +#> Pop.CondInit 86.39406    -3.215063 +#> ----------------------------------- +#> ----    Key algorithm options  ---- +#> ----------------------------------- +#>     Estimation of individual parameters (MAP) +#>     Estimation of standard errors and linearised log-likelihood +#>     Estimation of log-likelihood by importance sampling +#>     Number of iterations:  K1=200, K2=80  +#>     Number of chains:  10  +#>     Seed:  123456  +#>     Number of MCMC iterations for IS:  5000  +#>     Simulations: +#>         nb of simulated datasets used for npde:  1000  +#>         nb of simulated datasets used for VPC:  100  +#>     Input/output +#>         save the results to a file:  FALSE  +#>         save the graphs to files:  FALSE  +#> ---------------------------------------------------- +#> ----                  Results                   ---- +#> ---------------------------------------------------- +#> -----------------  Fixed effects  ------------------ +#> ---------------------------------------------------- +#>   Parameter    Estimate SE   CV(%) +#>   parent_0     85.8     1.85  2.2  +#>   log_k_parent -3.2     0.59 18.3  +#> a a.1           6.2     0.49  7.9  +#> ---------------------------------------------------- +#> -----------  Variance of random effects  ----------- +#> ---------------------------------------------------- +#>              Parameter           Estimate SE   CV(%) +#> parent_0     omega2.parent_0     7.8      10.7 138   +#> log_k_parent omega2.log_k_parent 1.7       1.1  64   +#> ---------------------------------------------------- +#> ------  Correlation matrix of random effects  ------ +#> ---------------------------------------------------- +#>                     omega2.parent_0 omega2.log_k_parent +#> omega2.parent_0     1               0                   +#> omega2.log_k_parent 0               1                   +#> ---------------------------------------------------- +#> ---------------  Statistical criteria  ------------- +#> ---------------------------------------------------- +#> Likelihood computed by linearisation +#>       -2LL= 615.4074  +#>       AIC = 625.4074  +#>       BIC = 623.4546  +#>  +#> Likelihood computed by importance sampling +#>       -2LL= 614.4911  +#>       AIC = 624.4911  +#>       BIC = 622.5382  +#> ----------------------------------------------------</div><div class='input'><span class='va'>f_saemix_fomc</span> <span class='op'><-</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'>#> Running main SAEM algorithm +#> [1] "Thu Nov  5 23:53:33 2020" +#> .. +#>     Minimisation finished +#> [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'>#> Nonlinear mixed-effects model fit by the SAEM algorithm +#> ----------------------------------- +#> ----          Data             ---- +#> ----------------------------------- +#> Object of class SaemixData +#>     longitudinal data for use with the SAEM algorithm +#> Dataset ds_saemix  +#>     Structured data: value ~ time + name | ds  +#>     X variable for graphs: time ()  +#> Dataset characteristics: +#>     number of subjects:     5  +#>     number of observations: 90  +#>     average/min/max nb obs: 18.00  /  16  /  20  +#> First 10 lines of data: +#>           ds time   name value mdv cens occ ytype +#> 1  Dataset 6    0 parent  97.2   0    0   1     1 +#> 2  Dataset 6    0 parent  96.4   0    0   1     1 +#> 3  Dataset 6    3 parent  71.1   0    0   1     1 +#> 4  Dataset 6    3 parent  69.2   0    0   1     1 +#> 5  Dataset 6    6 parent  58.1   0    0   1     1 +#> 6  Dataset 6    6 parent  56.6   0    0   1     1 +#> 7  Dataset 6   10 parent  44.4   0    0   1     1 +#> 8  Dataset 6   10 parent  43.4   0    0   1     1 +#> 9  Dataset 6   20 parent  33.3   0    0   1     1 +#> 10 Dataset 6   20 parent  29.2   0    0   1     1 +#> ----------------------------------- +#> ----          Model            ---- +#> ----------------------------------- +#> Nonlinear mixed-effects model +#>   Model function:  Mixed model generated from mmkin object  Model type:  structural +#> function (psi, id, xidep)  +#> { +#>     psi[id, 1]/(xidep[, "time"]/exp(psi[id, 3]) + 1)^exp(psi[id,  +#>         2]) +#> } +#> <bytecode: 0x55555998dc50> +#> <environment: 0x5555595d7668> +#>   Nb of parameters: 3  +#>       parameter names:  parent_0 log_alpha log_beta  +#>       distribution: +#>      Parameter Distribution Estimated +#> [1,] parent_0  normal       Estimated +#> [2,] log_alpha normal       Estimated +#> [3,] log_beta  normal       Estimated +#>   Variance-covariance matrix: +#>           parent_0 log_alpha log_beta +#> parent_0         1         0        0 +#> log_alpha        0         1        0 +#> log_beta         0         0        1 +#>   Error model: constant , initial values: a.1=1.91976382242696  +#>     No covariate in the model. +#>     Initial values +#>              parent_0  log_alpha log_beta +#> Pop.CondInit 94.43884 -0.2226095 2.048192 +#> ----------------------------------- +#> ----    Key algorithm options  ---- +#> ----------------------------------- +#>     Estimation of individual parameters (MAP) +#>     Estimation of standard errors and linearised log-likelihood +#>     Estimation of log-likelihood by importance sampling +#>     Number of iterations:  K1=200, K2=80  +#>     Number of chains:  10  +#>     Seed:  123456  +#>     Number of MCMC iterations for IS:  5000  +#>     Simulations: +#>         nb of simulated datasets used for npde:  1000  +#>         nb of simulated datasets used for VPC:  100  +#>     Input/output +#>         save the results to a file:  FALSE  +#>         save the graphs to files:  FALSE  +#> ---------------------------------------------------- +#> ----                  Results                   ---- +#> ---------------------------------------------------- +#> -----------------  Fixed effects  ------------------ +#> ---------------------------------------------------- +#>   Parameter Estimate SE   CV(%) +#>   parent_0  94.49    1.18   1.2 +#>   log_alpha -0.21    0.30 142.0 +#>   log_beta   2.06    0.21  10.4 +#> a a.1        2.28    0.19   8.2 +#> ---------------------------------------------------- +#> -----------  Variance of random effects  ----------- +#> ---------------------------------------------------- +#>           Parameter        Estimate SE   CV(%) +#> parent_0  omega2.parent_0  4.66     4.34 93    +#> log_alpha omega2.log_alpha 0.45     0.29 65    +#> log_beta  omega2.log_beta  0.19     0.14 75    +#> ---------------------------------------------------- +#> ------  Correlation matrix of random effects  ------ +#> ---------------------------------------------------- +#>                  omega2.parent_0 omega2.log_alpha omega2.log_beta +#> omega2.parent_0  1               0                0               +#> omega2.log_alpha 0               1                0               +#> omega2.log_beta  0               0                1               +#> ---------------------------------------------------- +#> ---------------  Statistical criteria  ------------- +#> ---------------------------------------------------- +#> Likelihood computed by linearisation +#>       -2LL= 454.0598  +#>       AIC = 468.0598  +#>       BIC = 465.3259  +#>  +#> Likelihood computed by importance sampling +#>       -2LL= 453.7499  +#>       AIC = 467.7499  +#>       BIC = 465.016  +#> ----------------------------------------------------</div><div class='input'><span class='va'>f_saemix_dfop</span> <span class='op'><-</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'>#> Running main SAEM algorithm +#> [1] "Thu Nov  5 23:53:35 2020" +#> .. +#>     Minimisation finished +#> [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'>#> Nonlinear mixed-effects model fit by the SAEM algorithm +#> ----------------------------------- +#> ----          Data             ---- +#> ----------------------------------- +#> Object of class SaemixData +#>     longitudinal data for use with the SAEM algorithm +#> Dataset ds_saemix  +#>     Structured data: value ~ time + name | ds  +#>     X variable for graphs: time ()  +#> Dataset characteristics: +#>     number of subjects:     5  +#>     number of observations: 90  +#>     average/min/max nb obs: 18.00  /  16  /  20  +#> First 10 lines of data: +#>           ds time   name value mdv cens occ ytype +#> 1  Dataset 6    0 parent  97.2   0    0   1     1 +#> 2  Dataset 6    0 parent  96.4   0    0   1     1 +#> 3  Dataset 6    3 parent  71.1   0    0   1     1 +#> 4  Dataset 6    3 parent  69.2   0    0   1     1 +#> 5  Dataset 6    6 parent  58.1   0    0   1     1 +#> 6  Dataset 6    6 parent  56.6   0    0   1     1 +#> 7  Dataset 6   10 parent  44.4   0    0   1     1 +#> 8  Dataset 6   10 parent  43.4   0    0   1     1 +#> 9  Dataset 6   20 parent  33.3   0    0   1     1 +#> 10 Dataset 6   20 parent  29.2   0    0   1     1 +#> ----------------------------------- +#> ----          Model            ---- +#> ----------------------------------- +#> Nonlinear mixed-effects model +#>   Model function:  Mixed model generated from mmkin object  Model type:  structural +#> 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)) +#> } +#> <bytecode: 0x55555998e548> +#> <environment: 0x555558225bf0>  #>   Nb of parameters: 4  -#>       parameter names:  parent_0 log_k_parent log_k_A1 f_parent_ilr_1  +#>       parameter names:  parent_0 log_k1 log_k2 g_qlogis   #>       distribution: -#>      Parameter      Distribution Estimated -#> [1,] parent_0       normal       Estimated -#> [2,] log_k_parent   normal       Estimated -#> [3,] log_k_A1       normal       Estimated -#> [4,] f_parent_ilr_1 normal       Estimated +#>      Parameter Distribution Estimated +#> [1,] parent_0  normal       Estimated +#> [2,] log_k1    normal       Estimated +#> [3,] log_k2    normal       Estimated +#> [4,] g_qlogis  normal       Estimated  #>   Variance-covariance matrix: -#>                parent_0 log_k_parent log_k_A1 f_parent_ilr_1 -#> parent_0              1            0        0              0 -#> log_k_parent          0            1        0              0 -#> log_k_A1              0            0        1              0 -#> f_parent_ilr_1        0            0        0              1 -#>   Error model: constant , initial values: a.1=4.97259024646577  +#>          parent_0 log_k1 log_k2 g_qlogis +#> parent_0        1      0      0        0 +#> log_k1          0      1      0        0 +#> log_k2          0      0      1        0 +#> g_qlogis        0      0      0        1 +#>   Error model: constant , initial values: a.1=1.94671278396371   #>     No covariate in the model.  #>     Initial values -#>              parent_0 log_k_parent  log_k_A1 f_parent_ilr_1 -#> Pop.CondInit 86.53449    -3.207005 -3.060308      -1.920449 +#>              parent_0    log_k1    log_k2 g_qlogis +#> Pop.CondInit 94.08322 -1.834163 -4.210797  0.11002  #> -----------------------------------  #> ----    Key algorithm options  ----  #> ----------------------------------- @@ -383,69 +745,195 @@ variances of the deviations of the parameters from these mean values.</p>  #> ----------------------------------------------------  #> -----------------  Fixed effects  ------------------  #> ---------------------------------------------------- -#>   Parameter      Estimate SE   CV(%) -#>   parent_0       86.09    1.57  1.8  -#>   log_k_parent   -3.21    0.59 18.5  -#>   log_k_A1       -4.69    0.31  6.6  -#>   f_parent_ilr_1 -0.34    0.30 89.2  -#> a a.1             4.69    0.27  5.8  +#>   Parameter Estimate SE   CV(%) +#>   parent_0  93.97    1.35   1.4 +#>   log_k1    -2.37    0.58  24.5 +#>   log_k2    -3.63    0.87  24.0 +#>   g_qlogis  -0.14    0.34 246.1 +#> a a.1        2.32    0.19   8.3  #> ----------------------------------------------------  #> -----------  Variance of random effects  -----------  #> ---------------------------------------------------- -#>                Parameter             Estimate SE   CV(%) -#> parent_0       omega2.parent_0       7.07     7.72 109   -#> log_k_parent   omega2.log_k_parent   1.75     1.11  63   -#> log_k_A1       omega2.log_k_A1       0.28     0.28  99   -#> f_parent_ilr_1 omega2.f_parent_ilr_1 0.39     0.27  71   +#>          Parameter       Estimate SE   CV(%) +#> parent_0 omega2.parent_0 6.97     5.72  82   +#> log_k1   omega2.log_k1   1.63     1.06  65   +#> log_k2   omega2.log_k2   3.73     2.39  64   +#> g_qlogis omega2.g_qlogis 0.16     0.27 173    #> ----------------------------------------------------  #> ------  Correlation matrix of random effects  ------  #> ---------------------------------------------------- -#>                       omega2.parent_0 omega2.log_k_parent omega2.log_k_A1 -#> omega2.parent_0       1               0                   0               -#> omega2.log_k_parent   0               1                   0               -#> omega2.log_k_A1       0               0                   1               -#> omega2.f_parent_ilr_1 0               0                   0               -#>                       omega2.f_parent_ilr_1 -#> omega2.parent_0       0                     -#> omega2.log_k_parent   0                     -#> omega2.log_k_A1       0                     -#> omega2.f_parent_ilr_1 1                     +#>                 omega2.parent_0 omega2.log_k1 omega2.log_k2 omega2.g_qlogis +#> omega2.parent_0 1               0             0             0               +#> omega2.log_k1   0               1             0             0               +#> omega2.log_k2   0               0             1             0               +#> omega2.g_qlogis 0               0             0             1                #> ----------------------------------------------------  #> ---------------  Statistical criteria  -------------  #> ----------------------------------------------------  #> Likelihood computed by linearisation -#>       -2LL= 1064.35  -#>       AIC = 1082.35  -#>       BIC = 1078.835  +#>       -2LL= 485.4627  +#>       AIC = 503.4627  +#>       BIC = 499.9477   #>   #> Likelihood computed by importance sampling -#>       -2LL= 1063.475  -#>       AIC = 1081.475  -#>       BIC = 1077.96  -#> ----------------------------------------------------</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'>#> 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'><-</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'><-</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'><-</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'><-</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'><-</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'><-</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'><-</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'><-</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> +#>       -2LL= 473.563  +#>       AIC = 491.563  +#>       BIC = 488.048  +#> ----------------------------------------------------</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'>#> Likelihoods computed by importance sampling </div><div class='output co'>#>        AIC      BIC +#> 1 624.4911 622.5382 +#> 2 467.7499 465.0160 +#> 3 491.5630 488.0480</div><div class='input'><span class='va'>f_mmkin_parent_tc</span> <span class='op'><-</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'><-</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'>#>  +#>  +#> The following SaemixModel object was successfully created: +#>  +#> Nonlinear mixed-effects model +#>   Model function:  Mixed model generated from mmkin object  Model type:  structural +#> function (psi, id, xidep)  +#> { +#>     psi[id, 1]/(xidep[, "time"]/exp(psi[id, 3]) + 1)^exp(psi[id,  +#>         2]) +#> } +#> <bytecode: 0x55555998dc50> +#> <environment: 0x555559a957f8> +#>   Nb of parameters: 3  +#>       parameter names:  parent_0 log_alpha log_beta  +#>       distribution: +#>      Parameter Distribution Estimated +#> [1,] parent_0  normal       Estimated +#> [2,] log_alpha normal       Estimated +#> [3,] log_beta  normal       Estimated +#>   Variance-covariance matrix: +#>           parent_0 log_alpha log_beta +#> parent_0         1         0        0 +#> log_alpha        0         1        0 +#> log_beta         0         0        1 +#>   Error model: combined , initial values: a.1=1.10728182011691 b.1=0.024889924291374  +#>     No covariate in the model. +#>     Initial values +#>              parent_0  log_alpha log_beta +#> Pop.CondInit 93.13042 -0.1215336 2.230815</div><div class='input'><span class='va'>f_saemix_fomc_tc</span> <span class='op'><-</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'>#> Running main SAEM algorithm +#> [1] "Thu Nov  5 23:53:38 2020" +#> .. +#>     Minimisation finished +#> [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'>#> Nonlinear mixed-effects model fit by the SAEM algorithm +#> ----------------------------------- +#> ----          Data             ---- +#> ----------------------------------- +#> Object of class SaemixData +#>     longitudinal data for use with the SAEM algorithm +#> Dataset ds_saemix  +#>     Structured data: value ~ time + name | ds  +#>     X variable for graphs: time ()  +#> Dataset characteristics: +#>     number of subjects:     5  +#>     number of observations: 90  +#>     average/min/max nb obs: 18.00  /  16  /  20  +#> First 10 lines of data: +#>           ds time   name value mdv cens occ ytype +#> 1  Dataset 6    0 parent  97.2   0    0   1     1 +#> 2  Dataset 6    0 parent  96.4   0    0   1     1 +#> 3  Dataset 6    3 parent  71.1   0    0   1     1 +#> 4  Dataset 6    3 parent  69.2   0    0   1     1 +#> 5  Dataset 6    6 parent  58.1   0    0   1     1 +#> 6  Dataset 6    6 parent  56.6   0    0   1     1 +#> 7  Dataset 6   10 parent  44.4   0    0   1     1 +#> 8  Dataset 6   10 parent  43.4   0    0   1     1 +#> 9  Dataset 6   20 parent  33.3   0    0   1     1 +#> 10 Dataset 6   20 parent  29.2   0    0   1     1 +#> ----------------------------------- +#> ----          Model            ---- +#> ----------------------------------- +#> Nonlinear mixed-effects model +#>   Model function:  Mixed model generated from mmkin object  Model type:  structural +#> function (psi, id, xidep)  +#> { +#>     psi[id, 1]/(xidep[, "time"]/exp(psi[id, 3]) + 1)^exp(psi[id,  +#>         2]) +#> } +#> <bytecode: 0x55555998dc50> +#> <environment: 0x555559a957f8> +#>   Nb of parameters: 3  +#>       parameter names:  parent_0 log_alpha log_beta  +#>       distribution: +#>      Parameter Distribution Estimated +#> [1,] parent_0  normal       Estimated +#> [2,] log_alpha normal       Estimated +#> [3,] log_beta  normal       Estimated +#>   Variance-covariance matrix: +#>           parent_0 log_alpha log_beta +#> parent_0         1         0        0 +#> log_alpha        0         1        0 +#> log_beta         0         0        1 +#>   Error model: combined , initial values: a.1=1.10728182011691 b.1=0.024889924291374  +#>     No covariate in the model. +#>     Initial values +#>              parent_0  log_alpha log_beta +#> Pop.CondInit 93.13042 -0.1215336 2.230815 +#> ----------------------------------- +#> ----    Key algorithm options  ---- +#> ----------------------------------- +#>     Estimation of individual parameters (MAP) +#>     Estimation of standard errors and linearised log-likelihood +#>     Estimation of log-likelihood by importance sampling +#>     Number of iterations:  K1=200, K2=80  +#>     Number of chains:  10  +#>     Seed:  123456  +#>     Number of MCMC iterations for IS:  5000  +#>     Simulations: +#>         nb of simulated datasets used for npde:  1000  +#>         nb of simulated datasets used for VPC:  100  +#>     Input/output +#>         save the results to a file:  FALSE  +#>         save the graphs to files:  FALSE  +#> ---------------------------------------------------- +#> ----                  Results                   ---- +#> ---------------------------------------------------- +#> -----------------  Fixed effects  ------------------ +#> ---------------------------------------------------- +#>   Parameter Estimate SE     CV(%) +#>   parent_0  94.4481  1.2052   1.3 +#>   log_alpha -0.2088  0.3059 146.5 +#>   log_beta   2.0668  0.2182  10.6 +#> a a.1        2.4273  0.3178  13.1 +#> b b.1       -0.0037  0.0062 168.3 +#> ---------------------------------------------------- +#> -----------  Variance of random effects  ----------- +#> ---------------------------------------------------- +#>           Parameter        Estimate SE   CV(%) +#> parent_0  omega2.parent_0  5.34     4.58 86    +#> log_alpha omega2.log_alpha 0.46     0.29 65    +#> log_beta  omega2.log_beta  0.20     0.15 74    +#> ---------------------------------------------------- +#> ------  Correlation matrix of random effects  ------ +#> ---------------------------------------------------- +#>                  omega2.parent_0 omega2.log_alpha omega2.log_beta +#> omega2.parent_0  1               0                0               +#> omega2.log_alpha 0               1                0               +#> omega2.log_beta  0               0                1               +#> ---------------------------------------------------- +#> ---------------  Statistical criteria  ------------- +#> ---------------------------------------------------- +#> Likelihood computed by linearisation +#>       -2LL= 453.7703  +#>       AIC = 469.7703  +#>       BIC = 466.6458  +#>  +#> Likelihood computed by importance sampling +#>       -2LL= 453.6186  +#>       AIC = 469.6186  +#>       BIC = 466.4942  +#> ----------------------------------------------------</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'>#> Likelihoods computed by importance sampling </div><div class='output co'>#>        AIC      BIC +#> 1 467.7499 465.0160 +#> 2 469.6186 466.4942</div><div class='input'> +<span class='va'>dfop_sfo</span> <span class='op'><-</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'>#> <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'><-</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'><-</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'>#>   #>   #> The following SaemixModel object was successfully created: @@ -468,7 +956,7 @@ variances of the deviations of the parameters from these mean values.</p>  #>             transform_fractions = object[[1]]$transform_fractions)  #>         odeparms <- c(odeparms_optim, odeparms_fixed)  #>         xidep_i <- subset(xidep, id == i) -#>         if (analytical) { +#>         if (solution_type == "analytical") {  #>             out_values <- mkin_model$deg_func(xidep_i, odeini,   #>                 odeparms)  #>         } @@ -476,7 +964,7 @@ variances of the deviations of the parameters from these mean values.</p>  #>             i_time <- xidep_i$time  #>             i_name <- xidep_i$name  #>             out_wide <- mkinpredict(mkin_model, odeparms = odeparms,  -#>                 odeini = odeini, solution_type = object[[1]]$solution_type,  +#>                 odeini = odeini, solution_type = solution_type,   #>                 outtimes = sort(unique(i_time)))  #>             out_index <- cbind(as.character(i_time), as.character(i_name))  #>             out_values <- out_wide[out_index] @@ -486,23 +974,31 @@ variances of the deviations of the parameters from these mean values.</p>  #>     res <- unlist(res_list)  #>     return(res)  #> } -#> <bytecode: 0x55555d62aeb8> -#> <environment: 0x55555cd8e028> -#>   Nb of parameters: 2  -#>       parameter names:  parent_0 log_k_parent  +#> <bytecode: 0x55555998cba0> +#> <environment: 0x55555bd1fee8> +#>   Nb of parameters: 6  +#>       parameter names:  parent_0 log_k_A1 f_parent_qlogis log_k1 log_k2 g_qlogis   #>       distribution: -#>      Parameter    Distribution Estimated -#> [1,] parent_0     normal       Estimated -#> [2,] log_k_parent normal       Estimated +#>      Parameter       Distribution Estimated +#> [1,] parent_0        normal       Estimated +#> [2,] log_k_A1        normal       Estimated +#> [3,] f_parent_qlogis normal       Estimated +#> [4,] log_k1          normal       Estimated +#> [5,] log_k2          normal       Estimated +#> [6,] g_qlogis        normal       Estimated  #>   Variance-covariance matrix: -#>              parent_0 log_k_parent -#> parent_0            1            0 -#> log_k_parent        0            1 -#>   Error model: combined , initial values: a.1=1.05209877924905 b.1=0.0586479225303944  +#>                 parent_0 log_k_A1 f_parent_qlogis log_k1 log_k2 g_qlogis +#> parent_0               1        0               0      0      0        0 +#> log_k_A1               0        1               0      0      0        0 +#> f_parent_qlogis        0        0               1      0      0        0 +#> log_k1                 0        0               0      1      0        0 +#> log_k2                 0        0               0      0      1        0 +#> g_qlogis               0        0               0      0      0        1 +#>   Error model: constant , initial values: a.1=1.64723790168612   #>     No covariate in the model.  #>     Initial values -#>              parent_0 log_k_parent -#> Pop.CondInit  100.315    -4.962075</div><div class='input'><span class='va'>d_saemix_tc</span> <span class='op'><-</span> <span class='fu'>saemix_data</span><span class='op'>(</span><span class='va'>f_mmkin_syn</span><span class='op'>)</span> +#>              parent_0  log_k_A1 f_parent_qlogis    log_k1    log_k2  g_qlogis +#> 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'><-</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'>#>   #>   #> The following SaemixData object was successfully created: @@ -511,12 +1007,12 @@ variances of the deviations of the parameters from these mean values.</p>  #>     longitudinal data for use with the SAEM algorithm  #> Dataset ds_saemix   #>     Structured data: value ~ time + name | ds  -#>     X variable for graphs: time () </div><div class='input'><span class='va'>f_saemix_tc</span> <span class='op'><-</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> +#>     X variable for graphs: time () </div><div class='input'><span class='va'>f_saemix</span> <span class='op'><-</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'>#> Running main SAEM algorithm -#> [1] "Thu Nov  5 08:28:50 2020" +#> [1] "Thu Nov  5 23:53:43 2020"  #> ..  #>     Minimisation finished -#> [1] "Thu Nov  5 08:29:41 2020"</div><div class='output co'>#> Nonlinear mixed-effects model fit by the SAEM algorithm +#> [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'>#> Nonlinear mixed-effects model fit by the SAEM algorithm  #> -----------------------------------  #> ----          Data             ----  #> ----------------------------------- @@ -527,20 +1023,20 @@ variances of the deviations of the parameters from these mean values.</p>  #>     X variable for graphs: time ()   #> Dataset characteristics:  #>     number of subjects:     5  -#>     number of observations: 90  -#>     average/min/max nb obs: 18.00  /  18  /  18  +#>     number of observations: 170  +#>     average/min/max nb obs: 34.00  /  30  /  38   #> First 10 lines of data: -#>    ds time   name value mdv cens occ ytype -#> 1   1    0 parent 105.9   0    0   1     1 -#> 2   1    0 parent  98.0   0    0   1     1 -#> 3   1    1 parent  96.6   0    0   1     1 -#> 4   1    1 parent  99.8   0    0   1     1 -#> 5   1    3 parent 113.0   0    0   1     1 -#> 6   1    3 parent 103.2   0    0   1     1 -#> 7   1    7 parent 102.9   0    0   1     1 -#> 8   1    7 parent 110.8   0    0   1     1 -#> 9   1   14 parent  95.9   0    0   1     1 -#> 10  1   14 parent  85.9   0    0   1     1 +#>           ds time   name value mdv cens occ ytype +#> 1  Dataset 6    0 parent  97.2   0    0   1     1 +#> 2  Dataset 6    0 parent  96.4   0    0   1     1 +#> 3  Dataset 6    3 parent  71.1   0    0   1     1 +#> 4  Dataset 6    3 parent  69.2   0    0   1     1 +#> 5  Dataset 6    6 parent  58.1   0    0   1     1 +#> 6  Dataset 6    6 parent  56.6   0    0   1     1 +#> 7  Dataset 6   10 parent  44.4   0    0   1     1 +#> 8  Dataset 6   10 parent  43.4   0    0   1     1 +#> 9  Dataset 6   20 parent  33.3   0    0   1     1 +#> 10 Dataset 6   20 parent  29.2   0    0   1     1  #> -----------------------------------  #> ----          Model            ----  #> ----------------------------------- @@ -562,7 +1058,7 @@ variances of the deviations of the parameters from these mean values.</p>  #>             transform_fractions = object[[1]]$transform_fractions)  #>         odeparms <- c(odeparms_optim, odeparms_fixed)  #>         xidep_i <- subset(xidep, id == i) -#>         if (analytical) { +#>         if (solution_type == "analytical") {  #>             out_values <- mkin_model$deg_func(xidep_i, odeini,   #>                 odeparms)  #>         } @@ -570,7 +1066,7 @@ variances of the deviations of the parameters from these mean values.</p>  #>             i_time <- xidep_i$time  #>             i_name <- xidep_i$name  #>             out_wide <- mkinpredict(mkin_model, odeparms = odeparms,  -#>                 odeini = odeini, solution_type = object[[1]]$solution_type,  +#>                 odeini = odeini, solution_type = solution_type,   #>                 outtimes = sort(unique(i_time)))  #>             out_index <- cbind(as.character(i_time), as.character(i_name))  #>             out_values <- out_wide[out_index] @@ -580,23 +1076,31 @@ variances of the deviations of the parameters from these mean values.</p>  #>     res <- unlist(res_list)  #>     return(res)  #> } -#> <bytecode: 0x55555d62aeb8> -#> <environment: 0x55555cd8e028> -#>   Nb of parameters: 2  -#>       parameter names:  parent_0 log_k_parent  +#> <bytecode: 0x55555998cba0> +#> <environment: 0x55555bd1fee8> +#>   Nb of parameters: 6  +#>       parameter names:  parent_0 log_k_A1 f_parent_qlogis log_k1 log_k2 g_qlogis   #>       distribution: -#>      Parameter    Distribution Estimated -#> [1,] parent_0     normal       Estimated -#> [2,] log_k_parent normal       Estimated +#>      Parameter       Distribution Estimated +#> [1,] parent_0        normal       Estimated +#> [2,] log_k_A1        normal       Estimated +#> [3,] f_parent_qlogis normal       Estimated +#> [4,] log_k1          normal       Estimated +#> [5,] log_k2          normal       Estimated +#> [6,] g_qlogis        normal       Estimated  #>   Variance-covariance matrix: -#>              parent_0 log_k_parent -#> parent_0            1            0 -#> log_k_parent        0            1 -#>   Error model: combined , initial values: a.1=1.05209877924905 b.1=0.0586479225303944  +#>                 parent_0 log_k_A1 f_parent_qlogis log_k1 log_k2 g_qlogis +#> parent_0               1        0               0      0      0        0 +#> log_k_A1               0        1               0      0      0        0 +#> f_parent_qlogis        0        0               1      0      0        0 +#> log_k1                 0        0               0      1      0        0 +#> log_k2                 0        0               0      0      1        0 +#> g_qlogis               0        0               0      0      0        1 +#>   Error model: constant , initial values: a.1=1.64723790168612   #>     No covariate in the model.  #>     Initial values -#>              parent_0 log_k_parent -#> Pop.CondInit  100.315    -4.962075 +#>              parent_0  log_k_A1 f_parent_qlogis    log_k1    log_k2  g_qlogis +#> Pop.CondInit 93.81015 -9.764746      -0.9711148 -1.879937 -4.270814 0.1356441  #> -----------------------------------  #> ----    Key algorithm options  ----  #> ----------------------------------- @@ -618,37 +1122,55 @@ variances of the deviations of the parameters from these mean values.</p>  #> ----------------------------------------------------  #> -----------------  Fixed effects  ------------------  #> ---------------------------------------------------- -#>   Parameter    Estimate SE    CV(%)  -#>   parent_0     100.232  1.266    1.3 -#>   log_k_parent  -4.961  0.089    1.8 -#> a a.1           -0.106  1.211 1142.0 -#> b b.1            0.071  0.017   24.2 +#>   Parameter       Estimate SE   CV(%) +#>   parent_0        93.78    1.35   1.4 +#>   log_k_A1        -6.05    1.12  18.5 +#>   f_parent_qlogis -0.97    0.20  21.1 +#>   log_k1          -2.46    0.51  20.7 +#>   log_k2          -3.63    0.95  26.3 +#>   g_qlogis        -0.08    0.36 447.7 +#> a a.1              1.88    0.11   5.9  #> ----------------------------------------------------  #> -----------  Variance of random effects  -----------  #> ---------------------------------------------------- -#>              Parameter           Estimate SE    CV(%) -#> parent_0     omega2.parent_0     3.334    5.024 151   -#> log_k_parent omega2.log_k_parent 0.036    0.024  68   +#>                 Parameter              Estimate SE   CV(%) +#> parent_0        omega2.parent_0        7.85     5.76  73   +#> log_k_A1        omega2.log_k_A1        4.27     3.44  80   +#> f_parent_qlogis omega2.f_parent_qlogis 0.20     0.13  65   +#> log_k1          omega2.log_k1          1.08     0.77  72   +#> log_k2          omega2.log_k2          4.24     2.83  67   +#> g_qlogis        omega2.g_qlogis        0.21     0.26 123    #> ----------------------------------------------------  #> ------  Correlation matrix of random effects  ------  #> ---------------------------------------------------- -#>                     omega2.parent_0 omega2.log_k_parent -#> omega2.parent_0     1               0                   -#> omega2.log_k_parent 0               1                   +#>                        omega2.parent_0 omega2.log_k_A1 omega2.f_parent_qlogis +#> omega2.parent_0        1               0               0                      +#> omega2.log_k_A1        0               1               0                      +#> omega2.f_parent_qlogis 0               0               1                      +#> omega2.log_k1          0               0               0                      +#> omega2.log_k2          0               0               0                      +#> omega2.g_qlogis        0               0               0                      +#>                        omega2.log_k1 omega2.log_k2 omega2.g_qlogis +#> omega2.parent_0        0             0             0               +#> omega2.log_k_A1        0             0             0               +#> omega2.f_parent_qlogis 0             0             0               +#> omega2.log_k1          1             0             0               +#> omega2.log_k2          0             1             0               +#> omega2.g_qlogis        0             0             1                #> ----------------------------------------------------  #> ---------------  Statistical criteria  -------------  #> ----------------------------------------------------  #> Likelihood computed by linearisation -#>       -2LL= 575.5586  -#>       AIC = 587.5586  -#>       BIC = 585.2153  +#>       -2LL= 879.7721  +#>       AIC = 905.7721  +#>       BIC = 900.6948   #>   #> Likelihood computed by importance sampling -#>       -2LL= 575.7797  -#>       AIC = 587.7797  -#>       BIC = 585.4364  -#> ----------------------------------------------------</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'>#> 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> +#>       -2LL= 816.8276  +#>       AIC = 842.8276  +#>       BIC = 837.7503  +#> ----------------------------------------------------</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'><-</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'>#> <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'><-</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'>#> <span class='warning'>Warning: Observations with value of zero were removed from the data</span></div><div class='output co'>#> <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'><-</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'><-</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'>#> <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'><-</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'>#> <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'><-</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'>#>                Estimate Std. Error   Lower   Upper -#> parent_0         99.598     1.5702 96.4038 102.793 -#> log_k_parent     -2.316     0.0409 -2.3988  -2.233 -#> log_k_m1         -5.248     0.1332 -5.5184  -4.977 -#> f_parent_ilr_1    0.041     0.0631 -0.0875   0.169 -#> 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'>#>                Estimate se_notrans t value   Pr(>t)    Lower    Upper -#> 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'>#>                 Estimate Std. Error  Lower  Upper +#> parent_0         99.5985     1.5702 96.404 102.79 +#> log_k_parent     -2.3157     0.0409 -2.399  -2.23 +#> log_k_m1         -5.2475     0.1332 -5.518  -4.98 +#> f_parent_qlogis   0.0579     0.0893 -0.124   0.24 +#> 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'>#>                Estimate se_notrans t value   Pr(>t)    Lower    Upper +#> parent_0       99.59848    1.57022   63.43 2.30e-36 96.40383 102.7931  #> k_parent        0.09870    0.00403   24.47 4.96e-23  0.09082   0.1073  #> k_m1            0.00526    0.00070    7.51 6.16e-09  0.00401   0.0069  #> f_parent_to_m1  0.51448    0.02230   23.07 3.10e-22  0.46912   0.5596  #> 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'><-</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'>#> <span class='warning'>Warning: Observations with value of zero were removed from the data</span></div><div class='output co'>#> <span class='error'>Error in if (cost < 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'>#> <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'><-</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'>#> <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'>#> <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'>#> <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'><-</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'><-</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'><-</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'><-</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'>#>       parent_0   log_k_parent       log_k_m1 f_parent_ilr_1  -#>     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'>#>       parent_0       k_parent           k_m1 f_parent_to_m1  +<span class='va'>fit.2</span> <span class='op'><-</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'>#> <span class='warning'>Warning: Observations with value of zero were removed from the data</span></div><div class='output co'>#> <span class='error'>Error in if (cost < 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'>#> <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'><-</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'>#> <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'>#> <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'>#> <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'><-</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'><-</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'><-</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'><-</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'>#>        parent_0    log_k_parent        log_k_m1 f_parent_qlogis  +#>      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'>#>       parent_0       k_parent           k_m1 f_parent_to_m1   #>       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'><-</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'>#> <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'><-</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'>#> <span class='warning'>Warning: Observations with value of zero were removed from the data</span></div><div class='output co'>#> <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'><-</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'>#>                Estimate Std. Error   Lower   Upper -#> parent_0         99.598     1.5702 96.4038 102.793 -#> log_k_parent     -2.316     0.0409 -2.3988  -2.233 -#> log_k_m1         -5.248     0.1332 -5.5184  -4.977 -#> f_parent_ilr_1    0.041     0.0631 -0.0875   0.169 -#> 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'>#>                Estimate se_notrans t value   Pr(>t)    Lower    Upper -#> 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'><-</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'>#> <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'><-</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'>#> <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'><-</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'>#>                 Estimate Std. Error  Lower  Upper +#> parent_0         99.5985     1.5702 96.404 102.79 +#> log_k_parent     -2.3157     0.0409 -2.399  -2.23 +#> log_k_m1         -5.2475     0.1332 -5.518  -4.98 +#> f_parent_qlogis   0.0579     0.0893 -0.124   0.24 +#> 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'>#>                Estimate se_notrans t value   Pr(>t)    Lower    Upper +#> parent_0       99.59848    1.57022   63.43 2.30e-36 96.40383 102.7931  #> k_parent        0.09870    0.00403   24.47 4.96e-23  0.09082   0.1073  #> k_m1            0.00526    0.00070    7.51 6.16e-09  0.00401   0.0069  #> f_parent_to_m1  0.51448    0.02230   23.07 3.10e-22  0.46912   0.5596 -#> 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'><-</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'><-</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'>#> f_parent_to_m1  +#> 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'><-</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'><-</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'>#> f_parent_to_m1   #>            0.5 </div><div class='input'>  <span class='co'># And without sink</span> -<span class='no'>SFO_SFO.ff.2</span> <span class='kw'><-</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'>#> <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'><-</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'>#> <span class='warning'>Warning: Observations with value of zero were removed from the data</span></div><div class='output co'>#> <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'><-</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'>#>              Estimate Std. Error Lower Upper +<span class='va'>SFO_SFO.ff.2</span> <span class='op'><-</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'>#> <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'><-</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'>#> <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'><-</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'>#>              Estimate Std. Error Lower Upper  #> parent_0        84.79      3.012 78.67 90.91  #> log_k_parent    -2.76      0.082 -2.92 -2.59  #> log_k_m1        -4.21      0.123 -4.46 -3.96 -#> 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'>#>          Estimate se_notrans t value   Pr(>t)   Lower  Upper +#> 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'>#>          Estimate se_notrans t value   Pr(>t)   Lower  Upper  #> parent_0  84.7916    3.01203   28.15 1.92e-25 78.6704 90.913  #> k_parent   0.0635    0.00521   12.19 2.91e-14  0.0538  0.075  #> k_m1       0.0148    0.00182    8.13 8.81e-10  0.0115  0.019 -#> sigma      8.2229    0.94323    8.72 1.73e-10  6.3060 10.140</div><div class='input'># } +#> 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{ @@ -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"),
 | 
