Calculate generation time from a matrix population model. Multiple definitions of the generation time are supported: the time required for a population to increase by a factor of R0 (the net reproductive rate; Caswell (2001), section 5.3.5), the average parent-offspring age difference (Bienvenu & Legendre (2015)), or the expected age at reproduction for a cohort (Coale (1972), p. 18-19).
gen_time(matU, matR, method = c("R0", "age_diff", "cohort"), ...)
The survival component of a matrix population model (i.e., a square projection matrix reflecting survival-related transitions; e.g., progression, stasis, and retrogression).
The reproductive component of a matrix population model (i.e., a square projection matrix only reflecting transitions due to reproduction; either sexual, clonal, or both).
The method used to calculate generation time. Defaults to "R0". See Details for explanation of calculations.
Additional arguments passed to net_repro_rate
when
method = "R0"
or mpm_to_*
when method = "cohort"
.
Ignored when method = "age_diff"
Returns generation time. If matU
is singular (often indicating
infinite life expectancy), returns NA
.
There are multiple definitions of generation time, three of which are implemented by this function:
1. "R0"
(default): This is the number of time steps required for the
population to grow by a factor of its net reproductive rate, equal to
log(R0) / log(lambda)
. Here, R0
is the net reproductive rate
(the per-generation population growth rate; Caswell 2001, Sec. 5.3.4), and
lambda
is the population growth rate per unit time (the dominant
eigenvalue of matU + matR
).
2. "age_diff"
: This is the average age difference between parents and
offspring, equal to (lambda v w) / (v matR w)
(Bienvenu & Legendre
(2015)). Here, lambda
is the population growth rate per unit time (the
dominant eigenvalue of matU + matR
), v
is a row vector of
stage-specific reproductive values (the left eigenvector corresponding to
lambda
), and w
is a column vector of the stable stage
distribution (the right eigenvector corresponding to lambda
).
3. "cohort"
: This is the age at which members of a cohort are expected
to reproduce, equal to sum(x lx mx) / sum(lx mx)
(Coale (1972), p.
18-19). Here, x
is age, lx
is age-specific survivorship, and
mx
is age-specific fertility. See functions mpm_to_lx
and
mpm_to_mx
for details about the conversion of matrix population models
to life tables.
Note that the units of time in returned values are the same as the projection interval (`ProjectionInterval`) of the MPM.
Bienvenu, F. & Legendre, S. 2015. A New Approach to the Generation Time in Matrix Population Models. The American Naturalist 185 (6): 834–843. <doi:10.1086/681104>.
Caswell, H. 2001. Matrix Population Models: Construction, Analysis, and Interpretation. Sinauer Associates; 2nd edition. ISBN: 978-0878930968
Coale, A.J. 1972. The Growth and Structure of Human Populations. Princeton University Press. ISBN: 978-0691093574
Other life history traits:
entropy_d()
,
entropy_k_age()
,
entropy_k_stage()
,
entropy_k()
,
life_elas()
,
life_expect_mean()
,
longevity()
,
net_repro_rate()
,
repro_maturity
,
shape_rep()
,
shape_surv()
data(mpm1)
# calculate generation time
gen_time(matU = mpm1$matU, matR = mpm1$matF) # defaults to "R0" method
#> [1] 5.394253
gen_time(matU = mpm1$matU, matR = mpm1$matF, method = "age_diff")
#> [1] 5.052574
gen_time(
matU = mpm1$matU, matR = mpm1$matF, method = "cohort", lx_crit =
0.001
)
#> [1] 5.524948