eigen.analysis: Eigenvalue and eigenvector analysis of a projection matrix

Description Usage Arguments Details Value Note Author(s) References See Also Examples

View source: R/eigen.analysis.R

Description

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

Usage

1

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.

See Also

eigen and pop.projection

Examples

 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)

popbio documentation built on May 4, 2018, 1:04 a.m.