#' Logistic kinetics #' #' Function describing exponential decline from a defined starting value, with #' an increasing rate constant, supposedly caused by microbial growth #' #' @param t Time. #' @param parent.0 Starting value for the response variable at time zero. #' @param kmax Maximum rate constant. #' @param k0 Minumum rate constant effective at time zero. #' @param r Growth rate of the increase in the rate constant. #' @return The value of the response variable at time \code{t}. #' @note The solution of the logistic model reduces to the #' \code{\link{SFO.solution}} if \code{k0} is equal to \code{kmax}. #' @references FOCUS (2014) \dQuote{Generic guidance for Estimating Persistence #' and Degradation Kinetics from Environmental Fate Studies on Pesticides in #' EU Registration} Report of the FOCUS Work Group on Degradation Kinetics, #' Version 1.1, 18 December 2014 #' \url{http://esdac.jrc.ec.europa.eu/projects/degradation-kinetics} #' @examples #' #' # Reproduce the plot on page 57 of FOCUS (2014) #' plot(function(x) logistic.solution(x, 100, 0.08, 0.0001, 0.2), #' from = 0, to = 100, ylim = c(0, 100), #' xlab = "Time", ylab = "Residue") #' plot(function(x) logistic.solution(x, 100, 0.08, 0.0001, 0.4), #' from = 0, to = 100, add = TRUE, lty = 2, col = 2) #' plot(function(x) logistic.solution(x, 100, 0.08, 0.0001, 0.8), #' from = 0, to = 100, add = TRUE, lty = 3, col = 3) #' plot(function(x) logistic.solution(x, 100, 0.08, 0.001, 0.2), #' from = 0, to = 100, add = TRUE, lty = 4, col = 4) #' plot(function(x) logistic.solution(x, 100, 0.08, 0.08, 0.2), #' from = 0, to = 100, add = TRUE, lty = 5, col = 5) #' legend("topright", inset = 0.05, #' legend = paste0("k0 = ", c(0.0001, 0.0001, 0.0001, 0.001, 0.08), #' ", r = ", c(0.2, 0.4, 0.8, 0.2, 0.2)), #' lty = 1:5, col = 1:5) #' #' # Fit with synthetic data #' logistic <- mkinmod(parent = mkinsub("logistic")) #' #' sampling_times = c(0, 1, 3, 7, 14, 28, 60, 90, 120) #' parms_logistic <- c(kmax = 0.08, k0 = 0.0001, r = 0.2) #' d_logistic <- mkinpredict(logistic, #' parms_logistic, c(parent = 100), #' sampling_times) #' d_2_1 <- add_err(d_logistic, #' sdfunc = function(x) sigma_twocomp(x, 0.5, 0.07), #' n = 1, reps = 2, digits = 5, LOD = 0.1, seed = 123456)[[1]] #' #' m <- mkinfit("logistic", d_2_1, quiet = TRUE) #' plot_sep(m) #' summary(m)$bpar #' endpoints(m)$distimes #' #' @export logistic.solution <- function(t, parent.0, kmax, k0, r) { parent = parent.0 * (kmax / (kmax - k0 + k0 * exp (r * t))) ^(kmax/r) }