DeLury: DeLury's Method for Population Size Estimation

View source: R/

DeLuryR Documentation

DeLury's Method for Population Size Estimation


Computes DeLury's method or Leslie's method for estimating a biological population size.


DeLury(catch, effort, type = c("DeLury","Leslie"), ricker = FALSE)


catch, effort

Catch and effort. These should be numeric vectors of equal length.


Character specifying which of the DeLury or Leslie models is to be fitted. The default is the first value.


Logical. If TRUE then the Ricker (1975) modification is computed.


This simple function implements the methods of DeLury (1947). These are called the DeLury and Leslie models. Note that there are many assumptions. These include: (i) Catch and effort records are available for a series of consecutive time intervals. The catch for a given time interval, specified by t, is c(t), and the corresponding effort by e(t). The catch per unit effort (CPUE) for the time interval t is C(t) = c(t)/e(t). Let d(t) represent the proportion of the population captured during the time interval t. Then d(t) = k(t) e(t) so that k(t) is the proportion of the population captured during interval t by one unit of effort. Then k(t) is called the catchability, and the intensity of effort is e(t). Let E(t) and K(t) be the total effort and total catch up to interval t, and N(t) be the number of individuals in the population at time t. It is good idea to plot \log(C(t)) against E(t) for type = "DeLury" and C(t) versus K(t) for type = "Leslie".

The other assumptions are as follows. (ii) The population is closed—the population must be closed to sources of animals such as recruitment and immigration and losses of animals due to natural mortality and emigration. (iii) Catchability is constant over the period of removals. (iv) The units of effort are independent, i.e., the individual units of the method of capture (i.e., nets, traps, etc) do not compete with each other. (v) All fish are equally vulnerable to the method of capture—source of error may include gear saturation and trap-happy or trap-shy individuals. (vi) Enough fish must be removed to substantially reduce the CPUE. (vii) The catches may remove less than 2% of the population. Also, the usual assumptions of simple regression such as (viii) random sampling, (ix) the independent variable(s) are measured without error—both catches and effort should be known, not estimated, (x) a line describes the data, (xi) the errors are independent and normally distributed.


A list with the following components.

catch, effort

Catch and effort. Same as the original vectors. These correspond to c(t) and e(t) respectively.

type, ricker

Same as input.


an estimate of the population size at time 0. Only valid if the assumptions are satisfied.


Catch Per Unit Effort =C(t).

K, E

K(t) and E(t). Only one is computed depending on type.


the lm object from the fit of log(CPUE) on K (when type = "Leslie"). Note that the x component of the object is the model matrix.


The data in the example below comes from DeLury (1947), and some plots of his are reproduced. Note that he used log to base 10 whereas natural logs are used here. His plots had some observations obscured by the y-axis!

The DeLury method is not applicable to the data frame since the 2008 World Fly Fishing Competition was strictly catch-and-release.


T. W. Yee.


DeLury, D. B. (1947). On the estimation of biological populations. Biometrics, 3, 145–167.

Ricker, W. E. (1975). Computation and interpretation of biological statistics of fish populations. Bull. Fish. Res. Bd. Can., 191, 382–

Yee, T. W. (2010) VGLMs and VGAMs: an overview for applications in fisheries research. Fisheries Research, 101, 116–126.

See Also


pounds <- c(  147, 2796, 6888, 7723, 5330, 8839, 6324, 3569, 8120, 8084,
            8252, 8411, 6757, 1152, 1500, 11945, 6995, 5851, 3221, 6345,
            3035, 6271, 5567, 3017, 4559, 4721, 3613,  473,  928, 2784,
            2375, 2640, 3569)
traps  <- c(  200, 3780, 7174, 8850, 5793, 9504, 6655, 3685, 8202, 8585,
            9105, 9069, 7920, 1215, 1471, 11597, 8470, 7770, 3430, 7970,
            4740, 8144, 7965, 5198, 7115, 8585, 6935, 1060, 2070, 5725,
            5235, 5480, 8300)
table1 <- DeLury(pounds/1000, traps/1000)

## Not run: 
with(table1, plot(1+log(CPUE) ~ E, las = 1, pch = 19, main = "DeLury method",
     xlab = "E(t)", ylab = "1 + log(C(t))", col = "blue"))

## End(Not run)
omitIndices <- -(1:16)
table1b <- DeLury(pounds[omitIndices]/1000, traps[omitIndices]/1000)
## Not run: 
with(table1b, plot(1+log(CPUE) ~ E, las = 1, pch = 19, main = "DeLury method",
     xlab = "E(t)", ylab = "1 + log(C(t))", col = "blue"))
mylmfit <- with(table1b, lmfit)
lines(mylmfit$x[, 2], 1 + predict.lm(mylmfit), col = "red", lty = "dashed")

## End(Not run)

omitIndices <- -(1:16)
table2 <- DeLury(pounds[omitIndices]/1000, traps[omitIndices]/1000, type = "L")
## Not run: 
with(table2, plot(CPUE ~ K, las = 1, pch = 19,
     main = "Leslie method; Fig. III",
     xlab = "K(t)", ylab = "C(t)", col = "blue"))
mylmfit <- with(table2, lmfit)
abline(a = coef(mylmfit)[1], b = coef(mylmfit)[2],
       col = "orange", lty = "dashed")

## End(Not run)

VGAMdata documentation built on Sept. 18, 2023, 9:08 a.m.