Skip to contents

Functional form for the Richards growth model.

response(time) =
  K0 + (K - K0)/(
    1 + nu * exp(
      1 + nu + rate/(K - K0) * (1 + nu)^(1 + 1/nu) *
      (lambda - time))) ^ (1/nu)

The parameterization follows (Zwietering, 1990) and grofit:

K      = **carrying capacity**, `K = response(time = Inf)`. The
         \pkg{grofit} package calls this parameter `A`. `K` has the same
         units as the `response`.
K0     = **initial population size** `K0 = response(time = 0)`. The
         \pkg{grofit} package assumes `K0=0`. `K0` has the same units as
         the `response`.
rate   = **maximum growth rate** `rate = max[d(response)/d(time)]`. The
         \pkg{grofit} package calls this `mu`. `rate` has the units of
         `response/time`
lambda = **duration of the lag-phase** the time point at which the
         tangent through the growth curve when it achieves the maximum
         growth rate crosses the initial population size `K0`. (see
         Figure 2 in (Kahm et al., 2010)).
nu     = **growth asymmetry** before and after the inflection

Usage

growth_richards(K, K0, rate, lambda, nu, time)

Arguments

K

numeric the carrying capacity

K0

numeric the baseline response

rate

numeric the maximum growth rate

lambda

numeric duration of the lag-phase

nu

numeric growth asymmetry before and after the inflection point

time

numeric time point at which to evaluate the response

Value

numeric response given the time and parameters

References

Zwietering M. H., Jongenburger I., Rombouts F. M., van 't Riet K., (1990) Modeling of the Bacterial Growth Curve. Appl. Environ. Microbiol., 56(6), 1875-1881 https://doi.org/10.1128/aem.56.6.1875-1881.1990

Kahm, M., Hasenbrink, G., Lichtenberg-Fraté, H., Ludwig, J., & Kschischo, M. (2010). grofit: Fitting Biological Growth Curves with R. J. Stat. Softw., 33(7), 1–21. https://doi.org/10.18637/jss.v033.i07

Examples

if (FALSE) { # \dontrun{
 # Generate Richards growth curve
 data <- data.frame(
   time = seq(0, 2, length.out = 101)) |>
     dplyr::mutate(
       response = stats::rnorm(
         n = length(time),
         mean = BayesPharma::growth_richards(
           K = 1,
           K0 = 0,
           rate = 2,
           lambda = 0.5,
           nu = 2,
           time = time),
       sd = .2))
} # }