Learn R Programming

popdemo (version 1.3-1)

truelambda: Calculate asymptotic growth

Description

Calculate the true asymptotic growth of a population matrix projection model from the model projection

Usage

truelambda(A, vector = "n", accuracy = 1e-07, iterations = 1e+05)

Arguments

A

a square, non-negative numeric matrix of any dimension

vector

(optional) a numeric vector or one-column matrix describing the age/stage distribution used to calculate the projection.

accuracy

the accuracy with which to determine convergence on asymptotic growth, expressed as a proportion (see details).

iterations

the maximum number of iterations of the model before the code breaks. For slowly-converging models and/or high specified convergence accuracy, this may need to be increased.

Value

If vector is specified, a numeric vector of length 2 giving the range in which asymptoticgrowth of the model lies.

If vector is not specified, a 2-column matrix with each row giving the range in which asymptotic growth lies for its corresponding stage-biased projection: the number of rows is equal to the dimension of A; the first row is the range when projecting [1,0,0,...], the second entry is the range when projecting [0,1,0,...], etc.

Details

truelambda works by simulating the given model and manually determining growth when convergence to the given accuracy is reached. Convergence on an asymptotic growth is deemed to have been reached when the growth of the model stays within the window determined by accuracy for 10*s iterations of the model, with s equal to the dimension of A. For example, projection of an 8 by 8 matrix with convergence accuracy of 1e-2 is deemed to have converged on asymptotic growth when 10*8=80 consecutive iterations of the model have a growth within 1-1e-2=0.99 (i.e. 99%) and 1+1e-2=1.01 (i.e. 101%) of each other.

If vector is specified, then the asymptotic growth of the projection of vector through A is returned. If vector="n" then asymptotic growths of the set of 'stage-biased' vectors are calculated. These projections are achieved using a set of standard basis vectors equal in number to the dimension of A. These have every element equal to 0, except for a single element equal to 1, i.e. for a matrix of dimension 3, the set of stage-biased vectors are: c(1,0,0), c(0,1,0) and c(0,0,1).

Asymptotic growth should be equal to the dominant eigenvalue of the matrix. For non-ergodic models this may not be the case: asymptotic growth will depend on the population structure that's projected. truelambda provides a means to check what the true asymptotic growth of a non-ergodic model is.

References

  • Stott et al. (2010) Methods Ecol. Evol., 1, 242-252.

See Also

Other ConvergenceMeasures: convt(), dr()

Examples

Run this code
# NOT RUN {
  # Create a 3x3 irreducible PPM
  ( A <- matrix(c(0,0,2,0.5,0.1,0,0,0.6,0.6), byrow=TRUE, ncol=3) )

  # Create an initial stage structure
  ( initial <- c(1,3,2) )

  # Calculate the true asymptotic growth of the stage-biased
  # projections of A
  truelambda(A)

  # Calculate the true asymptotic growth of the projection of
  # A and initial
  truelambda(A, vector=initial)

  # Create a 3x3 reducible, nonergodic PPM
  B<-A; B[3,2] <- 0; B

  # Calculate the true asymptotic growth of the 3 stage-biased
  # projections of B
  truelambda(B)

# }

Run the code above in your browser using DataLab