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.png Binary files differindex 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.png Binary files differindex 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.png Binary files differindex 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.png Binary files differindex 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.png Binary files differindex 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.png Binary files differindex 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.png Binary files differindex 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.png Binary files differnew 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.png Binary files differnew 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.png Binary files differnew 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.png Binary files differnew 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.png Binary files differnew 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.png Binary files differnew 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.png Binary files differnew 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.png Binary files differnew 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.png Binary files differnew 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.png Binary files differindex 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.png Binary files differindex 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.png Binary files differindex 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.png Binary files differindex 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.png Binary files differindex 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.png Binary files differindex 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.png Binary files differnew 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.png Binary files differnew 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.png Binary files differnew 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.png Binary files differnew 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.png Binary files differindex 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.png Binary files differindex 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.png Binary files differindex 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.png Binary files differnew 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.png Binary files differnew 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.png Binary files differnew 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.png Binary files differnew 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.png Binary files differnew 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"),
|