Derive mean vital rates corresponding to separate demographic processes from a matrix population model. Specifically, this function decomposes vital rates of survival, progression, retrogression, sexual reproduction and clonal reproduction, with various options for weighting and grouping stages of the life cycle.

vital_rates(
  matU,
  matF,
  matC = NULL,
  weights = NULL,
  splitStages = "all",
  matrixStages = NULL
)

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

matF

The sexual component of a matrix population model (i.e., a square projection matrix reflecting transitions due to sexual reproduction)

matC

The clonal component of a matrix population model (i.e., a square projection matrix reflecting transitions due to clonal reproduction). Defaults to NULL, indicating no clonal reproduction (i.e. matC is a matrix of zeros).

weights

Vector of stage-specific weights to apply while averaging vital rates. Default is NULL reflecting equal weighting for all stages. May also be "SSD" to weight vital rates by the stable distribution of matA.

splitStages

What groups should vital rates be averaged over. Either:

"all": all stages grouped.

"ontogeny": group juvenile stages (all stages prior to the first stage with sexual reproduction) and adult stages.

"matrixStages": group according to a standardized set of stage classes (propagule, active, and dormant). If splitStages = "matrixStages", must also specify separate argument matrixStages.

matrixStages

Vector of stage-specific standardized matrix classes ("prop" for propagule, "active", and/or "dorm" for dormant). Only used if splitStages = "matrixClass".

Value

A list of averaged vital rates.

References

Caswell, H. 2001. Matrix Population Models: Construction, Analysis, and Interpretation. Sinauer Associates; 2nd edition. ISBN: 978-0878930968

See also

Other vital rates: vr_mat, vr_vec, vr

Author

Roberto Salguero-Gomez <rob.salguero@zoo.ox.ac.uk>

Examples

matU <- rbind(
  c(0.1, 0, 0, 0),
  c(0.5, 0.2, 0.1, 0),
  c(0, 0.3, 0.3, 0.1),
  c(0, 0, 0.5, 0.6)
)

matF <- rbind(
  c(0, 0, 1.1, 1.6),
  c(0, 0, 0.8, 0.4),
  c(0, 0, 0, 0),
  c(0, 0, 0, 0)
)

matC <- rbind(
  c(0, 0, 0.4, 0.5),
  c(0, 0, 0.3, 0.1),
  c(0, 0, 0, 0),
  c(0, 0, 0, 0)
)

# Vital rate outputs without weights
vital_rates(matU, matF, matC, splitStages = "all")
#> $surv
#> [1] 0.675
#> 
#> $retr
#> [1] 0.1269841
#> 
#> $prog
#> [1] 0.662963
#> 
#> $fec
#> [1] 1.95
#> 
#> $clo
#> [1] 0.65
#> 
vital_rates(matU, matF, matC, splitStages = "ontogeny")
#> $survJuv
#> [1] 0.55
#> 
#> $retrJuv
#> [1] 0
#> 
#> $progJuv
#> [1] 0.7166667
#> 
#> $cloJuv
#> [1] 0
#> 
#> $survAdu
#> [1] 0.8
#> 
#> $retrAdu
#> [1] 0.1269841
#> 
#> $progAdu
#> [1] 0.5555556
#> 
#> $fecAdu
#> [1] 1.95
#> 
#> $cloAdu
#> [1] 0.65
#> 

# Group vital rates according to specified matrixStages
ms <- c("prop", "active", "active", "active")
vital_rates(matU, matF, matC,
  splitStages = "matrixStages",
  matrixStages = ms
)
#> $survProp
#> [1] 0
#> 
#> $progProp
#> [1] 0
#> 
#> $survActive
#> [1] 0.7
#> 
#> $retrActive
#> [1] 0.1269841
#> 
#> $progActive
#> [1] 0.5777778
#> 
#> $fecActive
#> [1] 1.95
#> 
#> $cloActive
#> [1] 0.65
#> 
#> $survDorm
#> [1] 0
#> 
#> $retrDorm
#> [1] 0
#> 
#> $progDorm
#> [1] 0
#> 

# Vital rate outputs weighted by the stable stage distribution of 'matA'
vital_rates(matU, matF, matC, splitStages = "all", weights = "SSD")
#> $surv
#> [1] 0.6123886
#> 
#> $retr
#> [1] 0.1250597
#> 
#> $prog
#> [1] 0.6905906
#> 
#> $fec
#> [1] 1.943938
#> 
#> $clo
#> [1] 0.656062
#>