When a species is of conservation concern, we are interested in whether populations of the species can persist in the long term. In order to examine population viability (a measurement of whether a species will persist through time), we can use demographic information to model population dynamics.
Usually we start with the idea that in any population, the number of individuals at any particular time is governed by the initial population size, , and the number of births, deaths, immigrations, and emigarations that occur. We can describe this kind of population using the following diagram:
Given this scenario we could use the equation
to describe how the population changes between time periods. Here represents the number of individuals in the population, represents the number of births, the number of deaths, the number of immigrations, and the number of emmigrations. In the simplest approach, we can use a disctrete-time model and demographic information to predict the expected size of a population over time.
The above equation has several sources of external variability due to external influences and so for simplicity we will consider a closed population, where there are no immigarants joining the population or emmigrants leaving the population. In our example only births and deaths will affect the number of inidividuals in the population.
To further simplify our model, we will not explicitly address deaths. Instead we examine suvivorship, , or the per capita probability of suriving in a particular timestep. is still calculated with the per capita death rate () in mind:
This equation means that the probability that an individual will survive () plus the probability that an individual will die () must add to one. From this we can estimate the number of individuals alive at time as . Then population size in each timestep is a function of the population size at the time before (), survivorship (), and the per capita birth rate () as shown in the equation below.
Use the Exponential growth: Births and survivorship app to study this equation a little further. Use this app to answer the questions on the prac sheet.
Download the exponential growth: Births and deaths app here
Futhermore, in order for a population to remain viable in the long term, survivorship and births must be balanced so that . The term is often used to summarize the sum of per capita survivorship and births:
So, instead of changing and independently, we can use in our model to summarize the dynamics of the population. Use the Exponential growth: Lambda app to answer the next set of questions on your prac sheet.
Download the exponential growth: Lambda app here
The problem with exponential models is that they do not incorporate a ceiling - the population grows towards infinity. As you will likely see later when you answer the questions later there are very few types of organisms which we study which exhibit exponential growth patterns. What is more commonly encountered by us maro-ecologists are populations which reach what we call a “carrying capacity” - the population size at which the resources in the environment are too few to sustain the population or allow it to grow. This is the next idea we will explore today.
The equation for logistic growth is very similar to the exponential growth equation except that there is an extra term added which gives us
This is the derived form of the logistic equation representing the “rate of change” of the population size through time. The second part adjusts the growth rate towards zero as tends towards . When we have and so the change in population size equals zero. When the population size is very far away from the magnitude of the adjustment increases - this takes into account whether there are many resources not being used (very small ) or when too many resources are being used (very large ). As approaches the carrying capacity the rate of change in the population size decreases. Th opposite occurs when the population size is very different to the carrying capacity. Aside from the rate of change in population size changing the direction of this change can also vary. With this equation a population size grater than K will result in a population which decreases in size until it reaches the carrying capacity.
This is a very useful equation, however, it is harder to use for producing simple plots such as the ones we are interested in for today’s practical. This is because if we plot this equation we will plot the rate of change of the population through time rather than the population size through time. To get around this problem we can integrate this equation to get
where is the carrying capacity, is the initial population size, is the intrinsic rate of growth of the population (birth rate minus death rate) and being time.
Let’s see this idea in action:
Download the logistic population growth app here
An important aspect of any population study is the rate of change of a population’s size between two time periods . Going back to MATH150 you’ll hopefully remember that the term for this is differentiation. Some equations are pretty easy to differentiate (a cubic function (the logisic growth equation is a variation of this) differentiates to a parabolic function) but many of the equations used in population ecology are a little more complicated than this and so differentiating more complicated equations becomes much more tricky and likely goes beyond the scope of MATh150. Fortunately for us, R has several packages which takes care of this differentiation stuff for us! One such package is deSolve
. In later practicals we will learn how to use this package but for now we will just focus understanding the relationship between the variables involved in the equations rather than computing the relationship ourselves.
Use the first two apps to answer the following questions
How many years does it take for a population to go extinct when:
What is the equivalent value for when = 0.8 and = 0.4? (2)
Describe what factors contribute towards increasing the time to extinction for a population growing exponentially. Make reference to values inputted to the app (5)
Use the third app to answer the following questions.
You should see a button labelled Plot change in population growth on this app window, click it and you should now see two plots. Both these plots are plotting data from the same model, the one we have already looked at is plotting the actual population size through time while the other is plotting the rate of change of the population through time
Describe the shape of the logistic growth plot when the model parameters are set to:
Under what circumstances will a population go extinct if its initial population size is lower than the carrying capacity? (3)
Study the rate of change graph accompanying the logistic growth plot. Discuss (with reference to the model parameters) how the rate of change plot changes in relation to the logistic growth plot (6)
N0 <- 50 # The intitial population size
years <- 30 # The number of time steps
lambda <- 1.4 # The population growth rate, lambda
N <- c(N0, rep(0, times = years - 1)) # Create an open vector for data
#Run a loop that considers each time step (t) as a function of the time step before it (t-1) and lambda
for (t in 2:years) {
N[t] <- N[t - 1]*(lambda)
}
time <- seq(from=1, to = years, by = 1) #Create a vector of time steps for plotting
plot_df <- data.frame(Size = N, Time = time)
ggplot(data = plot_df) +
geom_line(aes(x = Time, y = Size)) +
labs(x = "Time")
theme_bw() +
theme(axis.title = element_text(colour = "black",
size = 12),
axis.text = element_text(colour = "black",
size = 11),
legend.title = element_text(colour = "black",
size = 12),
legend.text = element_text(colour = "black",
size = 11))
N0 <- 25 # The intitial population size
years <- 15 # The number of time steps
r <- 1.01 # The population growth rate, lambda
K <- 90
N <- rep(0, times = years+1) # Create an open vector for data
years <- seq(from = 0,
to = years,
by = 2)
for (i in 1:length(N)+1) {
N[i] <- K/(1+((K-N0)/N0)*exp(-r*years[i]))
}
ggplot() +
geom_point(aes(x = years, y = N)) +
geom_line(aes(x = years, y = N)) +
labs(x = "Years") +
theme_bw() +
theme(axis.title = element_text(colour = "black",
size = 12),
axis.text = element_text(colour = "black",
size = 11),
legend.title = element_text(colour = "black",
size = 12),
legend.text = element_text(colour = "black",
size = 11))
geom
layer (5)
N0 <- 50 # The intitial population size
years <- 30 # The number of time steps
lambda <- 1.4 # The population growth rate, lambda
N <- c(N0, rep(0, times = years - 1)) # Create an open vector for data
#Run a loop that considers each time step (t) as a function of the time step before it (t-1) and lambda
for (t in 2:years) {
N[t] <- N[t - 1]*(lambda)
}
time <- seq(from = 1,
to = years,
by = 1) #Create a vector of time steps for plotting
plot_df <- data.frame(Size = N, Time = time)
ggplot(plot_df) +
geom_line(aes(x = Time, y = Size)) +
labs(x = "Time")
theme_bw() +
theme(axis.title = element_text(colour = "black",
size = 12),
axis.text = element_text(colour = "black",
size = 11),
legend.title = element_text(colour = "black",
size = 12),
legend.text = element_text(colour = "black",
size = 11))