aLBI - A Simple R Package for Estimating Length-Based Indicators and Fish Stock Assessment from Length Frequency Data

Ataher Ali

Simple R Package for Fish Stock Assessment

Introduction

The aLBI package provides tools for estimating length-based indicators and assessing fish stock using methods outlined by Cope and Punt (2009) and Froese (2004). These methods are particularly useful in data-limited situations and for providing simple indicators to address overfishing.

Methods

The package includes functions to calculate various length-based indicators and visualize fish stock data. The approaches from Cope and Punt (2009) are used to establish reference points, while Froese (2004)’s indicators help to evaluate overfishing status.

Installation To install the aLBI package from GitHub, follow these steps. Note that devtools is required to install packages from GitHub.

# You can install the package using the following commands in your R session:
# Install devtools if you haven't already
# install.packages("devtools")
# Install the aLBI package from GitHub
# devtools::install_github("Ataher76/aLBI")

Package Management Ensure the required packages are loaded in your R session. The following code checks for package availability and stops execution with a message if a package is missing.

# Check if required packages are installed and load them
# Check if required packages are installed and load them
required_packages <- c("aLBI", "readxl", "devtools")

for (pkg in required_packages) {
  if (!requireNamespace(pkg, quietly = TRUE)) {
    stop(paste("Package", pkg, "is required but not installed. Please install it using install.packages(\"", pkg, "\").", sep = " "))
  }
}

# Load the aLBI package
library(aLBI)
library(readxl)
library(devtools)
#> Loading required package: usethis

Data Preparation Prepare your data in a specific format before using the functions. Ensure the data frame has two columns: Length and Frequency. Here’s an example of how to load and prepare your data using the readxl package:

library(readxl)
# Load your length-frequency data from the system file
lenfreq_path <- system.file("exdata", "LC.xlsx", package = "aLBI")
print(lenfreq_path)  # Check the generated path
#> [1] "C:/Users/User/AppData/Local/Temp/RtmpUPvRAf/Rinst4958c313ca5/aLBI/exdata/LC.xlsx"

if (lenfreq_path == "") {
  stop("The required file LC.xlsx is missing. Please check the inst/extdata directory.")
}

# load the lenght frequency data
lenfreq_data <- readxl::read_excel(lenfreq_path)
print(lenfreq_data)  # check the data 
#> # A tibble: 15 × 2
#>    LengthClass Frequency
#>          <dbl>     <dbl>
#>  1          12        26
#>  2          15       166
#>  3          18       244
#>  4          21       582
#>  5          24       973
#>  6          27      1067
#>  7          30       963
#>  8          33       511
#>  9          36       472
#> 10          39       286
#> 11          42       173
#> 12          45       171
#> 13          48        83
#> 14          51        36
#> 15          54        36
# replace with your data directory

Function: FishPar The FishPar function estimates biological parameters such as Lmax, Linf, Lmat, and Lopt using bootstrapping resampling method.

Arguments

data: A data frame containing Length and Frequency columns. resample: Number of bootstrap resamples. Default is 1000. progress: Logical value indicating whether to show progress. Default is FALSE.

Example

# Running the FishPar function
results <- FishPar(data = lenfreq_data, resample = 1000, progress = FALSE)


# Viewing the results
results$estimated_length_par
#>   Parameter Mean_estimate Lower_CI Upper_CI
#> 1      Lmax      52.51800 45.00000 54.00000
#> 2      Linf      55.28211 47.36842 56.84211
#> 3      Lmat      30.64947 26.68219 31.42811
#> 4      Lopt      32.26450 27.88119 33.12655
#> 5  Lopt_p10      35.49095 30.66930 36.43920
#> 6  Lopt_m10      29.03805 25.09307 29.81389
results$estimated_froese_par
#>   Parameter Estimate
#> 1      Pmat 29.91881
#> 2      Popt 25.46208
#> 3     Pmega 21.09173
results$estimated_freq_par
#>   Parameter Estimate
#> 1      sumT     5789
#> 2   sum_mat     1732
#> 3   sum_opt     1474
#> 4  sum_mega     1221
results$forese_ind_vs_target
#>   Parameters Froese_catch Froese_tar
#> 1       Pmat     29.91881        100
#> 2       Popt     25.46208        100
#> 3      Pmega     21.09173         20
results$LM_ratio
#> [1] 0.9499442
results$Pobj
#> [1] 76.47262

