blob: 257879623786ecf4a8f2c93c8c0fd12277d6fb1f (
plain) (
tree)
|
|
#' Transform formation fractions as in the first published mkin version
#'
#' The transformed fractions can be restricted between 0 and 1 in model
#' optimisations. Therefore this transformation was used originally in mkin. It
#' was later replaced by the [ilr] transformation because the ilr transformed
#' fractions can assumed to follow normal distribution. As the ilr
#' transformation is not available in [RxODE] and can therefore not be used in
#' the nlmixr modelling language, this transformation is currently used for
#' translating mkin models with formation fractions to more than one target
#' compartment for fitting with nlmixr in [nlmixr_model]. However,
#' this implementation cannot be used there, as it is not accessible
#' from RxODE.
#'
#' @param ff Vector of untransformed formation fractions. The sum
#' must be smaller or equal to one
#' @param ff_trans
#' @return A vector of the transformed formation fractions
#' @export
#' @examples
#' ff_example <- c(
#' 0.10983681, 0.09035905, 0.08399383
#' )
#' ff_example_trans <- tffm0(ff_example)
#' invtffm0(ff_example_trans)
tffm0 <- function(ff) {
n <- length(ff)
res <- numeric(n)
f_remaining <- 1
for (i in 1:n) {
res[i] <- ff[i]/f_remaining
f_remaining <- f_remaining - ff[i]
}
return(res)
}
#' @rdname tffm0
#' @return
invtffm0 <- function(ff_trans) {
n <- length(ff_trans)
res <- numeric(n)
f_remaining <- 1
for (i in 1:n) {
res[i] <- ff_trans[i] * f_remaining
f_remaining <- f_remaining - res[i]
}
return(res)
}
|