Class for stock-recruitment models.
FLSR(model, ...)
# S4 method for ANY
FLSR(model, ...)
# S4 method for missing
FLSR(model, ...)
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.
Name of the object (character
).
Description of the object (character
).
Range (numeric
).
Recruitment series (FLQuant
).
Index of reproductive potential, e.g. SSB or egg oor egg production (FLQuant
).
Estimated values for rec (FLQuant
).
Residuals obtained from the model fit (FLArray
).
Covariates for SR model (FLQuants
).
Model formula (formula
).
Function returning the gradient of the likelihood (function
).
Log-likelihood function (function
).
Function returning initial parameter values for the optimizer (function
).
Estimated parameter values (FLPar
).
Value of the log-likelihood (logLik
).
Variance-covariance matrix (array
).
Extra information on the model fit procedure (list
).
Is the error on a log scale (logical
).
(factor
).
Resulting Hessian matrix from the fit (array
).
# 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: 0x557227629738>
sr2@initial
#> function(rec, ssb) {
#> # 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])))}
#> <bytecode: 0x557227621ee0>
#> <environment: 0x557227629738>
#> 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)))
#> <bytecode: 0x557227620370>
#> <environment: 0x557227629738>
sr3 <- FLSR(model = 'bevholt')
sr3@model
#> rec ~ a * ssb/(b + ssb)
#> <environment: 0x557227acabf0>
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))}
#> <bytecode: 0x557227ac3240>
#> <environment: 0x557227acabf0>
#> 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)))
#> <bytecode: 0x557227abd730>
#> <environment: 0x557227acabf0>
# 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 = 300009.608149
#> Scaled convergence tolerance is 0.00447049
#> Stepsize computed as 10894.415305
#> BUILD 4 35604233172799.054688 246594.512118
#> LO-REDUCTION 6 8027994845809.416992 246594.512118
#> HI-REDUCTION 8 2039725245416.724609 246594.512118
#> HI-REDUCTION 10 513931463016.055481 246594.512118
#> HI-REDUCTION 12 128892303912.929276 246594.512118
#> HI-REDUCTION 14 32226144724.193943 246594.512118
#> HI-REDUCTION 16 8032781791.753624 246594.512118
#> HI-REDUCTION 18 1993248612.371147 246594.512118
#> HI-REDUCTION 20 490557443.511403 246594.512118
#> HI-REDUCTION 22 118829945.657251 246594.512118
#> HI-REDUCTION 24 27914415.365704 246594.512118
#> HI-REDUCTION 26 6199169.697422 246594.512118
#> HI-REDUCTION 28 1277860.003481 246594.512118
#> HI-REDUCTION 30 419003.785329 246594.512118
#> REFLECTION 32 301368.860949 169563.447589
#> HI-REDUCTION 34 300009.608149 169563.447589
#> LO-REDUCTION 36 246594.512118 154961.674216
#> HI-REDUCTION 38 176793.742088 153601.478392
#> EXTENSION 40 169563.447589 96638.628829
#> LO-REDUCTION 42 154961.674216 96638.628829
#> LO-REDUCTION 44 153601.478392 96638.628829
#> EXTENSION 46 119295.008370 66080.769087
#> EXTENSION 48 115364.613500 56420.892581
#> LO-REDUCTION 50 96638.628829 56420.892581
#> LO-REDUCTION 52 77531.719425 56420.892581
#> EXTENSION 54 66080.769087 37593.887867
#> LO-REDUCTION 56 61167.866773 37593.887867
#> EXTENSION 58 56420.892581 29758.469273
#> REFLECTION 60 38434.634697 19972.061004
#> HI-REDUCTION 62 37593.887867 19972.061004
#> EXTENSION 64 29758.469273 13292.146429
#> EXTENSION 66 27552.362509 2764.858404
#> LO-REDUCTION 68 19972.061004 2764.858404
#> LO-REDUCTION 70 13292.146429 2764.858404
#> REFLECTION 72 8828.272171 147.072099
#> LO-REDUCTION 74 3014.837648 147.072099
#> HI-REDUCTION 76 2764.858404 147.072099
#> HI-REDUCTION 78 584.469211 147.072099
#> HI-REDUCTION 80 499.581626 143.777028
#> HI-REDUCTION 82 461.176536 108.387971
#> LO-REDUCTION 84 164.272917 108.387971
#> HI-REDUCTION 86 147.072099 91.756835
#> HI-REDUCTION 88 143.777028 77.062808
#> HI-REDUCTION 90 108.387971 77.062808
#> LO-REDUCTION 92 91.756835 71.331379
#> HI-REDUCTION 94 80.893401 71.331379
#> HI-REDUCTION 96 77.062808 71.331379
#> HI-REDUCTION 98 74.333977 69.116436
#> LO-REDUCTION 100 71.388240 69.116436
#> LO-REDUCTION 102 71.331379 69.116436
#> HI-REDUCTION 104 70.398595 69.116436
#> LO-REDUCTION 106 69.486916 68.672613
#> HI-REDUCTION 108 69.468860 68.672613
#> LO-REDUCTION 110 69.116436 68.672613
#> LO-REDUCTION 112 68.787389 68.548236
#> HI-REDUCTION 114 68.732991 68.548236
#> HI-REDUCTION 116 68.672613 68.548236
#> LO-REDUCTION 118 68.568859 68.524579
#> REFLECTION 120 68.548520 68.481495
#> HI-REDUCTION 122 68.548236 68.481495
#> LO-REDUCTION 124 68.524579 68.479702
#> HI-REDUCTION 126 68.498588 68.479702
#> REFLECTION 128 68.488963 68.471117
#> LO-REDUCTION 130 68.481495 68.471117
#> EXTENSION 132 68.479702 68.466844
#> LO-REDUCTION 134 68.478520 68.466844
#> Exiting from Nelder Mead minimizer
#> 136 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
#>
#>
#> Model: rec ~ a * ssb * exp(-b * ssb)
#> 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)