Derive a hypothetical set of population vectors (i.e. population size distributions across stages) given a time-series of matrix population models (MPMs), by taking the stable stage distribution of the mean matrix as the starting vector (or optionally, a uniform or random starting vector), and deriving subsequent vectors through recursive population projection.

pop_vectors(A, start = "stable.stage")

Arguments

A

A list of MPMs (i.e., square population projection matrices).

start

Method to derive the first population vector in the series. Either stable.stage to use the stable stage distribution of the mean matrix as the starting vector, uniform to use a uniform starting vector (all elements equal), or random to use a randomly-generated starting vector. Defaults to the stable stage distribution.

Value

A list of population vectors

Details

This function is useful for providing population vectors as input to the perturb_stochastic function which calculates stochastic elasticities given a time-series of matrix population models and corresponding population vectors, using the method described in Haridas et al. (2009).

References

Haridas, C. V., Tuljapurkar, S., & Coulson, T. 2009. Estimating stochastic elasticities directly from longitudinal data. Ecology Letters, 12, 806-812. <doi:10.1111/j.1461-0248.2009.01330.x>

See also

Other perturbation analysis: perturb_matrix(), perturb_stochastic(), perturb_trans(), perturb_vr()

Author

Patrick Barks <patrick.barks@gmail.com>

Examples

# generate list of matrices
matA_l <- replicate(5, matrix(runif(9), 3, 3), simplify = FALSE)

# calculate corresponding population vectors
pop_vectors(matA_l)
#> [[1]]
#> [1] 0.2706127 0.3956447 0.3337426
#> 
#> [[2]]
#> [1] 0.2822817 0.3361341 0.3815843
#> 
#> [[3]]
#> [1] 0.1155868 0.5120382 0.3723750
#> 
#> [[4]]
#> [1] 0.4616143 0.4306508 0.1077349
#> 
#> [[5]]
#> [1] 0.2199710 0.2863841 0.4936449
#> 
pop_vectors(matA_l, start = "uniform")
#> [[1]]
#> [1] 0.3333333 0.3333333 0.3333333
#> 
#> [[2]]
#> [1] 0.3019577 0.2919136 0.4061287
#> 
#> [[3]]
#> [1] 0.1110506 0.5187931 0.3701563
#> 
#> [[4]]
#> [1] 0.4659578 0.4275552 0.1064871
#> 
#> [[5]]
#> [1] 0.2195318 0.2847771 0.4956911
#> 
pop_vectors(matA_l, start = "random")
#> [[1]]
#> [1] 0.3342151 0.1675243 0.4982606
#> 
#> [[2]]
#> [1] 0.3362418 0.2078520 0.4559061
#> 
#> [[3]]
#> [1] 0.1019625 0.5316507 0.3663868
#> 
#> [[4]]
#> [1] 0.4742755 0.4216557 0.1040688
#> 
#> [[5]]
#> [1] 0.2186784 0.2817046 0.4996171
#>