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.
FishPar): Quantifies parameter uncertainty (Tier
1: Monte Carlo on allometric regressions), catch sampling variability
(Tier 2: bootstrap resampling), and joint total uncertainty (Tier
3).FrequencyTable): Automatically selects biological
length class intervals using the Optimum Bin Size (OBS) formula of Wang
et al. (2020).FreqTM):
Aggregates multi-temporal catch data into consistent, date-indexed
length classes across months.FishSS):
Determines probabilities of falling below target and limit spawning
biomass reference points using Cope & Punt (2009) look-up tables
with robust objective trigger logic.LWR): Fits
power-law length–weight relationships (\(W = a
\cdot L^b\)) via log-log linear models with publication-ready
diagnostic plots.save_output = FALSE across functions to avoid unauthorized
disk writes during standard evaluation.| 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 |
Install the released stable version from CRAN:
install.packages("aLBI")Install the development version from GitHub:
# install.packages("devtools")
devtools::install_github("Ataher76/aLBI")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)# 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# 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# 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_summaryFishPar handles the non-differentiable step-function
transitions across length class bins by reporting three separate
uncertainty tiers:
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}
}This package is licensed under the GNU General Public License v3.0 (GPL-3).