Snowshoe Hare Population Data

Below is a simplified example of oscillating population growth using the snowshoe hare population data from the Hudson’s Bay Company records, which tracked the number of pelts traded over several decades. The data shows cyclical population dynamics, often interpreted as a result of predator-prey interactions with the lynx.

# Year and Population Data
year <- c(1845, 1850, 1855, 1860, 1865, 1870, 1875, 1880, 1885, 1890, 1895, 1900, 1905, 1910, 1915, 1920)
hare_population <- c(30, 60, 120, 100, 80, 40, 20, 10, 30, 60, 120, 100, 80, 40, 20, 10)

# Plotting the Data
plot(year, hare_population, type="o", main="Oscillating Population Growth of Snowshoe Hare", 
     xlab="Year", ylab="Hare Population (Thousands)", pch=19, col="darkgreen", lwd=2)

# Adding a line to emphasize the oscillations
lines(year, hare_population, col="darkgreen", lwd=2)

We can model the snowshoe hare population dynamics using the delayed density dependence equation similar to the Ricker model we discussed. We’ll use the hare population data provided earlier as a starting point and apply the delayed density dependence model to simulate the population over time.

# Parameters
r <- 1.5   # Intrinsic growth rate (adjustable)
K <- 120   # Carrying capacity based on the peak population observed (in thousands)
tau <- 3   # Time delay in years (adjustable)
generations <- 16  # Number of data points available in the original data (years)

# Initial population data (from historical records)
year <- c(1845, 1850, 1855, 1860, 1865, 1870, 1875, 1880, 1885, 1890, 1895, 1900, 1905, 1910, 1915, 1920)
hare_population <- c(30, 60, 120, 100, 80, 40, 20, 10, 30, 60, 120, 100, 80, 40, 20, 10)

# Initializing the population vector
N <- numeric(generations)
N[1:tau] <- hare_population[1:tau]  # Initialize with the first few years of data

# Simulating the delayed density dependence
for (t in (tau + 1):generations) {
  N[t] <- N[t - 1] * exp(r * (1 - N[t - tau] / K))
}

# Plotting the observed vs. modeled population
plot(year, hare_population, type="o", col="darkgreen", lwd=2, pch=19,
     main="Snowshoe Hare Population Dynamics with Delayed Density Dependence",
     xlab="Year", ylab="Hare Population (Thousands)")
lines(year, N, type="o", col="blue", lwd=2)
legend("topright", legend=c("Observed", "Modeled"), col=c("darkgreen", "blue"), lwd=2, pch=19)

Explanation of the Script Parameters:

r (Intrinsic Growth Rate): Set to 1.5. You can adjust this value to see how it affects the model. K (Carrying Capacity): Set to 120, based on the peak population observed in the data. τ (Time Delay): Set to 3 years. This represents the delay in the population’s response to its density. Initial Population:

The initial population values for the first Ï„ years are taken directly from the historical data. Simulation:

From year Ï„+1 onward, the population is calculated using the delayed density dependence equation. This models the population at time t based on the population at time t-Ï„. Plot:

The plot shows the observed population data (in green) alongside the modeled population using the delayed density dependence (in blue). Expected Outcome The plot will show how well the delayed density dependence model fits the observed hare population data. If the model parameters (r, K, Ï„) are well-chosen, the blue line (modeled population) should approximate the oscillations seen in the green line (observed population).

Adjustments You may want to experiment with the parameters r, K, and Ï„ to get the best fit for the observed data. By tweaking these parameters, you can model different dynamics and better understand how delayed density dependence might drive the oscillations in the snowshoe hare population.

# Parameters
r <- 0.85   # Intrinsic growth rate (adjustable)
K <- 120   # Carrying capacity based on the peak population observed (in thousands)
tau <- 2   # Time delay in years (adjustable)
generations <- 16  # Number of data points available in the original data (years)

# Initial population data (from historical records)
year <- c(1845, 1850, 1855, 1860, 1865, 1870, 1875, 1880, 1885, 1890, 1895, 1900, 1905, 1910, 1915, 1920)
hare_population <- c(30, 60, 120, 100, 80, 40, 20, 10, 30, 60, 120, 100, 80, 40, 20, 10)

# Initializing the population vector
N <- numeric(generations)
N[1:tau] <- hare_population[1:tau]  # Initialize with the first few years of data

# Simulating the delayed density dependence
for (t in (tau + 1):generations) {
  N[t] <- N[t - 1] * exp(r * (1 - N[t - tau] / K))
}

# Plotting the observed vs. modeled population
plot(year, hare_population, type="o", col="darkgreen", lwd=2, pch=19,
     main="Snowshoe Hare Population Dynamics with Delayed Density Dependence",
     xlab="Year", ylab="Hare Population (Thousands)", ylim = c(0,300))
lines(year, N, type="o", col="blue", lwd=2)
legend("topright", legend=c("Observed", "Modeled"), col=c("darkgreen", "blue"), lwd=2, pch=19)

Better fit of the model with the real data ;-)