Rcapture (version 1.4-4)

closedp.bc: Bias Correction for Closed Population Loglinear Models


This function applies a bias correction to the abundance estimations obtained by closed population models.


closedp.bc(X, dfreq=FALSE, dtype=c("hist","nbcap"), t=NULL, t0=t,
           m=c("M0","Mt","Mh","Mth","Mb","Mbh"), h=NULL, h.control=list(), …)

# S3 method for closedp.bc print(x, …)



The matrix of the observed capture histories (see Rcapture-package for a description of the accepted formats).


A logical. By default FALSE, which means that X has one row per unit. If TRUE, it indicates that the matrix X contains frequencies in its last column.


A characters string, either "hist" or "nbcap", to specify the type of data. "hist", the default, means that X contains complete observed capture histories. "nbcap" means that X contains numbers of captures (see Rcapture-package for details on data formats). If m is "Mt", "Mth", "Mb" or "Mbh", dtype must be "hist".


Requested only if dtype="nbcap". A numeric specifying the total number of capture occasions in the experiment.


A numeric used for model M0 or for an Mh model other than Chao's lower bound model : Models are fitted considering only the frequencies of units captured 1 to t0 times. By default t0=t.


A character string indicating the model to fit, either "M0"=M0 model, "Mt"=Mt model, "Mh"=Mh model, "Mth"=Mth model, "Mb"=Mb model, "Mbh"=Mbh model.


A character string ("LB", "Chao", "Poisson", "Darroch" or "Gamma") or a numerical R function specifying the form of the column(s) for heterogeneity in the design matrix. "LB" and "Chao" represents Chao's lower bound model (the default), "Poisson" represents the function \(f(k)=theta^k-1\), "Darroch" represents the function \(f(k)=k^2/2\), and "Gamma" represents the function \(f(k)=-\log(theta + k) + \log(theta)\) where \(k\) is the number of captures and \(theta\) is a parameter specified with the argument theta. If an R function is given, it must be the implementation of any convex mathematical function \(f(k)\) (it must have only one argument).


A list of elements to control the heterogeneous part of the model, if any. For a Poisson or Gamma heterogeneous model:


The value of the parameter \(theta\) in \(f(k)=theta^k-1\) for the Poisson model (the default value is 2) and in \(f(k)=-\log(theta + k) + \log(theta)\) for the Gamma model (the default value is 3.5).

For the Chao's lower bound Mth model:


If this option is set to TRUE (the default), negative eta parameters in Chao's lower bound models are set to zero.

Further arguments to be passed to glm or print.default.


An object, produced by the closedp.bc function, to print.



The number of captured units


The total number of capture occasions in the data matrix X.


For models M0 and Mh only: the value of the argument t0 used in the computations.


A table containing, for the fitted model:


the estimated population size,


the standard error of the estimated population size,


a numerical code giving information about error or warnings encountered when fitting the model (see Rcapture-package for details).


Only if the corrected population size estimation was obtained with glm: A vector of character strings. If the glm function generates one or more warnings when fitting the model, a copy of these warnings are stored in glm.warn. NULL if glm did not produce any warnings.


For Chao's lower bound model Mth only: the position of the eta parameters set to zero in the loglinear parameter vector, if any.


For the Mt model: When t=2, closedp.bc returns the Petersen estimator with Chapman's (1951) bias correction and the bias corrected standard error estimator of Seber (1970) and Wittes (1972). For t>2, closedp.bc implements the bias correction of Rivest and Levesque (2001). The estimate for N and its variance are calculated by solving an estimating equation as proposed in Seber (1982), not by fitting a Poisson regression. This approach works for large values of t.

For other models: The bias correction is done through frequency modifications in Poisson regression as described in Rivest and Levesque (2001). The variances calculated with the modified frequencies are less biased than the standard ones, but they can overestimate the mean squared errors, especially when the data is sparse.

This function works with fairly large data set, except if an "Mth" model is requested. In this case, only heterogeneity of the form "LB", "Chao", "Poisson" with theta=2 or "Darroch" is accepted.


Baillargeon, S. and Rivest, L.P. (2007) Rcapture: Loglinear models for capture-recapture in R. Journal of Statistical Software, 19(5), 10.18637/jss.v019.i05.

Chapman, D. G. (1951) Some properties of the hypergeometric distribution with applications to zoological sample censuses. University of California Publications in Statistics, 1(7), 131-160.

Rivest, L.P. and Levesque, T. (2001) Improved loglinear model estimators of abundance in capture-recapture experiments. Canadian Journal of Statistics, 29, 555-572.

Seber, G.A.F. (1970) The effects of trap response on tag recapture estimates. Biometrics, 26, 13-22.

Seber, G.A.F. (1982) The Estimation of Animal Abundance and Related Parameters, 2nd edition. New York: Macmillan.

Wittes, J.T. (1972) On the bias and estimated variance of Chapman's two-sample capture-recapture population estimate. Biometrics, 28, 592-597.

See Also



Run this code
# Third primary period of mvole data set
period3 <- mvole[, 11:15]
closedp.bc(period3, m = "Mh", h = "Darroch")
closedp.bc(period3, m = "Mh", h = "Gamma", h.control = list(theta = 3.5))

# BBS2001 data set
closedp.bc(BBS2001, dfreq = TRUE, dtype = "nbcap", t = 50, t0 = 20,
           m = "Mh", h = "Gamma", h.control = list(theta = 3.5))

# Seber (1982) p.107
# When there are 2 capture occasions, only models M0 and Mt can be fitted
X <- matrix(c(1,1,167,1,0,781,0,1,254), byrow = TRUE, ncol = 3)
closedp.bc(X, dfreq = TRUE, m = "M0")
closedp.bc(X, dfreq = TRUE, m = "Mt") 
# }

Run the code above in your browser using DataCamp Workspace