Overview
There are two types of exponential growth models depending on whether time is measured in discrete time interval or continuous time unit.
Figure source: Understanding Discrete vs. Continuous Growth, https://betterexplained.com/articles/understanding-discrete-vs-continuous-growth/
Upon proper transformation, these two could be converted into each other.
Discrete growth
\(x(t+1)-x(t)=rx(t) <=> x(t)=(1+r)^t*x(0)\)
Continuous growth
\(dx/dt=kx <=> x(t) = Ce^{kt}\)
Link between the two
From the discrete growth, we have \(\Delta(x)=x(t+1)-x(t)=rx(t)\), or in short \(Delta(x)=rx\), where r is the growth rate.
\(x(t) = x(0)*(1+r)^t =x*e^{ln(1+r)^t} = x(0)*e^{t*ln(1+r)}\)
Now, differentiates both sides with time unit, dt,
\(dx(t)/dt = d(x*e^{t*ln(1+r)})/dt = ln(1+r) e^{t*ln(1+r)}*x(0)\)
As, \(e^{t*ln(1+r)}*x(0)\) is exactly \(x(t)\), we have
\(dx(t)/dt = ln(1+r) x(t)\)
Thus, \(ln(1+r)\) ~ \(k\) as in the first equation in this post, which means that if we take a discrete growth rate of r, it corresponds to a continuous growth rate of \(ln(1+r)\).
Another way of derivation
As in discrete growth model, r is the growth rate in a time interval, for example, growth rate per year.
With r set at per year, r/12 is per month, r/12/4 is per week, r/365 is per day.
In this line, if we divide time into infinite small intervals via r/n where n is pretty big, we approximates the instanenous rate in the continuous growth model.
After dividing time, how does the population growth equation change?
With the same spirit as (1+r)^t*x(0), the time interval becomes smaller and the number of time intervals become big. Divide time interval by n, the previous one time interval now becomes n pieces.
\((1+r/n)^n\)
When {x->Inf}, we have \(\lim_{x->Inf} (1+r/n)^n = e^r\)
Thus, \(x(t) = x(0)*(1+r)^t = x(0)*((1+r/n)^n)^t = x(0) * ((1+r/n)^{nt}) = x(0)*e^{rt}\)
Therefore, \(dx(t)/dt = r*e^{rt} = r*x(t)\), the continuous growth rate is r.
Application in survival analysis: Finite and instantaneous rates
Finite mortality rates
Suppose we have a cohort of 100 animals, 10% of which die every month, which means the finite mortality rate = 0.1.
Over the full year, the yearly cumulative mortality is 1-(1-0.1)^{12}= 0.7175705.
Instantaneous rates
With the above finite mortality rate, we could divide the time interval, in this case, 1 month, into many short time periods. Mathematically, using calculus, we have:
\(Instantaneous\ mortality\ rate = ln (1.0 - finite\ mortality\ rate)\)
Thus, in this example,
Instantaneous mortality rate = ln (1.0 - 0.1) = ln 0.9 = -0.105 per month
As this is a true rate, and not a proportion, it can vary from -∞ to 0.
We can just multiply this value by 12 to give the yearly instantaneous mortality rate. Hence the yearly instantaneous mortality rate = 12 x -0.105 = -1.26 per year.
This can be converted to a finite rate using:
Finite mortality rate = 1.0 - e^{instantaneous mortality rate}$ = 1-exp(-0.105*12) = 0.716.
Mean life expectancy
Suppose we have survival rate per day 0.66, change it into finite mortality rate per day 1-0.66=0.34, then into instantaneous mortality rate ln(1-0.34), the mean life expectancy thus equals -1/instantaneous mortality rate = -1/ln(1-0.34) = 2.40 days.
Figure source: Life-History Evolution and the Genetics of Fitness Components in Drosophila melanogaster, https://doi.org/10.1534%2Fgenetics.119.300160
References
- https://betterexplained.com/articles/understanding-discrete-vs-continuous-growth/
- https://amsi.org.au/ESA_Senior_Years/SeniorTopic3/3e/3e_3links_1.html
- https://www.webpages.uidaho.edu/wlf448/Peterson2.htm
- https://influentialpoints.com/Training/finite-and-instantaneous_rates.htm
- Flatt, Thomas. “Life-history evolution and the genetics of fitness components in Drosophila melanogaster.” Genetics 214.1 (2020): 3-48.
sessionInfo()
## R version 4.1.3 (2022-03-10)
## Platform: x86_64-apple-darwin17.0 (64-bit)
## Running under: macOS Big Sur/Monterey 10.16
##
## Matrix products: default
## BLAS: /Library/Frameworks/R.framework/Versions/4.1/Resources/lib/libRblas.0.dylib
## LAPACK: /Library/Frameworks/R.framework/Versions/4.1/Resources/lib/libRlapack.dylib
##
## locale:
## [1] en_US.UTF-8/en_US.UTF-8/en_US.UTF-8/C/en_US.UTF-8/en_US.UTF-8
##
## attached base packages:
## [1] stats graphics grDevices utils datasets methods base
##
## loaded via a namespace (and not attached):
## [1] bookdown_0.25 digest_0.6.29 R6_2.5.1 jsonlite_1.8.0
## [5] magrittr_2.0.2 evaluate_0.15 blogdown_1.17.2 stringi_1.7.8
## [9] rlang_1.0.6 cli_3.5.0 rstudioapi_0.13 jquerylib_0.1.4
## [13] bslib_0.3.1 rmarkdown_2.13 tools_4.1.3 stringr_1.4.0
## [17] xfun_0.39 yaml_2.3.4 fastmap_1.1.0 compiler_4.1.3
## [21] htmltools_0.5.2 knitr_1.37 sass_0.4.0