This is a manual for the Legnth-based Bayesian biomass estimator method (LBB) by Froese et al. (2018). LBB is a new method for the analysis of length frequency data from the commercial fishery. It works for species that grow throughout their lives, such as most commercially-important fish and invertebrate species, and requires no input in addition to length frequency data (except length at maturity and priors on life history parameters). LBB estimates asymptotic length (\(L_{inf}\)), length at first capture (\(L_c\)), relative natural mortality (\(M/K\)) and relative fishing mortality (\(F/M\)) as means over the age range represented in the length-frequency sample. With these parameters as input, standard fisheries equations can be used to estimate depletion or current exploited biomass relative to unexploited biomass (\(B/B_0\)). In addition, these parameters allow the estimation of the length at first capture that would maximize catch and biomass for the given fishing effort (\(Lc_{opt}\)), and estimation of a proxy for the relative biomass capable of producing maximum sustainable yields (\(B_{msy}/B_0\)). Relative biomass estimates of LBB were not significantly different from the “true” values in simulated data and similar to independent estimates from full stock assessments. This document provides a simple step-by-step guide for researchers who want to apply LBB to their own data using TropFishR. The LBB version referred to in this guide is included in TropFishR (v1.6), which is the one used in Froese et al. (2018).
In addition to R, LBB requires the Gibbs sampler JAGS, which can be installed for your Operating System from this web site.
LBB uses functions from additional R-packages (R2jags, Hmisc, rjags, and coda). These packages are installed and loaded automatically with the installation of TropFishR
. Following the installation of JAGS, the current version of TropFishR (v1.6) can be installed from CRAN as follows:
install.packages("TropFishR", repos = "https://cran.rstudio.com/")
The package is loaded into the R environment with:
library(TropFishR)
Now, all required packages are installed and loaded into the R environment and we can start the analysis.
One of the most common software for tabulated visualisation and modification of ecological data is Microsoft Excel. It is straight-forward to load a .csv or .xls(x) file containing your data into R. This step is described in detail in the lfq data tutorial. For illustrating the use of the functions and the interpretation of results, we use here the simulated example data set “synLFQ8” included in TropFishR
. This data set can be loaded into the R enviornment and plotted with:
## load data set into R environment
data("synLFQ8")
## plot length-frequency data
plot(synLFQ8, Fname = "catch")
For the purpose of this manual we want to demonstrate the use of LBB with yearly aggregated length-frequency data. We, thus, use the function lfqModify to aggregate the data and assign the yearly length-frequency data to an object called ‘lfq’:
## aggregate lfq data per year
lfq <- lfqModify(synLFQ8, aggregate = "year")
As with any analysis, it is important to first examine the data visually. This can be done with the standard TropFishR
function for plotting length-frequency data:
## plot lfq data in standard TropFishR manner
plot(lfq, Fname = "catch")
Additionally, the function ‘plotLBB.data’ allows to visualise the data in the LBB manner:
## plot data in LBB manner
plotLBB.data(lfq)
LBB can use additional information about the length at maturity, which can be added to the lfq object with:
## add length at maturity to lfq data
lfq$Lm50 <- 38
The function ‘LBB’ is the core of the assessment method, which calls the function ‘jags’ from the R2jags package. Using the argument plot = TRUE
, the function will include a display of yearly assessment graphs in the output. The arguments startYear
, endYear
, and years
allow the user to specify a subset of years to include in the assessment. The argument GausSel
allows to assess the data assuming a gaussian shaped gear selectivity curve (if TRUE
) or a trawl-like gear selectivity curve (if FALSE
). The arguments containing ‘User
’ in their name (e.g. LinfUser
) allow to specify parameters and priors manually. More information to individual function arguments can be found in the help documentation (‘help(LBB)’). Depending on the number of years in the data set the assessment can take a few seconds.
## run LBB model
res <- LBB(lfq, plot = TRUE)
#> Running Jags model to fit SL and N distributions for Synthetic Species 8
#> in 2014 2015 2016 2017 ....
#> Compiling model graph
#> Resolving undeclared variables
#> Allocating nodes
#> Graph information:
#> Observed stochastic nodes: 1
#> Unobserved stochastic nodes: 6
#> Total graph size: 565
#>
#> Initializing model
#> Compiling model graph
#> Resolving undeclared variables
#> Allocating nodes
#> Graph information:
#> Observed stochastic nodes: 1
#> Unobserved stochastic nodes: 6
#> Total graph size: 613
#>
#> Initializing model
#> Compiling model graph
#> Resolving undeclared variables
#> Allocating nodes
#> Graph information:
#> Observed stochastic nodes: 1
#> Unobserved stochastic nodes: 6
#> Total graph size: 581
#>
#> Initializing model
#> Compiling model graph
#> Resolving undeclared variables
#> Allocating nodes
#> Graph information:
#> Observed stochastic nodes: 1
#> Unobserved stochastic nodes: 6
#> Total graph size: 581
#>
#> Initializing model
#>
#> ----------------------------------------------------------------------
#> Results for Synthetic Species 8 , stock Synthetic Stock 8 , 2014 - 2017
#> -----------------------------------------------------------------------
#> Linf prior = 99.6 , SD = 0.996 (cm)
#> Z/K prior = 3.116532 , SD = 1.313404 , M/K prior = 1.5 , SD = 0.15
#> F/K prior = 1.616532 (wide range with tau=4 in log-normal distribution)
#> Lc prior = 21.42 , SD = 2.142 (cm) , alpha prior= 36.83878 , SD = 3.683878
#>
#> General reference points [median across years]:
#> Linf = 96.7 (94.8-98.6) cm
#> Lopt = 65 cm, Lopt/Linf = 0.67
#> Lc_opt = 54 cm, Lc_opt/Linf = 0.56
#> M/K = 1.45 (1.17-1.7)
#> F/K = 1.43 (1.16-1.78)
#> Z/K = 2.88 (2.72-3.04)
#> F/M = 0.976 (0.671-1.46)
#> B/B0 F=M Lc=Lc_opt = 0.368
#> B/B0 = 0.264 (0.136-0.436)
#> Y/R' F=M Lc=Lc_opt = 0.0484
#> Y/R' = 0.0325 (0.0138-0.0535) (linearly reduced if B/B0 < 0.25)
#>
#> Estimates for last year 2017 :
#> Lc = 22.4 (21.9-22.8) cm, Lc/Linf = 0.24 (0.231-0.24)
#> alpha = 33.3 ( 31.6 - 35.3 )
#> Lmean/Lopt = 0.65 , Lc/Lc_opt = 0.41 , L95th = 83 cm , L95th/Linf = 0.87 ,
#> Lm50 = 38 cm , Mature = 56 %
#> F/K = 0.43 ( 0.238 - 0.577 )
#> F/M = 0.37 ( 0.189 - 0.584 )
#> Z/K = 1.56 ( 1.43 - 1.7 )
#> Y/R' = 0.043 ( 0.013 - 0.0729 ) (linearly reduced if B/B0 < 0.25)
#> B/B0 = 0.54 ( 0.165 - 0.925 )
#> B/Bmsy = 1.5 ( 0.448 - 2.51 )
res
) contain following elements:
Beside the graphs with the results for each assessment year, the function ‘plotLBB’ allows to visualise the aggregated results over all assessment years:
par(cex=0.7)
## plot results
plotLBB(res)
The plot is comparable to the single yearly plots, but show the aggregated data and results. The function ‘plotLBB.ts’ plots the main parameters/reference levels and associated uncertainty as a function of the assessment year:
## plot results as time series
plotLBB.ts(res)
The time series plot shows \(Lmean\) (bold black curve) relative to \(Lopt\), and \(Lc\) (dashed black curve) relative to \(Lc_{opt}\) (left panel). The middle panel shows relative fishing pressure \(F/M\) (black curve), with approximate 95% confidence limits (dotted curves), with indication of the reference level where \(F = M\) (green horizontal line). The right panel shows relative biomass \(B/B0\) (black curve) with approximate 95% confidence limits (dotted black curves), with indication of a proxy for Bmsy (green dashed line) and a proxy for \(Bpa\) or \(0.5 Bmsy\) (red dotted line).
The synthetic data used above simulated a decreasing trend in fishing mortality, thus creating a case where the LBB assumption of more or less constant growth and mortality scehdules was violated, as may be the case in pratical applications. The median asymptotic length as well as median Lopt are with 96.73 cm and 65.29 cm overestimated in comparison to the true values of 80 cm and 53.33 cm, respectively. The estimated M/K
ratio is with 1.45 close to the true value of 1.4. The true parameters F/K
and Z/K
for each assessment year: 2, 1.6, 0.8, 0.2 and 3.4, 3, 2.2, 1.6 are close and for some years within the confidence limits of the estimated ratios: 2.67, 1.89, 0.96, 0.43 and 4.18, 3.42, 2.34, 1.56. Also the relative fishing mortality rate ‘F/M
’ is with 1.75, 1.25, 0.7, 0.37 close to the true values of 1.43, 1.14, 0.57, 0.14, except the last year all true values are contained within the 95% confidence interval. The biomass relative to unexploited biomass ‘B/B0
’ is well estimated by LBB: 0.12, 0.18, 0.34, 0.54 in comparison to the true values, 0.16, 0.21, 0.41, 0.75 and contained within the 95% confidence interval. The decreasing trend in the fishing mortality used for the simulation of the synthetic data set is well identified by LBB and this small examples confirms the positive results presented in Froese et al. (2018).
Froese R, Winker H, Coro G, Demirel N, Tsikliras AC, Dimarchopoulou D, Scarcella G, Probst WN, Dureuil M, and Pauly D (2018). “A new approach for estimating stock status from length frequency data”. ICES Journal of Marine Science. DOI: 10.1093/icesjms/fsy078
Mildenberger TK, Taylor MH and Wolff M (2017). “TropFishR: an R package for fisheries analysis with length-frequency data.” Methods in Ecology and Evolution, 8(11), pp. 1520–1527. ISSN 2041-210X, doi: 10.1111/2041-210X.12791, http://dx.doi.org/10.1111/2041-210X.12791.