Population Viability Analysis (PVA) is a quantitative modeling framework used in conservation biology to estimate the likelihood that a population will persist, decline, or go extinct over a given period under specific demographic and environmental conditions. It integrates information about birth rates, death rates, dispersal, genetic variation, and environmental stochasticity to simulate future population trajectories. PVA models can be deterministic or stochastic and often incorporate uncertainty to predict population trends under different management or ecological scenarios. A key output from PVA is the probability of extirpation—the chance that a local population will decline to zero within a defined time horizon—providing an objective measure of extinction risk.
PVA is widely applied in wildlife management, conservation planning, and endangered species recovery programs. It helps decision-makers evaluate the potential impact of threats such as habitat loss, climate change, disease outbreaks, and overharvesting, as well as to assess the effectiveness of proposed interventions like habitat restoration, translocation, or captive breeding. By comparing different management scenarios, PVA supports the development of evidence-based conservation strategies aimed at minimizing extinction risk and promoting long-term population sustainability. For instance, it has been applied to estimate the viability of wolf populations in Yellowstone, sea turtle nesting colonies under rising temperatures, and the persistence of fragmented bird populations in changing landscapes.
A common model for population dynamics is given by
where Nt is the population size at time t, and λt represents the finite rate of population growth. In this stochastic formulation, λt is not constant but follows a normal distribution with mean μ and variance that depends on both environmental and demographic variability:
Here, σe^2 captures environmental stochasticity, reflecting fluctuations in population growth caused by external factors such as weather, food availability, or disease. The term σd^2 / Nt represents demographic stochasticity, arising from random variation in birth and death events among individuals.
As the population size Nt increases, the demographic component σd^2 / Nt becomes negligible because random individual-level events average out in large populations. Consequently, large populations are mainly influenced by environmental variation, while small populations experience both environmental and demographic randomness—making them more vulnerable to extinction and demographic collapse.
Example
# --- Simple stochastic population model with extinction probability ---
set.seed(123)
# Parameters
mu <- 1.02 # mean growth rate
sigma_e <- 0.1 # environmental variability
sigma_d <- 1.0 # demographic variability
N0 <- 50 # starting population
T <- 100 # time steps
R <- 500 # number of simulations
ext_thresh <- 50 # extinction threshold
# Function to simulate one trajectory
simulate_one <- function(N0, mu, sigma_e, sigma_d, T) {
N <- numeric(T + 1)
N[1] <- N0
for (t in 1:T) {
var_lambda <- sigma_e^2 + sigma_d^2 / max(N[t], 1e-6)
lambda_t <- rnorm(1, mu, sqrt(var_lambda))
N[t + 1] <- max(lambda_t * N[t], 0)
}
N
}
# Run simulations
Nmat <- replicate(R, simulate_one(N0, mu, sigma_e, sigma_d, T))
# Probability of extirpation
extirpated <- colSums(Nmat <= ext_thresh) > 0
p_extirp <- mean(extirpated)
cat("Estimated probability of extirpation =", round(p_extirp, 3), "\n")
###Estimated probability of extirpation = 0.214
# Plot example trajectories
matplot(0:T, Nmat[, 1:20], type = "l", lty = 1, col = rgb(0,0,1,0.3),
xlab = "Time (t)", ylab = "Population size (N)",
main = "Stochastic Population Dynamics")
abline(h = ext_thresh, col = "red", lwd = 2)
legend("topright", legend = c("Extinction threshold"), col = "red", lty = 1)