# boot.transitions: Bootstrap observed census transitions In popbio: Construction and Analysis of Matrix Population Models

## 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

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

## 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`

## 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.

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

`projection.matrix`
 ``` 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 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61``` ```data(test.census) ## 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 data(aq.trans) 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) ```