aLBI: Length-Based Indicators and Fish Stock Assessment in R

CRAN status License: GPL v3 DOI

aLBI (Assessment of Length-Based Indicators) is an R package developed for data-limited fish stock assessment using catch length-frequency distributions. The package operationalises the sustainability indicators of Froese (2004) and the decision-tree framework of Cope & Punt (2009) to evaluate stock status against target (\(0.40 \cdot SB_0\)) and limit (\(0.25 \cdot SB_0\)) spawning biomass reference points.

To overcome the sensitivity of length-based indicators to class boundary step-functions, aLBI implements a three-tier Monte Carlo and bootstrap uncertainty propagation framework.


Key Features


Function Overview

Function Primary Purpose Key Inputs Key Outputs
FrequencyTable() Constructs length-frequency tables Raw individual fish lengths Binned frequency distribution table ($lfqTable, $lfreq)
FreqTM() Builds multi-month length-frequency tables Monthly length observations Harmonized monthly frequency matrices
FishPar() Calculates reference lengths & Froese indicators Length-frequency table ($lfreq) Three-tier CIs, derived scalars (Pobj, LM_ratio), and diagnostic plots
FishSS() Evaluates stock status & selectivity pattern FishPar outputs + cpdata Biomass probabilities (p_below_target, p_below_limit), selectivity
LWR() Fits length–weight allometric regressions Length and weight vectors Regression coefficients (\(a, b, R^2\)), confidence intervals, ggplot2 object

Installation

Install the released stable version from CRAN:

install.packages("aLBI")

Install the development version from GitHub:

# install.packages("devtools")
devtools::install_github("Ataher76/aLBI")

Sequential Workflow Example

Step 1: Generate Length-Frequency Distribution

library(aLBI)
library(readxl)

# Load bundled raw length data
raw_path <- system.file("exdata", "ExData.xlsx", package = "aLBI")
raw_data <- readxl::read_excel(raw_path)

# Build frequency table using automatic bin sizing (Wang et al., 2020)
freq_res <- FrequencyTable(
  data        = raw_data,
  bin_width   = NULL,
  save_output = FALSE
)

# Extract frequency distribution for FishPar
lf_table <- freq_res$lfreq
head(lf_table)

Step 2: Estimate Reference Lengths & Froese Indicators

# Execute FishPar with Monte Carlo and bootstrap simulations
par_res <- FishPar(
  data        = lf_table,
  resample    = 1000,       # Use >= 5000 for publication
  save_output = FALSE
)

# Biological reference points (Linf, Lmat, Lopt)
par_res$estimated_length_par

# Froese indicators with Tier 3 joint total uncertainty
par_res$froese_par_joint

Step 3: Assess Spawning Biomass Status

# Load Cope & Punt (2009) lookup table
cp_path <- system.file("exdata", "cpdata.xlsx", package = "aLBI")
cp_data <- readxl::read_excel(cp_path)

# Evaluate stock status probabilities
stock_eval <- FishSS(
  data     = cp_data,
  LM_ratio = par_res$LM_ratio,
  Pmat     = par_res$froese_par_joint$Mean[1],
  Popt     = par_res$froese_par_joint$Mean[2],
  Pmega    = par_res$froese_par_joint$Mean[3]
)

# View stock status probabilities and selectivity pattern
stock_eval$StockStatus
stock_eval$Selectivity

Step 4: Length–Weight Relationship Analysis

# Load bundled length-weight data
lw_path <- system.file("exdata", "LWdata.xlsx", package = "aLBI")
lw_data <- readxl::read_excel(lw_path)

# Model LWR with log-log linear regression
lwr_res <- LWR(
  data          = lw_data,
  log_transform = TRUE,
  save_output   = FALSE
)

# Model summary parameters
lwr_res$model_summary

Three-Tier Uncertainty Architecture

FishPar handles the non-differentiable step-function transitions across length class bins by reporting three separate uncertainty tiers:


Citation

To cite aLBI in publications, please refer to the primary methodology paper:

Ali, A., Sarker, M. R., & Alam, M. S. (2025). Development of a simple R package (aLBI) for the estimation of stock status from the length frequency data. Fisheries Research, 288, 107467. https://doi.org/10.1016/j.fishres.2025.107467

@article{ali2025albi,
  title   = {Development of a simple R package (aLBI) for the estimation of stock status from the length frequency data},
  author  = {Ali, Ataher and Sarker, Mohammad Ruhul and Alam, Mohammed Shahidul},
  journal = {Fisheries Research},
  volume  = {288},
  pages   = {107467},
  year    = {2025},
  doi     = {10.1016/j.fishres.2025.107467}
}

Authors & Maintainer


License

This package is licensed under the GNU General Public License v3.0 (GPL-3).