kernelUD {adehabitatHR} | R Documentation |
Estimation of Kernel Home-Range
Description
The function kernelUD
estimates the UD of one or several
animals.
plotLSCV
allows to explore the results of the least-square
cross-validation algorithm used to find the best smoothing value.
image
allows a graphical display of the estimates.
getvolumeUD
and kernel.area
provide utilities
for home range and home-range size estimation.
getverticeshr
stores the home range contour as an object of
class SpatialPolygonsDataFrame
(package sp), with one row per
animal.
estUDm2spixdf
can be used to convert the result into an object
of class SpatialPixelsDataFrame
as.data.frame.estUD
can be used to convert an object of class
estUD
as a data frame.
Usage
kernelUD(xy, h = "href", grid = 60,
same4all = FALSE, hlim = c(0.1, 1.5),
kern = c("bivnorm", "epa"), extent = 1,
boundary = NULL)
## S3 method for class 'estUDm'
print(x, ...)
## S3 method for class 'estUD'
image(x, ...)
## S3 method for class 'estUDm'
image(x, ...)
## S3 method for class 'estUD'
as.data.frame(x, row.names, optional, ...)
plotLSCV(x)
getvolumeUD(x, standardize = FALSE)
kernel.area(x, percent = seq(20, 95, by = 5),
unin = c("m", "km"),
unout = c("ha", "km2", "m2"), standardize = FALSE)
estUDm2spixdf(x)
Arguments
xy |
An object inheriting the class |
h |
a character string or a number. If |
grid |
a number giving the size of the grid on
which the UD should be estimated. Alternatively, this parameter may
be an object inheriting the class |
hlim |
a numeric vector of length two. If |
kern |
a character string. If |
extent |
a value controlling the extent of the grid used for the
estimation (the extent of the grid on the abscissa is equal to
|
same4all |
logical. If |
boundary |
If, not |
x |
an object of class |
percent |
for |
standardize |
a logical value indicating whether the UD should be standardized over the area of interest, so that the volume under the UD and *over the area* is equal to 1. |
unin |
the units of the relocations coordinates. Either |
unout |
the units of the output areas. Either |
row.names |
unused argument here |
optional |
unused argument here |
... |
additionnal parameters to be passed to the generic
functions |
Details
The Utilization Distribution (UD) is the bivariate function giving the probability density that an animal is found at a point according to its geographical coordinates. Using this model, one can define the home range as the minimum area in which an animal has some specified probability of being located. The functions used here correspond to the approach described in Worton (1995).
The kernel method has been recommended by many authors for the estimation of the utilization distribution (e.g. Worton, 1989, 1995). The default method for the estimation of the smoothing parameter is the ad hoc method, i.e. for a bivariate normal kernel
h = \sigma n^{- \frac{1}{6}}
where
\sigma^2 = 0.5 (var(x)+var(y))
which supposes that the UD is
bivariate normal. If an Epanechnikov kernel is used, this value is
multiplied by 1.77 (Silverman, 1986, p. 86).
Alternatively, the smoothing parameter h may be
computed by Least Square Cross Validation (LSCV). The estimated value
then minimizes the Mean Integrated Square Error (MISE), i.e. the
difference in volume between the true UD and the estimated UD. Note
that the cross-validation criterion cannot be minimized in some
cases. According to Seaman and Powell (1998) "This is a
difficult problem that has not been worked out by statistical
theoreticians, so no definitive response is available at this
time" (see Seaman and Powell, 1998 for further details and tricky
solutions). plotLSCV
allows to have a diagnostic of the
success of minimization of the cross validation criterion (i.e. to
know whether the minimum of the CV criterion occurs within the scanned
range). Finally, the UD is then estimated over a grid.
The default kernel is the bivariate normal kernel, but the Epanechnikov kernel, which requires less computer time is also available for the estimation of the UD.
The function getvolumeUD
modifies the UD component of the
object passed as argument: that the pixel values of the resulting
object are equal to the percentage of the smallest home range
containing this pixel. This function is used in the function
kernel.area
, to compute the home-range size. Note, that the
function plot.hrsize
(see the help page of this function) can
be used to display the home-range size estimated at various levels.
The parameter boundary
allows to define a barrier that cannot
be crossed by the animals. When this parameter is
set, the method described by Benhamou and Cornelis (2010) for
correcting boundary biases is used. The boundary can possibly be
defined by several nonconnected lines, each one being built by several
connected segments. Note that there are constraints on these segments
(not all kinds of boundary can be defined): (i) each segment length
should at least be equal to 3*h
(the size of "internal lane"
according to the terminology of Benhamou and Cornelis), (ii) the angle
between two line segments should be greater that pi/2
or lower
that -pi/2
. The UD of all the pixels located within a
band defined by the boundary and with a width equal to 6*h
("external lane") is set to zero.
Value
The function kernelUD
returns either: (i) an object belonging
to the S4 class estUD
(see ?estUD-class
) when the object
xy
passed as argument contains the relocations of only one
animal (i.e., belong to the class SpatialPoints
), or (ii) a
list of elements of class estUD
when the object
xy
passed as argument contains the relocations of several
animals (i.e., belong to the class SpatialPointsDataFrame
).
The function getvolumeUD
returns an object of the same class as
the object passed as argument (estUD
or estUDm
).
kernel.area
returns a data frame of subclass hrsize
,
with one column per animal and one row per level of
estimation of the home range.
getverticeshr
returns an object of class
SpatialPolygonsDataFrame
.
estUDm2spixdf
returns an object of class
SpatialPixelsDataFrame
.
Author(s)
Clement Calenge clement.calenge@ofb.gouv.fr
References
Silverman, B.W. (1986) Density estimation for statistics and data analysis. London: Chapman and Hall.
Worton, B.J. (1989) Kernel methods for estimating the utilization distribution in home-range studies. Ecology, 70, 164–168.
Worton, B.J. (1995) Using Monte Carlo simulation to evaluate kernel-based home range estimators. Journal of Wildlife Management, 59,794–800.
Seaman, D.E. and Powell, R.A. (1998) Kernel home range estimation program (kernelhr). Documentation of the program.
Benhamou, S. and Cornelis, D. (2010) Incorporating Movement Behavior and Barriers to Improve Biological Relevance of Kernel Home Range Space Use Estimates. Journal of Wildlife Management, 74, 1353–1360.
See Also
mcp
for help on the function plot.hrsize
.
Examples
## Load the data
data(puechabonsp)
loc <- puechabonsp$relocs
## have a look at the data
head(as.data.frame(loc))
## the first column of this data frame is the ID
## Estimation of UD for the four animals
(ud <- kernelUD(loc[,1]))
## The UD of the four animals
image(ud)
## Calculation of the 95 percent home range
ver <- getverticeshr(ud, 95)
## and display on an elevation map:
elev <- puechabonsp$map
image(elev, 1)
plot(ver, add=TRUE, col=rainbow(4))
legend(699000, 3165000, legend = names(ud), fill = rainbow(4))
## Example of estimation using LSCV
udbis <- kernelUD(loc[,1], h = "LSCV")
image(udbis)
## Compare the estimation with ad hoc and LSCV method
## for the smoothing parameter
(cuicui1 <- kernel.area(ud)) ## ad hoc
plot(cuicui1)
(cuicui2 <- kernel.area(udbis)) ## LSCV
plot(cuicui2)
## Diagnostic of the cross-validation
plotLSCV(udbis)
## Use of the same4all argument: the same grid
## is used for all animals
## BTW, we indicate a grid with a fine resolution:
udbis <- kernelUD(loc[,1], same4all = TRUE, grid = 100)
image(udbis)
## Estimation of the UD on a map
## (e.g. for subsequent analyses on habitat selection)
## Measures the UD in each pixel of the map
udbis <- kernelUD(loc[,1], grid = elev)
image(udbis)
##########################################
##
## Estimating the UD with the presence of a barrier
## The boars are located on the plateau of Puechabon (near
## Montpellier, France), and their movements are limited by the
## Herault river.
## We first map the elevation:
image(elev)
## Then, we used the function locator() to identify the limits of the
## segments of this barrier. BEWARE! The boundary should satisfy the two
## constraints: (i) segment length > 3*h, (ii) no angle lower than pi/2
## between successive segments. We choose a smoothing parameter of 100
## m, so that no segment length should be less than 300 m.
## Because the resolution of the map is 100 m, this means that no
## segment should cover less than 3 pixels. We have used the function
## locator() to digitize this barrier and then the function dput to
## have the following limits:
bound <- structure(list(x = c(701751.385381925, 701019.24105475,
700739.303517889,
700071.760160759, 699522.651915378,
698887.40904327, 698510.570051342,
698262.932999504, 697843.026694212,
698058.363261028),
y = c(3161824.03387414,
3161824.03387414, 3161446.96718494,
3161770.16720425, 3161479.28718687,
3161231.50050539, 3161037.5804938,
3160294.22044937, 3159389.26039528,
3157482.3802813)), .Names = c("x", "y"))
lines(bound, lwd=3)
## We convert bound to SpatialLines:
bound <- do.call("cbind",bound)
Slo1 <- Line(bound)
Sli1 <- Lines(list(Slo1), ID="frontier1")
barrier <- SpatialLines(list(Sli1))
## estimation of the UD
kud <- kernelUD(loc[,1], h=100, grid=100, boundary=barrier)
## Result:
image(kud)
## Have a closer look to Calou:
kud2 <- kud[[2]]
image(kud2, col=grey(seq(1,0,length=15)))
title(main="Home range of Calou")
points(loc[slot(loc,"data")[,1]=="Calou",], pch=3, col="blue")
plot(getverticeshr(kud2, 95), add=TRUE, lwd=2)
lines(barrier, col="red", lwd=3)