In most populations, individuals differ from one another in size or age. Usually these differences affect rates of survival, growth, and reproduction. For example in many plant species, small plants have a lower probability of survival than large plants. When small individuals are more abundant than large individuals, a simple average of survival probability is overly simplistic. In situations like these, we need to account for differences in transition rates due to age or stage.
In a system in which individuals are either adults, \(A\), or juveniles, \(J\). For simplictiy, we assume that individuals may only persist as adults or juveniles for one timestep.
In each timestep, the number of juveniles, \(J\), is a function of the number of adults in the prior timestep, \(A\), and their reproductive rate, \(f\).
\(J_{t+1}=A_t*f\)
Similarly, the number of adults in each timestep, \(A\), is a function of the number of juveniles in the last timestep, \(J\), that became adults at the per capita growth rate, \(g\).
\[A_{t+1}=J_t*g\]
If you remember from your algebra classes, this problem can be represented by a system of equations, because information from one equation can be used to solve the other, and vice-versa. Alternatively, we can use matrix models to summarize the dynamics of this population.
To use a matrix model, we combine the information into rows and columns that represent transitions.
\[ \left( \begin{array}{c} J \\ A \end{array} \right) = \left( \begin{array}{cc} 0 & f \\ g & 0 \end{array} \right) \]
In this transition matrix, each transition is accounted for: the upper right quadrant of the matrix represents reproduction (Adults to Juveniles), the lower left represents growth (Juveniles to Adults), and the other two are set to zero, because in this simple scenario adults may not stay adults, and juveniles may not stay juveniles.
Demographic matricies are always read from the top and to the left in this way (see Figure 2), but can be expanded to include more than two stages. They are also always square, and the elements are always positive. There are two common forms of demographic matricies; leslie matricies for populations that are age-structured (individuals must progress due to age), and leftkovitch matricies where individuals may both progress and retrogress between stages. A markov matrix is different, because death rates are explictly accounted for, and we will not address those kinds of matricies here.
Once a demographic matrix is constructed we can simulate the dynamics of the population in discrete time, or we can use the matrix to calculate asymptotic (the long-term) behavior. In a deterministic framework, both approaches should ultimately result in the same answer. The example above is relatively simplified, in reality there are few species that just have a juvenile and adult stage. In today’s example you will work with a matrix consisting of five stages with four variables for each stage of the population; its initial size \(N_0\), birth rate \(b\), growth rate \(g\), and probability that an individual will remain at a particular stage rate \(r\).
Researchers use these stage structured models in many ways. A popular application is to identify which stages of the population are more sensitive than others. The purpose here is to identify which apsects of the population respond best (or worst) to various conservation efforts. Should we base our conservation on promoting high egg laying rates or should we focus on ensuring that hatchlings make it into the sea safely to grow up to become juveniles? Those are just some of the questions that can be answered in part by what are caled sensitivity and elasticity analyses.
Remember to think carefully about the values you are inputting. You have three parameters, probability of successfully reproducing, probability of remaining, and the probability of growing. If the sum of of these latter two probabilities is greater than 1 then your model will result in an incorrect output - please remember that. You cannot have more individuals at the end of an age class (from the same initial cohort) than what you started with at the beginning of a given time period. A good way to thing about how you manipulate these probabilities is to decide first how many individuals will grow - let’s say 0.5 or 50%. That leaves us with 50% to assign the number of individuals that will remainin in an age class. Let’s make this value .02 or 20%. Then that leaves 0.3 unaccounted for - those are the individuals which have died.
Download the staged structured growth app here and complete the prac worksheet questions.
Do not change any of the parameters of the Shiny App before attempting this question – if you have then restart or reload the app. Write out a matrix equation that illustrates the population composition at time t+1 based on the population at time t and the transition matrix (4)
Sensitivity and elasticity are two terms used to describe how important each transition arrow in the life cycle diagram is in determining \(\lambda\). Sensitivity is an arrow’s (or transition’s) direct contribution to \(\lambda\) - high sensitivity means that small changes in a transition pararmeter will have great effects on \(\lambda\) where \(\lambda\) is the populations growth rate once it is stabilised. This can be calculated manually by modelling the population for many years and calculating lambda once no change in the proportions of the different classes is occurring. Alternatively, \(\lambda\) can be calculated as the main or dominant eigenvalue of the Leslie (\(l\)) matrix. The contribution of each element in the Leslie matrix (\(l_{ij}\)) to \(\lambda\) can then be calculated as
\[ \frac{\partial \lambda_{1}}{\partial l_{ij}} = \frac{(w_{1}){i}(v_{1})_{j}}{\bar{w}_{1}^{T} \bar{v}_{1}} \] where \(w_{1}\) and \(v_{1}\) are left and right eigenvectors of the dominant eigenvalue (which is \(\lambda\)). For interest, This video provides some further explanation on these terms.
Once we have this sensitivity matrix wer can calculate a standardised measure of sensitivity - this is called elasticity. In this case sensitivity is weighted by \(\frac{l_{ij}}{\lambda}\) - the corresponding Leslie matrix value divided by the population’s net growth rate.
Manipulate the parameters of the Shiny App one by one and explain how the class’ elasticty changes. Discuss given the starting model parameters which class is the most and least important to ensuring the population’s survival (10)
Under what conditions will the population experience 1. a “baby-boom” (3) 2 become extinct as a result of an “aging population” (3)
A population of grasshoppers in the KwaZulu-Natal south coast has initial population sizes of
\[ \left[ \begin{array}{c} Nymphs \\ Sub-adults \\ Adults \end{array} \right] = \left[ \begin{array}{cc} 10 \\ 13 \\ 3 \end{array} \right] \] And the population’s probabilities of transitioning between states is described as:
The graph produced using the Shiny App is interesting but there are several other ways in which these structured population models can be presented. By altering the working code below produce plots which present
- the stage population sizes and add in the total population size (4)
- present your previous plot2 on the log scale for population size (3)
- present the stage sizes as a proportion of the total population and do not plot total population size (4)
list.of.packages <- c("dplyr", "tibble", "tidyr", "ggplot2", "viridis")
#checking missing packages from list
new.packages <- list.of.packages[!(list.of.packages %in% installed.packages()[,"Package"])]
#install missing ones
if(length(new.packages)) install.packages(new.packages, dependencies = TRUE)
nSteps <- 50 # number of time steps
popvec <- matrix(c(20, 40, 40, 60, 20),
nrow = 5,
ncol = 1) #initial population size vector
tmat <- matrix(c(0.1, 0.1, 0.6, 0.7, 0,
0.3, 0.5, 0, 0, 0,
0, 0.4, 0.6, 0, 0,
0, 0, 0.3, 0.6, 0,
0, 0, 0, 0.2, 0.2),
nrow = 5, ncol = 5,
byrow = T) # Leslie matrix
# make a wide matrix where each column is a time step and each row is a stage class
# vec is the population size vector at time t-1
# vec is then added to the right hand side of popvec
for (i in 2:nSteps) {
vec <- matrix(popvec[,i - 1],
ncol = 1,
nrow = 5,
byrow = T)
popvec <- cbind(popvec, tmat %*% vec)
}
colnames(popvec) <- seq(from = 1, to = nSteps, by = 1) # makes the column names of popvec equal to the time step the column represents
popvec <- as.data.frame(popvec) # convert popvec to a dataframe
rownames(popvec) <- c("Hatchling",
"Juvenile",
"Sub-adult",
"Adult",
"Post-reproductive") # make the rownames represent the stage classes
popvec <- popvec %>%
rownames_to_column(var = "Stage") %>% # covert these rownames to the first column
gather(key = "var",
value = "Number",
-Stage) %>% # gather in all the population sizes for each class resulting in one column for class (Stage), one column for number of individuals in that class (Number) and the time step (currently var) but do not include Stage in this - that way it will preseve those data for each combination
select(Stage, Number, "Time" = var) # select those columns in a particular order and rename var to Time
popvec$Time <- as.numeric(popvec$Time) # convert time from character to numeric
popvec <- popvec %>%
arrange(Stage, Time) # arrange the dataframe by Time within Stage
popvec$Stage <- factor(popvec$Stage, levels = c("Hatchling",
"Juvenile",
"Sub-adult",
"Adult",
"Post-reproductive")) # assing levels to the stage classes which controls their ordering in the plot output
ggplot(dat = popvec) +
geom_line(mapping = aes(x = Time, y = Number, colour = Stage), size = 1) +
geom_hline(yintercept = 0, linetype = 2) + # adds the (dotted) horizontal line intercepting y at 0
theme_bw() + # choose the black and white theme
theme(axis.title = element_text(colour = "black",
size = 12), # change axis title text colour to black and size to 12
axis.text = element_text(colour = "black",
size = 11), # change axis number text colour to black and size to 11
legend.text = element_text(colour = "black",
size = 11)) + # change legend label text colour to black and size to 11
scale_colour_viridis(discrete = TRUE, begin = 0.1, end = 0.8) # use the viridis colour palette for the different stages
Discuss the differences between age and stage structured population growth matrix models. Give examples of four species that would be suitably modelled by both of these types of matrix models (12)
In our examples we have assumed that individuals of the population can either remain in a given stage or progress on to the next stage. There are in fact scenarios where individuals may regress or go back a stage. Give a brief overview of how this kind of growth differs from the general stage structured growth and give four examples of what kinds of populations this might exhibit this kind of growth and explain in brief the mechanism the population uses to grow in that way. Also provide an example transition matrix to illustrate how a population of this nature might be modelled using a Leslie matrix (10)
Hunting or commercial harvesting can drastically affect population sustainability and viability and so the harvesting of populations (particularly the more sensititve populations) is often strongly legislated. Discuss how these kinds of population growth models and analyses can be incorporated into legislating harvesting of natural populations. Make reference to both scientific publications and government policies (13)