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

Arguments

matU

The survival component of a matrix population model (i.e., a square projection matrix reflecting survival-related transitions; e.g., progression, stasis, and retrogression).

matR

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

method

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"

Value

Returns generation time. If matU is singular (often indicating infinite life expectancy), returns NA.

Details

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

Note that the units of time in returned values are the same as the projection interval (`ProjectionInterval`) of the MPM.

References

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

Author

Patrick Barks <patrick.barks@gmail.com>

William Petry <wpetry@ncsu.edu>

Examples

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