# salmon matrix model with density dependence on egg survival # Ratner, S., Lande, R. and Roper, B. B. (1997), # Population Viability Analysis of Spring Chinook Salmon # in the South Umpqua River, Oregon. Conservation Biology, # 11: 879\u2013889. # doi: 10.1046/j.1523-1739.1997.95457.x # first, examine relationship between egg survival and egg number # density-dependent egg survival parameter beta <- 0.001 # maximum egg survival s0.max <- 0.002267 # egg number variable eggs <- 1:5000 s0.adj <- s0.max / (1 + beta * eggs) plot(eggs, s0.adj, 'l', xlab = 'Number of eggs', ylab = 'realized egg survival rate') plot(eggs, eggs * s0.adj, 'l', xlab = 'Number of eggs', ylab = 'Number of eggs surviving') # now use those relationships in matrix model # NOTE: model is useful for projection but not eigen analysis # age specific survival rates s0.max <- 0.002267 # maximum egg survival s1 <- 0.8 s2 <- 0.8 s3 <- 0.8 s4 <- 0.8 # probability of breeding at each age b1 <- 0 b2 <- 0 b3 <- 0.112 b4 <- 0.532 b5 <- 1 # eggs per breeding female f1 <- 0 f2 <- 0 f3 <- 3185 f4 <- 3940 f5 <- 4336 tmax <- 20 # time horizon n0 <- c(0.7667, 0.6163, 0.4945, 0.3524, 0.1309) # initial pop. vector n <- matrix(NA, tmax, 5) n[1,] <- n0 # Start at initial pop. vector, for (yr in 2:tmax) { A <- matrix(0, nrow = 5, ncol = 5) EggNum <- b3*f3*n[(yr - 1), 3] + b4*f4*n[(yr - 1), 4] + b5*f5*n[(yr - 1), 5] s0.rzd <- s0.max / (1 + beta*EggNum) A[1, ] <- c(0, 0, b3*f3*s0.rzd, # Beverton-Holt function b4*f4*s0.rzd, b5*f5*s0.rzd) A[2,1] <- s1 A[3,2] <- s2 A[4,3] <- s3*(1 - b3) # can only live if DON'T spawn A[5,4] <- s4*(1 - b4) # can only live if DON'T spawn A[5,5] <- 0 # all 5-yr olds spawn, i.e., b5 <- 1 n[yr, ] <- A %*% n[(yr - 1), ] } N <- apply(n, 1, sum) plot(1:tmax, N, 'l', ylim = c(0, max(N)), xlab = 'year') # plot no. of spawners vs. year spawners <- apply(n[, 3:5], 1, sum) lines(1:tmax, spawners, 'l', col = 'blue', lty = 3)