| SRModels {FLCore} | R Documentation |
A range of stock-recruitment (SR) models commonly used in fisheries science are provided in FLCore.
Each method is defined as a function returning a list with one or more elements as follows:
fmle).fmle or nls. If required, this function also have
two attributes, lower and upper, that give lower and upper limits for
the parameter values, respectively. This is used by some of the methods defined in
optim, like "L-BFGS-B".FLModel-class can then be called with
value being a list thus described, the name of the function returning such a
list, or the function itself. See the examples below.
bevholt()
bevholt.ar1()
bevholt.c.a()
bevholt.c.b()
bevholt.d()
bevholt.ndc()
bevholt.sv()
geomean()
logl.ar1(rho, sigma2, obs, hat)
ricker()
ricker.ar1()
ricker.c.a()
ricker.c.b()
ricker.d()
ricker.sv()
segreg()
shepherd()
shepherd.ar1()
shepherd.d()
shepherd.d.ar1()
shepherd.ndc()
shepherd.ndc.ar1()
sv2ab(steepness, vbiomass, spr0, model)
rho |
Autoregression |
sigma2 |
Autoregression |
obs |
Observed values |
hat |
estimated values |
steepness |
Steepness. |
vbiomass |
Virgin biomass. |
spr0 |
Spawners per recruit at F=0, see spr0. |
model |
character vector with model name, either 'bevholt' or 'ricker'. |
Several functions to fit commonly used SR models are available. They all use maximum likelihood to estimate the parameters and except the autoregressive models, all use a normal log distribution for the residuals. Apart from the model equation parameters the variance of the log-residuals is also estimated.
R = alpha*S / (beta + S)
'a' is the maximum recruitment (asymptotically) and 'b' is the stock level needed to produce the half of maximum recruitment a/2. (a, b >0).
R = (R_1*R_2*...*R_n)^(1/n) = exp(mean(log(R_1) + ... + log(R_n)))
R = a*S*exp(-b*S)
'a' is related to productivity and 'b' to density dependence. 'a' is the recruit per stock unit at small stock levels. (a, b > 0).
R = ifelse(S <= b, a*S, a*b)
'a' is the slope of the recruitment for stock levels below 'b', and a*b is the mean recruitment for stock levels above 'b'. (a, b > 0).
R = a * S/(1 + (S/b)^c)
R = a*(1 - c*X)*S / (b + S)
R = a*S / (b*(1 - c*X) + S)
R = a*(1-c*X)*S*e^{-b*S}
R = a*S*e^{-b*(1-c*X)*S}
Depensatory models for Beverton and Holt, Ricker and Shepherd models:
R = a*S^c / (b + S^c)
0< a, b, c < 'Inf'.
R = a*S^(1 + c) / (b + S^(1 + c))
0< a, b< 'Inf' and -0.5 < c < 0.5.
R = a*S^c*e^{-b*S}
R = a * S^2/(1 + (S /b)^c)
R = a * (S - d)/(1 + ((S - d) /b)^c)
Beverton and Holt and Ricker stock recruitment models parameterized for steepness and virgin biomass:
a = vbiomass*4*steepness/(spr0*(5*steepness-1.0))
b = a*spr0*(1.0 /steepness - 1.0)/4.0
a = exp(b*vbiomass)/spr0
b = log(5*steepness) /(vbiomass*0.8)
Models fitted using autoregressive residuals of first order:
x_t = rho*x_t-1 + e
Where 'e' follows a normal distribution with mean 0, e ~ N(0, sigma_ar^2).
Some additional useful functions:
Beverton and Holt:
a = frac{4 cdot vbiomass cdot steepness}{spr0*(5*steepness-1)}
{a = vbiomass*4*steepness/(spr0*(5*steepness-1))}
b = frac{a cdot spr0 (frac{1}{steepness} - 1)}{4}
{b = a*spr0*(1/steepness - 1)/4}
Ricker:
a = exp(b*vbiomass)/spr0
b = frac{log(5 cdot steepness)}{0.8 cdot vbiomass}
{b = log(5*steepness)/(vbiomass*0.8)}
Beverton and Holt:
steepness = frac{a cdot spr0}{4 cdot b + a cdot spr0}
{steepness = a*spr0/(4*b+a*spr0)}
vbiomass = (spr0*a*(5*steepness - 1))/(4*steepness)
Ricker:
steepness = 0.2 e^{0.8 cdot b cdot vbiomass}
{steepness = 0.2*exp(b*vbiomass*0.8)}
vbiomass = log(spr0*a)/b
The FLR Team
Beverton, R.J.H. and Holt, S.J. (1957) On the dynamics of exploited fish populations. MAFF Fish. Invest., Ser: II 19, 533.
Needle, C.L. Recruitment models: diagnosis and prognosis. Reviews in Fish Biology and Fisheries 11: 95-111, 2002.
Ricker, W.E. (1954) Stock and recruitment. J. Fish. Res. Bd Can. 11, 559-623.
Shepherd, J.G. (1982) A versatile new stock-recruitment relationship for fisheries and the construction of sustainable yield curves. J. Cons. Int. Explor. Mer 40, 67-75.
# inspect the output of one of the model functions bevholt() names(bevholt()) bevholt()$logl # once an FLSR model is in the workspace ... data(nsher) # the three model-definition slots can be modified # at once by calling 'model<-' with # (1) a list model(nsher) <- bevholt() # (2) a function returning such a list model(nsher) <- bevholt # or (3) the name of such a function model(nsher) <- 'bevholt'