Deriving an asymmetric logistic growth model

  • B
  • Thread starter liquidFuzz
  • Start date
  • Tags
    Asymmetry
  • #1
liquidFuzz
104
6
Hi, I'm wondering how the asymmetric logistic growth model is derived. My main interest is this version that I've implemented in python.

$$ growth(t) = d + \frac{a - d}{(1 + (x/c)^b)^g} $$

In particular, how is the asymmetry variable introduced?

Best,

Fuzz
 
Physics news on Phys.org
  • #2
The formula looks wrong. I think it should have ##t## where it says ##x##, and it should have ##-b## where it says ##b##.
See here for the correct formula for the Richards curve (aka "generalised logistic curve"). It gives multiple versions. The above corresponds to the first version shown, with ##Q## and ##C## equal to 1. The other variable mappings are:
  • ##K\to a##. This is the asymptotic upper limit of the measure whose growth we are modelling.
  • ##A\to d##. This is the asymptotic lower limit of that measure
  • ##B\to 1/c##, remembering to put the missing minus sign in the above formula
  • ##\nu\to 1/g##. This determines the asymmetry, by setting the ordinate for the point of inflection, where maximum growth rate occurs.
To estimate the parameters, including ##\nu##, you need to perform a curve fitting procedure based on your observed data. I expect you can find suitable tools somewhere like scipy.optimize. Parameter estimation for the Richards curve is notoriously difficult, being very sensitive to the starting guesses you give it for the unknown parameters. The more unknowns it has to estimate, the more cranky it will be. It may be best to treat only B and ##\nu## as unknowns, and fix K and A as constants equal to your best guesses.

If the parameter optimisation either fails or produces implausible estimates, try different starting values and/or different constant values for K and A. You could define a grid of plausible starting values and program python to perform an optimisation at every point in the grid and select the optimisation that gives the best fit.
 
  • #3
Hi thanks for chipping in!

I have a fully functional implementation of the model i wrote, its commonly known as the 5PL model. I was curious to know more about its origin.
 
  • #4
Let ##y(t)## be a quantity that grows from a lower bound ##d## to an upper bound ##a##. Set ##z(t) = y(t) - d## so that ##z## increases from ##0## to ##M = a - d##. Suppose we introduce a parameter ##g≠1## and impose the following governing principle: at each time ##t##, the ratio of ##dz/dt## to the remaining "distance to the top" ##M - z(t)## is proportional to ##(z(t))^g##. In particular:

$$ \frac{dz}{dt} = k \,(z(t))^g\,(M - z(t)) $$

where ##k## is a positive constant. This single ordinary differential equation already encodes the asymmetry via the exponent ##g##. To solve it, we separate variables:

$$ \int \frac{dz}{z^g(M - z)} = k\,t + C $$

Let ##w = z/(M - z)##, so ##z = wM/(1 + w)## and ##dz = M/(1 + w)^2\,dw##. We substitute into the integral:

$$ \int \frac{M/(1+w)^2\,dw}{(wM/(1+w))^g\,M/(1+w)} = \int \frac{1}{M^g}\,(1+w)^{g-1}\,w^{-g}\,dw $$

We set ##u = w/(1 + w)## so ##w = u/(1 - u)## and ##dw = 1/(1 - u)^2\,du##. Also ##1 + w = 1/(1 - u)##. This transforms the integral into:

$$ \frac{1}{M^g} \int u^{-g}\,(1 - u)^{-1}\,du $$

an expression that can be handled in terms of hypergeometric functions or related special functions. Imposing an initial condition such as ##z(0)=0## (which forces ##w(0)=0## and ##u(0)=0##) determines the constant ##C## and solves explicitly for ##u## in terms of ##t##. Reversing the substitutions, ##w(t) = u(t)/(1 - u(t))## and ##z(t)=w(t)M/(1 + w(t))##, then ##y(t)=d+z(t)##.

We find that for suitable parameter choices, the final closed-form solution takes the shape:

$$ d + \frac{M}{(1 + (\alpha\,t)^b)^g} $$

which is precisely:

$$ d + \frac{a - d}{(1 + (x/c)^b)^g} $$

after renaming constants. The exponent ##g## appears naturally from the factor ##(z(t))^g## in the differential equation and breaks the usual symmetry of the logistic curve, giving an asymmetric S-shape that approaches ##d## and ##a## at different rates.
 

Similar threads

Replies
1
Views
3K
Replies
4
Views
4K
Replies
1
Views
5K
Replies
7
Views
5K
Replies
48
Views
4K
Replies
2
Views
2K
Replies
1
Views
1K
Back
Top