kernelUD estimates the UD of one or several
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.
kernel.area provide utilities
for home range and home-range size estimation.
getverticeshr stores the home range contour as an object of
SpatialPolygonsDataFrame (package sp), with one row per
estUDm2spixdf can be used to convert the result into an object
as.data.frame.estUD can be used to convert an object of class
estUD as a data frame.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26
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)
An object inheriting the class
a character string or a number. If
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
a numeric vector of length two. If
a character string. If
a value controlling the extent of the grid used for the
estimation (the extent of the grid on the abscissa is equal to
an object of class
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.
the units of the relocations coordinates. Either
the units of the output areas. Either
unused argument here
unused argument here
additionnal parameters to be passed to the generic
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^(-1/6)
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
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.
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
plot.hrsize (see the help page of this function) can
be used to display the home-range size estimated at various levels.
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
-pi/2. The UD of all the pixels located within a
band defined by the boundary and with a width equal to
("external lane") is set to zero.
kernelUD returns either: (i) an object belonging
to the S4 class
?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
getvolumeUD returns an object of the same class as
the object passed as argument (
kernel.area returns a data frame of subclass
with one column per animal and one row per level of
estimation of the home range.
getverticeshr returns an object of class
estUDm2spixdf returns an object of class
Clement Calenge firstname.lastname@example.org
Silverman, B.W. (1986) Density estimation for statistics and data analysis. London: Chapman \& 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.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109
## 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[] 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)
Add the following code to your website.
For more information on customizing the embed code, read Embedding Snippets.