capthist
or traps
object, creating a new data set and possibly converting
between detector types.## S3 method for class 'traps':
reduce(object, newtraps = NULL, span = NULL, rename = FALSE, \dots)
## S3 method for class 'capthist':
reduce(object, newtraps = NULL, span = NULL, rename =
FALSE, newoccasions = NULL, by = 1, outputdetector =
detector(traps(object)), select = 'last', dropunused = TRUE, verify
= TRUE, sessions = NULL, ...)
traps or capthist
objectverify
function is applied to the outputnewtraps
or span
. The new object has an attribute
`newtrap', a vector of length equal to the original number of
detectors. Each element in newtrap is the index of the new detector to
which the old detector was assigned (see Examples).
The object has no clusterID or clustertrap attribute.
reduce.capthist --
An object of class capthist with number of occasions (columns) equal to
length(newoccasions)
; detectors may simulataneously be aggregated
as with reduce.traps
. The detector type is inherited from object
unless a new type is specified with the argument
outputdetector
.newtraps
, or
implicitly by span
.
If span
is specified a clustering of detector sites will be
performed with hclust
and detectors will be assigned to
groups with cutree
. The default algorithm in hclust
is complete linkage, which tends to yield compact, circular clusters;
each will have diameter less than or equal to span
.
reduce.capthist --
The first component of newoccasions
defines the columns of
object
for new occasion 1, the second for new occasion 2, etc. If
newoccasions
is NULL then all occasions are output. Subscripts in a
component of newoccasions
that do not match an occasion in the input
are ignored. When the output detector is one of the trap types
(`single', `multi'), reducing capture occasions can result in locational
ambiguity for individuals caught on more than one occasion, and for
single-catch traps there may also be conflicts between individuals at
the same trap. The method for resolving conflicts among `multi'
detectors is determined by select
which should be one of `first',
`last' or `random'. With `single' detectors select
is ignored and
the method is: first, randomly select* one trap per animal per day;
second, randomly select* one animal per trap per day; third, when
collapsing multiple days use the first capture, if any, in each
trap.
Usage data in the traps
attribute are also pooled if present;
usage is summed over contributing occasions and detectors.
* i.e., in the case of a single capture, use that capture; in the case of
multiple `competing' captures draw one at random.
If newoccasions
is not provided then old occasions are grouped into
new occasions as indicated by the by
argument. For example, if
there are 15 old occasions and by = 5
then new occasions will be
formed from occasions 1:5, 6:10, and 11:15. A warning is given when the
number of old occasions is not a multiple of by
as then the final
new occasion will comprise fewer old occasions.
A special use of the by
argument is to combine all occasions into
one for each session in a multi-session dataset. This is done by setting
by = "all"
.capthist
, subset.capthist
,
hclust
, cutree
tempcapt <- sim.capthist (make.grid(nx = 6, ny = 6), nocc = 6)
class(tempcapt)
pooled.tempcapt <- reduce(tempcapt, newocc = list(1,2:3,4:6))
summary (pooled.tempcapt)
pooled.tempcapt2 <- reduce(tempcapt, by = 2)
summary (pooled.tempcapt2)
## collapse multi-session dataset to single-session 'open population'
onesess <- join(reduce(ovenCH, by = "all"))
summary(onesess)
# group detectors within 60 metres
plot (traps(captdata))
plot (reduce(captdata, span = 60), add = TRUE)
# plot linking old and new
old <- traps(captdata)
new <- reduce(old, span = 60)
newtrap <- attr(new, 'newtrap')
plot(old, border = 10)
plot(new, add = TRUE, detpar = list(pch = 16), label = TRUE)
segments (new$x[newtrap], new$y[newtrap], old$x, old$y)
Run the code above in your browser using DataLab