Skip to contents

Functional form for the sigmoid growth model, related to the Richards growth model by setting nu = 1.

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)).

See the vignettes(topic = "derive_growth_model", package = "BayesPharma") for more details.

Usage

growth_sigmoid(K, K0, rate, lambda, time)

Arguments

K

numeric, the carrying capacity

K0

numeric, initial population size

rate

numeric, maximum growth rate

lambda

numeric, duration of the lag-phase

time

numeric, time point at which to evaluate the response

Value

numeric, response given the time and parameters

Details

The Richards growth model is given by

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

Setting nu = 1, and simplifying gives

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

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

response(time) = K0 + (K - K0)/(1 + exp(2 + rate/(K - K0) * 4 * (lambda - time)))

response(time) = K0 + (K - K0)/(1 + exp(4 * rate/(K - K0) * (lambda - time) + 2))

The sigmoid growth curve is related to the sigmoid agoinst model by setting top = K, bottom = K0, hill = 4 * rate / (K - K0) / log10(e), AC50 = lambda + 2 * log10(e) / hill, and log_dose = time, where e is exp(1):

response(time) = bottom + (top - bottom)/(1 + exp(hill/log10(e) * (lambda - time) + 2))

response(time) = bottom + (top - bottom)/(1 + exp(hill/log10(e) * (AC50 - time)))

response(log_dose) = bottom + (top - bottom)/(1 + 10^((ac50 - log_dose) * hill))

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 Sigmoid growth curve
 data <- data.frame(
   time = seq(0, 2, length.out = 101)) |>
     dplyr::mutate(
       response = stats::rnorm(
         n = length(time),
         mean = BayesPharma::growth_sigmoid(
           K = 1,
           K0 = 0,
           rate = 2,
           lambda = 0.5,
           time = time),
       sd = .2))
} # }