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 = NULL,
matF = NULL,
matC = NULL,
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). If matR
is not provided, it will be
constructed by summing matF
and matC
.
The matrix reflecting sexual reproduction. If provided
without matC
, matC
is assumed to be a zero matrix. If
matR
is provided, this argument is ignored.
The matrix reflecting clonal (asexual) reproduction.
If provided without matF
, matF
is assumed to be a zero
matrix. If matR
is provided, this argument is ignored.
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()
,
entropy_k_age()
,
entropy_k_stage()
,
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, matF = 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