Jump to content

Connect SuperML | Leeroopedia MCP: Equip your AI agents with best practices, code verification, and debugging knowledge. Powered by Leeroo — building Organizational Superintelligence. Contact us at founders@leeroo.com.

Principle:Pyro ppl Pyro Capture Recapture

From Leeroopedia


Knowledge Sources
Domains Ecology, Population Dynamics, Survival Analysis
Last Updated 2026-02-09 09:00 GMT

Overview

The Cormack-Jolly-Seber (CJS) model estimates survival and detection probabilities from capture-recapture data, where individual animals are marked, released, and potentially recaptured across multiple survey occasions.

Description

Capture-recapture (also called mark-recapture) is a fundamental method in ecology for estimating animal population parameters when not all individuals can be observed. The basic protocol is:

  1. Capture individuals and apply unique marks (tags, bands, or natural markings).
  2. Release the marked individuals back into the population.
  3. On subsequent occasions, recapture (or resight) individuals and record which marked individuals are detected.

The Cormack-Jolly-Seber (CJS) model analyzes such data to estimate two key parameters:

  • Survival probability (phi_t): The probability that an individual alive at time t survives to time t+1.
  • Detection probability (p_t): The probability that an individual alive and present at time t is captured/detected during the survey.

The challenge is that non-detection of a previously marked individual is ambiguous: the animal may have died, or it may be alive but simply not detected. The CJS model jointly estimates both survival and detection to resolve this ambiguity.

The model can be extended with:

  • Individual covariates: Survival or detection may depend on individual attributes (age, sex, body condition).
  • Temporal variation: Parameters may change over time.
  • Random effects: Individual-level heterogeneity in survival or detection.
  • State transitions: Multi-state models where individuals can move between discrete states (locations, breeding status).

In a probabilistic programming framework, the CJS model is expressed as a hidden Markov model where the latent state is the alive/dead status of each individual over time.

Usage

Use capture-recapture models when:

  • Estimating animal survival rates from mark-recapture data.
  • Estimating population size from detection/non-detection data.
  • Studying the effects of environmental variables on survival.
  • Modeling animal movement between sites (multi-state models).
  • Any ecological monitoring program involving repeated surveys of marked individuals.

Theoretical Basis

CJS model as an HMM:

# States: {alive, dead} for each individual at each time
# Observations: {detected, not detected}

# Initial state: alive (all individuals are first captured alive)

# Transition matrix at time t:
# P(state_{t+1} | state_t) =
#   alive -> alive: phi_t     (survival)
#   alive -> dead:  1 - phi_t (mortality)
#   dead  -> dead:  1         (absorbing state)

# Observation model:
# P(detected | alive) = p_t
# P(detected | dead)  = 0
# P(not detected | alive) = 1 - p_t
# P(not detected | dead)  = 1

Likelihood for a capture history:

# Capture history for individual i: h_i = (h_i1, h_i2, ..., h_iT)
# where h_it = 1 if captured at time t, 0 otherwise
# First capture at time f_i

# P(h_i | phi, p) = product over t = f_i to T-1:
#   if h_{i,t+1} = 1:
#     phi_t * p_{t+1}          (survived and detected)
#   else:
#     phi_t * (1 - p_{t+1}) + (1 - phi_t) * chi_{t+1}
#     (survived but not detected, OR died)

# chi_t = probability of never being seen again from time t:
# chi_T = 1
# chi_t = (1 - phi_t) + phi_t * (1 - p_{t+1}) * chi_{t+1}

Bayesian CJS model:

# Priors:
# phi_t ~ Beta(a_phi, b_phi)  for each time period
# p_t ~ Beta(a_p, b_p)        for each time period

# Or with covariates:
# logit(phi_t) = alpha + beta * x_t  (e.g., x_t = temperature)
# alpha ~ Normal(0, sigma_alpha)
# beta ~ Normal(0, sigma_beta)

# Data augmentation (for population size estimation):
# Augment data with M - n_captured "all-zero" histories
# Include a parameter psi = inclusion probability
# N_super ~ Binomial(M, psi)
# N_alive_t can then be derived from the model

Multi-state extension:

# States: {state_1, state_2, ..., state_S, dead}
# Transition: psi_{s,s'} = P(state_{t+1}=s' | state_t=s, alive)
# Survival: phi_s = P(alive_{t+1} | state_t=s, alive_t)
# Detection: p_s = P(detected | state=s, alive)

# This enables modeling:
# - Movement between sites
# - Breeding vs non-breeding status
# - Disease status transitions

Related Pages

Page Connections

Double-click a node to navigate. Hold to expand connections.
Principle
Implementation
Heuristic
Environment