Learn R Programming

popbio (version 2.8)

boot.transitions: Bootstrap observed census transitions

Description

Calculate bootstrap distributions of population growth rates (lambda), stage vectors, and projection matrix elements by randomly sampling with replacement from a stage-fate data frame of observed transitions

Usage

boot.transitions(transitions, iterations, by.stage.counts = FALSE, ...)

Value

A list with 3 items

lambda

A vector containing bootstrap values for lambda

matrix

A matrix containing bootstrap transtion matrices with one projection matrix per row.

vector

A matrix containing bootstrap stage vectors with one stage vector per row.

Arguments

transitions

a stage-fate data frame with stage or age class in the current census, fate in the subsequent census, and one or more fertility columns

iterations

Number of bootstrap iterations

by.stage.counts

Resample transitions with equal probability (default) or by subsets of initial stage counts

...

additional options passed to projection.matrix

Author

Chris Stubben

References

see Morris and Doak 2005 in http://esapubs.org/Archive/mono/M075/004/appendix-A.htm for resampling by stage class counts

See Also

projection.matrix

Examples

Run this code
## create stage-fate dataframe using merge and subset
trans01 <- subset(
             merge(test.census, test.census, by="plant", sort=FALSE),
                     year.x==2001 & year.y==2002)
## format column and row names
trans01 <- trans01[,c(1:4,6)]
colnames(trans01)[2:5] <- c("year", "stage", "fruits", "fate")
rownames(trans01) <- 1:nrow(trans01)
# order stage columns corresponding to matrix
trans01$stage <- ordered(trans01$stage,
                                  levels = c("seedling", "vegetative", "reproductive"))
## add individual fertilities using prebreeding census with no seed bank
##  based on the proportional reproductive outputs of flowering plants
## and the total number of seedlings at the end of the projection interval
seedlings <- nrow(subset(test.census, year==2002 & stage=="seedling"))
trans01$seedling <- trans01$fruits/sum(trans01$fruits) * seedlings
trans01
## Step by step instructions for bootstrapping dataframe
n <- nrow(trans01)
n
set.seed(77)
x <- sample(n, replace=TRUE)
x
bt <- trans01[x,]
bt
projection.matrix(bt)
## or respample by stage class counts
 lapply(split(trans01, trans01$stage, drop=TRUE),
      function(x) x[sample(nrow(x), replace=TRUE),])
## using boot.transitions
boot.transitions(trans01, 5)
boot.transitions(trans01, 5, by.stage=TRUE)
## Aquilegia example
x <- subset(aq.trans, year==1996)
# calculate lamda, seed survival and recruitment rate using aq.matrix
rec <- nrow(subset(aq.trans, year==1997 & stage == "recruit"))
aq.96 <-  aq.matrix(x, rec)
# add  individual fertilities to data frame only
aq.96.trans <- aq.matrix(x, rec, summary=FALSE)
# pass estimated transitions in aq.96 to projection matrix
aq.96.boot <- boot.transitions(aq.96.trans, 200,
            add=c(1,1, aq.96$seed.survival, 2,1, aq.96$recruitment.rate) )
# calculate percentile intervals using quantile()
ci <- quantile(aq.96.boot$lambda, c(0.025,0.975) )
aq.96$lambda
ci
# plot histogram
hist(aq.96.boot$lambda, col="green", xlab="Lambda",
        main=paste('Bootstrap estimates of population\ngrowth rate from 1996-1997'))
abline(v=ci, lty=3)

Run the code above in your browser using DataLab