| chat | R Documentation |
Stochastic variation in the intensity surface may cause the number of detected
individuals n to be overdispersed relative to a Poisson distribution
(Efford and Fletcher 2025). This can cause the sampling variance of density
estimates to be understated.
Use chat.nj to compute Fletcher's \hat c estimate of overdispersion
for use as a variance inflation factor. The method requires replicate samples of
the intensity surface, such as from multiple independent subgrids.
Replicates may be provided as sessions or clusters of detectors within a session
(see cluster and trap.builder).
adjustVarD adjusts the SE and confidence limits of density estimates
using the given \hat c. The implementation is limited to simple detection models
(see Warnings).
See Cooch and White (2022) for an introduction to measurement of overdispersion
in capture–recapture due to non-independence in the detection process.
The focus here is on overdispersion of the number detected n relative to
the Poisson (or binomial) distribution of n expected when the
distribution of activity centres is an inhomogeneous or homogeneous Poisson (or binomial)
point process (IHPP).
chat.nj(object, bycluster = FALSE, ...)
adjustVarD(object, chatmin = 1, alpha = 0.05, chat = NULL)
object |
fitted secr model or dataframe (see Warnings for restrictions) |
bycluster |
logical; if TRUE then j refers to clusters within a single-session capthist rather than sessions |
... |
other arguments passed to |
chatmin |
minimum value of Fletcher's |
alpha |
alpha level for confidence intervals |
chat |
numeric chat (optional) |
chat.nj uses expected.n to compute the expected values.
No adjustment is made by adjustVarD when \hat c is less than the
minimum. Set 'chatmin' to zero to override.
adjustVarD also accepts a single dataframe as the argument ‘object’;
the dataframe should have row ‘D’ and columns ‘link’, ‘estimate’, ‘SE.estimate’
as in the output from predict.secr.
For chat.nj, usually a list comprising –
expected |
expected number at each cluster or session |
observed |
observed number at each cluster or session |
stats |
vector of summary statistics: mean(expected), var(expected), mean(observed), var(observed), sbar, nu (=df), cX2 = X2/nu |
chat |
|
If ‘verbose = FALSE’ then only the numeric value of \hat c is returned (a vector of 2 values if ‘type = "both"’).
For adjustVarD, a dataframe with one row for each session, based on predict.secr or derived.secr, with extra column ‘c-hat’.
The variance inflation factor given by chat.nk was shown by Efford and
Fletcher (2025) to be inadequate and should not be used. For replicate spatial
samples, chat.nj is a better alternative.
adjustVarD previously computed Fletcher's ‘chat’ using chat.nk;
that is no longer recommended.
Bischof, R., P. Dupont, C. Milleret, J. Chipperfield, and J. A. Royle. 2020. Consequences of ignoring group association in spatial capture–recapture analysis. Wildlife Biology wlb.00649. \Sexpr[results=rd]{tools:::Rd_expr_doi("10.2981/wlb.00649")}
Cooch, E. and White, G. (eds) (2022) Program MARK: A Gentle Introduction. 22nd edition. Most recent edition available online at www.phidot.org/software/mark/docs/book/.
Efford, M. G. and D. Fletcher. 2025. Effect of spatial overdispersion on confidence intervals for population density estimated by spatial capture-recapture. bioRxiv https://doi.org/10.1101/2024.03.12.584742
Fletcher, D. (2012) Estimating overdispersion when fitting a generalized linear model to sparse data. Biometrika 99, 230–237.
Wedderburn, R. W. M. (1974) Quasi-likelihood functions, generalized linear models, and the Gauss-Newton method. Biometrika 61, 439–47.
secr,
make.mask,
Detection functions,
Fletcher.chat,
cluster
## Not run:
## Clustered design
mini <- make.grid(nx = 3, ny = 3, spacing = 50, detector = "proximity")
tempgrids2 <- trap.builder (
cluster = mini , method = "all",
frame = expand.grid(x = seq(200, 1800, 400), y = seq(200, 1800, 400)),
plt = TRUE)
tempmask2 <- make.mask(tempgrids2, buffer = 100, spacing = 20)
pop1 <- sim.popn(D = 2, core = tempmask2, model2D = 'rLGCP',
details = list(var = 0.5, scale = 100))
capt <- sim.capthist(tempgrids2, popn = pop1, noccasions = 5,
detectpar = list(g0 = 0.2, sigma = 25))
fit <- secr.fit(capt, mask = tempmask2, trace = FALSE)
chat.nj(fit, bycluster = TRUE)
## End(Not run)
Add the following code to your website.
For more information on customizing the embed code, read Embedding Snippets.