Class for stock-recruitment models.

FLSR(model, ...)

# S4 method for ANY
FLSR(model, ...)

# S4 method for missing
FLSR(model, ...)

Details

A series of commonly-used stock-recruitment models are already available, including the corresponding likelihood functions and calculation of initial values. See SRModels for more details and the exact formulation implemented for each of them.

Slots

name
Name of the object (character).
desc
Description of the object (character).
range
Range (numeric).
rec
Recruitment series (FLQuant).
ssb
Index of reproductive potential, e.g. SSB or egg oor egg production (FLQuant).
fitted
Estimated values for rec (FLQuant).
residuals
Residuals obtained from the model fit (FLArray).
covar
Covariates for SR model (FLQuants).
model
Model formula (formula).
gr
Function returning the gradient of the likelihood (function).
logl
Log-likelihood function (function).
initial
Function returning initial parameter values for the optimizer (function).
params
Estimated parameter values (FLPar).
logLik
Value of the log-likelihood (logLik).
vcov
Variance-covariance matrix (array).
details
Extra information on the model fit procedure (list).
logerror
Is the error on a log scale (logical).
distribution
(factor).
hessian
Resulting Hessian matrix from the fit (array).

See also

FLModel, FLComp

Examples

# Create an empty FLSR object. sr1 <- FLSR() # Create an FLSR object using the existing SR models. sr2 <- FLSR(model = 'ricker') sr2@model
#> rec ~ a * ssb * exp(-b * ssb) #> <environment: 0x9622fc8>
sr2@initial
#> function(rec, ssb) { #> \t\t# The function to provide initial values #> res <-coefficients(lm(log(c(rec)/c(ssb))~c(ssb))) #> return(FLPar(a=max(exp(res[1])), b=-max(res[2])))} #> <environment: 0x9622fc8> #> attr(,"lower") #> [1] -Inf -Inf #> attr(,"upper") #> [1] Inf Inf
sr2@logl
#> function(a, b, rec, ssb) #> loglAR1(log(rec), log(a*ssb*exp(-b*ssb))) #> <environment: 0x9622fc8>
sr3 <- FLSR(model = 'bevholt') sr3@model
#> rec ~ a * ssb/(b + ssb) #> <environment: 0xcca2148>
sr3@initial
#> function(rec, ssb) { #> a <- max(quantile(c(rec), 0.75, na.rm = TRUE)) #> b <- max(quantile(c(rec)/c(ssb), 0.9, na.rm = TRUE)) #> return(FLPar(a = a, b = a/b))} #> <environment: 0xcca2148> #> attr(,"lower") #> [1] -Inf -Inf #> attr(,"upper") #> [1] Inf Inf
sr3@logl
#> function(a, b, rec, ssb) #> loglAR1(log(rec), log(a*ssb/(b+ssb))) #> <environment: 0xcca2148>
# Create an FLSR using a function. mysr1 <- function(){ model <- rec ~ a*ssb^b return(list(model = model))} sr4 <- FLSR(model = mysr1) # Create an FLSR using a function and check that it works. mysr2 <- function(){ formula <- rec ~ a+ssb*b logl <- function(a, b, sigma, rec, ssb) sum(dnorm(rec, a + ssb*b, sqrt(sigma), TRUE)) initial <- structure(function(rec, ssb) { a <- mean(rec) b <- 1 sigma <- sqrt(var(rec)) return(list(a=a, b=b, sigma=sigma))}, lower = c(0, 1e-04, 1e-04), upper = rep(Inf, 3)) return(list(model = formula, initial = initial, logl = logl)) } ssb <- FLQuant(runif(10, 10000, 100000)) rec <- 10000 + 2*ssb + rnorm(10,0,1) sr5 <- FLSR(model = mysr2, ssb = ssb, rec = rec) sr5.mle <- fmle(sr5)
#> Nelder-Mead direct search function minimizer #> function value for initial parameters = 349893.904305 #> Scaled convergence tolerance is 0.00521383 #> Stepsize computed as 12557.496732 #> BUILD 4 55170133343738.812500 288398.015430 #> LO-REDUCTION 6 12459360327477.355469 288398.015430 #> HI-REDUCTION 8 3164998231696.320312 288398.015430 #> HI-REDUCTION 10 797415015345.800537 288398.015430 #> HI-REDUCTION 12 200004028731.880310 288398.015430 #> HI-REDUCTION 14 50017802213.222160 288398.015430 #> HI-REDUCTION 16 12474145848.289600 288398.015430 #> HI-REDUCTION 18 3098648949.687170 288398.015430 #> HI-REDUCTION 20 764245712.710911 288398.015430 #> HI-REDUCTION 22 185914232.171628 288398.015430 #> HI-REDUCTION 24 44032820.624477 288398.015430 #> HI-REDUCTION 26 9921550.369810 288398.015430 #> HI-REDUCTION 28 2074318.543296 288398.015430 #> HI-REDUCTION 30 486537.291238 288398.015430 #> REFLECTION 32 452934.023748 236387.694152 #> HI-REDUCTION 34 349893.904305 226690.013670 #> LO-REDUCTION 36 288398.015430 208016.271560 #> HI-REDUCTION 38 236387.694152 175145.249642 #> LO-REDUCTION 40 226690.013670 175145.249642 #> EXTENSION 42 208016.271560 149528.967490 #> HI-REDUCTION 44 187655.119360 149528.967490 #> EXTENSION 46 175145.249642 124043.552584 #> EXTENSION 48 167599.625752 85451.402822 #> LO-REDUCTION 50 149528.967490 85451.402822 #> EXTENSION 52 124043.552584 60584.001312 #> EXTENSION 54 121318.054285 45104.448830 #> EXTENSION 56 85451.402822 8695.558247 #> LO-REDUCTION 58 60584.001312 8695.558247 #> EXTENSION 60 45104.448830 3374.562279 #> LO-REDUCTION 62 19191.633189 2021.980379 #> LO-REDUCTION 64 8695.558247 234.110541 #> HI-REDUCTION 66 3374.562279 234.110541 #> LO-REDUCTION 68 2021.980379 234.110541 #> LO-REDUCTION 70 1661.597188 234.110541 #> LO-REDUCTION 72 679.208238 178.520564 #> LO-REDUCTION 74 398.465536 178.520564 #> HI-REDUCTION 76 234.110541 91.386608 #> LO-REDUCTION 78 191.339622 90.639986 #> HI-REDUCTION 80 178.520564 90.639986 #> LO-REDUCTION 82 95.694193 88.740478 #> HI-REDUCTION 84 91.386608 73.215279 #> LO-REDUCTION 86 90.639986 73.215279 #> HI-REDUCTION 88 88.740478 73.215279 #> HI-REDUCTION 90 74.608858 73.215279 #> HI-REDUCTION 92 74.050432 72.153989 #> HI-REDUCTION 94 73.776584 71.794139 #> LO-REDUCTION 96 73.215279 71.794139 #> LO-REDUCTION 98 72.153989 71.794139 #> HI-REDUCTION 100 71.955043 71.677937 #> HI-REDUCTION 102 71.835189 71.677937 #> LO-REDUCTION 104 71.794139 71.670961 #> HI-REDUCTION 106 71.711526 71.657414 #> REFLECTION 108 71.677937 71.645888 #> LO-REDUCTION 110 71.670961 71.629866 #> LO-REDUCTION 112 71.657414 71.620555 #> LO-REDUCTION 114 71.645888 71.620555 #> HI-REDUCTION 116 71.629866 71.620063 #> HI-REDUCTION 118 71.622576 71.615699 #> HI-REDUCTION 120 71.620555 71.615169 #> HI-REDUCTION 122 71.620063 71.614136 #> Exiting from Nelder Mead minimizer #> 124 function evaluations used
sr5.nls <- nls(sr5) # NS Herring stock-recruitment dataset data(nsher) # already fitted with a Ricker SR model summary(nsher)
#> An object of class "FLSR" #> #> Name: #> Description: #> Quant: age #> Dims: age year unit season area iter #> 1 45 1 1 1 1 #> #> Range: min minyear max maxyear #> 0 1960 0 2004 #> #> rec : [ 1 45 1 1 1 1 ], units = 10^3 #> ssb : [ 1 45 1 1 1 1 ], units = t*10^3 #> residuals : [ 1 45 1 1 1 1 ], units = NA #> fitted : [ 1 45 1 1 1 1 ], units = 10^3 #> #> Model: rec ~ a * ssb * exp(-b * ssb) #> Parameters: #> params #> iter a b #> 1 119 0.00945 #> Log-likelihood: 15.862(0) #> Variance-covariance: #> a b #> a 255.3388181 1.808870e-02 #> b 0.0180887 1.992659e-06
plot(nsher)
# change model model(nsher) <- bevholt() # fit through MLE nsher <- fmle(nsher)
#> Nelder-Mead direct search function minimizer #> function value for initial parameters = -10.336211 #> Scaled convergence tolerance is 1.54022e-07 #> Stepsize computed as 501.110000 #> BUILD 3 44.842344 -11.603908
#> Warning: NaNs produced
#> HI-REDUCTION 5 31.685209 -11.603908
#> Warning: NaNs produced
#> HI-REDUCTION 7 17.913114 -11.603908
#> Warning: NaNs produced
#> HI-REDUCTION 9 5.415279 -11.603908
#> Warning: NaNs produced
#> HI-REDUCTION 11 -3.412974 -11.603908 #> HI-REDUCTION 13 -8.018030 -11.603908 #> LO-REDUCTION 15 -10.336211 -11.603908 #> LO-REDUCTION 17 -11.081040 -11.603908 #> EXTENSION 19 -11.295930 -12.061705 #> LO-REDUCTION 21 -11.603908 -12.061705 #> REFLECTION 23 -11.813826 -12.087620 #> REFLECTION 25 -12.061705 -12.199591 #> LO-REDUCTION 27 -12.087620 -12.199591 #> LO-REDUCTION 29 -12.158184 -12.199591 #> LO-REDUCTION 31 -12.191726 -12.199591 #> HI-REDUCTION 33 -12.192269 -12.199591 #> HI-REDUCTION 35 -12.197784 -12.199591 #> LO-REDUCTION 37 -12.198015 -12.199591 #> HI-REDUCTION 39 -12.199555 -12.199776 #> REFLECTION 41 -12.199591 -12.200058 #> HI-REDUCTION 43 -12.199776 -12.200092 #> HI-REDUCTION 45 -12.200058 -12.200142 #> HI-REDUCTION 47 -12.200092 -12.200155 #> HI-REDUCTION 49 -12.200142 -12.200160 #> HI-REDUCTION 51 -12.200155 -12.200177 #> HI-REDUCTION 53 -12.200160 -12.200177 #> LO-REDUCTION 55 -12.200171 -12.200179 #> HI-REDUCTION 57 -12.200177 -12.200179 #> HI-REDUCTION 59 -12.200178 -12.200179 #> HI-REDUCTION 61 -12.200179 -12.200179 #> HI-REDUCTION 63 -12.200179 -12.200179 #> HI-REDUCTION 65 -12.200179 -12.200179 #> Exiting from Nelder Mead minimizer #> 67 function evaluations used
plot(nsher)