Output The function returns a list with the following components:

estimated_length_par: Data frame of estimated length parameters with confidence intervals. estimated_froese_par: Data frame of estimated Froese indicators. estimated_freq_par: Data frame of frequency parameters. forese_ind_vs_target: Data frame comparing Froese indicators with targets. LM_ratio: Length at maturity ratio. Pobj: Objective percentage combining Pmat, Popt, and Pmega.

Function: FishSS The FishSS function evaluates stock status using criteria based on the estimated parameters.

Arguments data: A data frame of the stock status according to Cope and Punt (2009). LM_ratio: Length at maturity ratio from FishPar function. Pobj: Objective percentage from FishPar function. Pmat: Percentage of mature fish. Popt: Percentage of optimal fish.

Example

# Load the stock status criteria data
cpdata_path <- system.file("exdata", "cpdata.xlsx", package = "aLBI")
print(cpdata_path) #check if the path exist
#> [1] "C:/Users/User/AppData/Local/Temp/RtmpUPvRAf/Rinst4958c313ca5/aLBI/exdata/cpdata.xlsx"

if (cpdata_path == "") {
  stop("The required file cpdata.xlsx is missing. Please check the inst/extdata directory.")
}
# loading the cope and punt table
cpdata <- readxl::read_excel(cpdata_path)
print(cpdata)
#> # A tibble: 21 × 11
#>       Tx     A     B     C     D     E     F     G     H     I     J
#>    <dbl> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl>
#>  1   100     0     0     0     0     0     0     0     0   100   100
#>  2    95     0     0     0     0    22     0    11     0   100    93
#>  3    90     0     0     0     0   100    44    83    22   100    74
#>  4    85     0     0     0     0   100   100   100    67   100    63
#>  5    80     0     0     0     0   100   100   100   100    89    52
#>  6    75     0     0     0     0   100   100   100   100    74    37
#>  7    70     0     0     0     0   100   100   100   100    48    30
#>  8    65     0     0     0     0   100   100   100   100    33    22
#>  9    60     0     0     0     0   100   100   100   100    22    15
#> 10    55     0     0     0     0   100   100   100   100    11     7
#> # ℹ 11 more rows

# Running the FishSS function
stock_status <- FishSS(data = cpdata,
                       LM_ratio = results$LM_ratio,
                       Pobj = results$Pobj,
                       Pmat = results$estimated_froese_par[1, 2],
                       Popt = results$estimated_froese_par[2, 2])

# Viewing the stock status
stock_status
#> $Target_Cols
#>     Tx  B  D
#> 1  100  0  0
#> 2   95  0  0
#> 3   90  0  0
#> 4   85  0  0
#> 5   80  0  0
#> 6   75  0  0
#> 7   70  0  0
#> 8   65  0  0
#> 9   60  0  0
#> 10  55  0  0
#> 11  50  0  0
#> 12  45  0  0
#> 13  40  0  0
#> 14  35  0  0
#> 15  30  7  7
#> 16  25 19 11
#> 17  20 37 22
#> 18  15 52 44
#> 19  10 67 67
#> 20   5 67 67
#> 21   0 67 67
#> 
#> $Target_value
#> [1] 29.91881
#> 
#> $Colesest_value
#> [1] 15
#> 
#> $StockStatus
#> TSB40 LSB25 
#>     7     7

Output The function returns a named vector with TSB40 and LSB25 values indicating stock status.

##Conclusion The Fish Stock Assessment package provides a robust framework for estimating biological parameters and assessing fish stock status. By following the steps outlined in this vignette, you can effectively utilize this package for your fish stock assessment needs.

##Additional Information Contact For any questions or issues, please contact the package maintainer:

Name: Ataher Ali Email:

##Acknowledgements I would like to thank the contributors and the community for their support and feedback.

This vignette provides a comprehensive guide to using the Assessment package. By following these instructions, users can effectively conduct fish stock assessments and contribute to sustainable fishery management practices.

References