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
)
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 sexual component of a matrix population model (i.e., a square projection matrix reflecting transitions due to sexual reproduction)
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).
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
.
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
.
Vector of stage-specific standardized matrix classes
("prop" for propagule, "active", and/or "dorm" for dormant). Only used if
splitStages = "matrixClass"
.
A list of averaged vital rates.
Caswell, H. 2001. Matrix Population Models: Construction, Analysis, and Interpretation. Sinauer Associates; 2nd edition. ISBN: 978-0878930968
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
#>