# eigen.analysis: Eigenvalue and eigenvector analysis of a projection matrix In popbio: Construction and Analysis of Matrix Population Models

## Description

Calculate population growth rate and other demographic parameters from a projection matrix model using matrix algebra

## Usage

 `1` ```eigen.analysis(A, zero=FALSE) ```

## Arguments

 `A` A projection matrix `zero` Set sensitivities for unobserved transitions to zero

## Details

The calculation of eigenvalues and eigenvectors partly follows Matlab code in section 4.8.1 (p. 107) in Caswell (2001). Since `popbio` version 2.0, each part returned by `eigen.analysis` is now inlcuded as a separate function.

## Value

A list with 6 items

 `lambda1 ` dominant eigenvalue with largest real part `stable.stage` proportional stable stage distribution `sensitivities ` matrix of eigenvalue sensitivities `elasticities` matrix of eigenvalue elasticities `repro.value` reproductive value scaled so v[1]=1 `damping.ratio` damping ratio

## Note

If matrix A is singular, then `eigen.analysis` will return elasticities, sensitivities, and reproductive values with NAs.

This function is also included in `demogR` package.

## Author(s)

Original code by James Holland Jones, Stanford University, August 2005.

## References

Caswell, H. 2001. Matrix population models: construction, analysis, and interpretation, Second edition. Sinauer, Sunderland, Massachusetts, USA.

`eigen` and `pop.projection`
 ``` 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 28 29 30 31 32 33 34 35 36 37 38``` ```## Imprimitive matrix A <- matrix(c(0,0,2,.3,0,0,0,.6,0), nrow=3,byrow=TRUE) A ev <- eigen(A) ev\$values Mod(ev\$values) lmax <- which.max(Re(ev\$values)) lmax Re(ev\$values)[lmax] ## damping ratio is NA eigen.analysis(A) ## cycles every 3 years stage.vector.plot(pop.projection(A, c(1,1,1), 10)\$stage.vectors) ### Teasel data(teasel) a<-eigen.analysis(teasel) a barplot(a\$stable.stage, col="green", ylim=c(0,1), ylab="Stable stage proportion", xlab="Stage class", main="Teasel") box() op<-par(mfrow=c(2,2)) image2(teasel, cex=.8, mar=c(0.5,3,4,1) ) title("Teasel projection matrix", line=3) image2(a\$elasticities, cex=.8, mar=c(0.5,3,4,1) ) title("Elasticity matrix", line=3) ## default is sensitivity for non-zero elements in matrix image2(a\$sensitivities, cex=.8, mar=c(0.5,3,4,1) ) title("Sensitivity matrix 1", line=3) ## use zero=FALSE to get sensitivities of all elements image2(eigen.analysis(teasel, zero=FALSE)\$sensitivities, cex=.8, mar=c(0.5,3,4,1) ) title("Sensitivity matrix 2", line=3) par(op) ```