# simpopndetails: Specifying a Dynamic Population In secr: Spatially Explicit Capture-Recapture

## Description

`sim.popn` can simulate a multi-session population with known between-session survival, recruitment and movement probabilities. The parameter settings to achieve this are passed to `sim.popn` in its ‘details’ argument. Components of ‘details’ that are relevant to turnover are described below; see `sim.popn` for others.

Multi-session populations are generated in `sim.popn` whenever its argument ‘nsessions’ is greater than 1. If `details\$lambda` remains NULL (the default) then the population for each successive session is generated de novo from the given density model (model2D, D etc.). If a value is specified for `details\$lambda` then only the first population is generated de novo; remaining populations are generated iteratively with probabilistic mortality, recruitment and movement as described here.

## Turnover components of `sim.popn` details argument

 Component Description Default `phi` per capita survival rate φ 0.7 `survmodel` probability model for number of survivors "binomial" `lambda` finite rate of increase λ = N_{t+1} / N_t none `recrmodel` probability model for number of recruits "poisson" `sigma.m` spatial scale of movement kernel 0 `wrap` logical: should toroidal wrapping be applied? TRUE

## Survival

Survival is usually thought of as a Bernoulli process (outcome 0 or 1 for each individual) so the number of survivors S is a binomial variable (survmodel = "binomial"). Another approach is to fix the proportion surviving, but this can be done exactly only when φ N is an integer. A (slightly ad hoc) solution is to randomly choose between the two nearest integers with probability designed in the long term (over many sessions) to give the required φ (survmodel = "discrete").

## Population growth and recruitment

Per capita recruitment (γ) is the difference between lambda and phi (γ = λ - φ), which must be non-negative (phi > lambda causes an error). The number of recruits B is a random variable whose probability distribution is controlled by details\$recrmodel:

 Value Probability model "constantN" Exact replacement of animals that die (B = N_t - S) "binomial" Binomial number of recruits (B ~ bin(N_t, γ) "poisson" Poisson number of recruits (B ~ pois(γ N_t)) "discrete" Minimum-variance number of recruits (see Survival)

In the case of binomial recruitment there is a maximum of one recruit per existing individual, so lambda <= (phi+1).

## Movement

Individuals may shift their home range centre between sessions. Movement probability is governed by a circular bivariate normal kernel with scale sigma.m. If movement takes an animal across the boundary of the arena then by default it is toroidally wrapped i.e. re-joins the population on the opposing edge. No movement is applied when sigma.m = 0.

`sim.popn `
 ``` 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27``` ```par (mfrow = c(2,3), mar = c(1,1,1,1)) ## birth and death only grid <- make.grid(nx = 7, ny = 4, detector = 'proximity', spacing = 10) pop <- sim.popn (Nbuffer = 100, core = grid, nsessions = 6, details = list(lambda = 0.8, phi = 0.6, sigma.m = 0)) sapply(pop, nrow) ## how many individuals? plot(pop) ## movement only pop2 <- sim.popn (Nbuffer = 100, core = grid, nsessions = 6, details = list(lambda = 1, phi = 1, sigma.m = 10, wrap = TRUE)) pop3 <- sim.popn (Nbuffer = 100, core = grid, nsessions = 6, details = list(lambda = 1, phi = 1, sigma.m = 10, wrap = FALSE)) sapply(pop2, nrow) ## how many individuals? plot(pop2) ## show effect of toroidal wrapping -- tracks <- function (pop, ...) { rn <- unlist(lapply(pop, rownames)) plot(pop[[1]], pch = 16) for (i in unique(rn)) lines(t(sapply(pop, '[', i, 1:2)), ...) } par (mfrow=c(1,2)) tracks(pop2, type = 'o') tracks(pop3, type = 'o') ```