rand.kselect: Test of the Third-Order Habitat Selection

rand.kselectR Documentation

Test of the Third-Order Habitat Selection


rand.kselect tests whether the marginality vector of animals is significantly larger than what is expected under the hypothesis of random habitat use (third-order habitat selection: selection by the animals of the relocations within their home range; the habitat availability is measured for each animal). The effect of each variable on individual marginality is also tested. Finally, the pertinence of a K-select analysis is also tested. This is a randomisation test. The alpha-level of the tests is ajusted using the Bonferroni inequality.


rand.kselect(dudi, factor, weight, nrep = 200, alpha = 0.05, ewa = FALSE)
## S3 method for class 'rand.kselect'
print(x, ...)



an object of class dudi.


a factor defining the animals identity


a weight vector of integer values (number of relocations counted in each resource unit in row of the object dudi)


the number of repetitions of the test


the alpha level for the tests.


logical. If TRUE, uniform weights are given to all animals in the analysis. If FALSE, animal weights are given by the proportion of relocations of each animal (i.e. an animal with 10 relocations has a weight 10 times lower than an animal with 100 relocations)


an object of the class rand.kselect.


further arguments to be passed to the generic function print


This test is carried out by simulating a random use of space by animals. rand.kselect is closely related to the function kselect (same arguments).

At each step of the randomisation procedure, and for each animal, the test randomly allocates the nk relocations (where nk is the sum of the weight vector for the animal k) in the Ik pixels available to this animal (where Ik is the length of the weight vector for animal k).

The length of the marginality vector is recomputed at each step of the randomisation procedure and for each animal. The effect of each variable on the use of pixels by each animal is measured by the criterion "(average habitat variable j used by animal i) minus (average habitat variable j available to animal i)". Finally the value of the first eigenvalue of the K-select analysis provides a criterion to test the pertinence of the K-select analysis.

All these values are then compared to the observed values to assess the significance of theses effects.


Returns an object of class rand.kselect. This list has three components:


a vector of length 2 giving the results of the randomisation procedure for the first eigenvalue of the K-select analysis.


a matrix giving the significance of the marginality of each animal.


a list giving the results of the randomisation test for the coordinates of the marginality vector for each animal on each habitat variable.


the alpha level of the tests.


Clement Calenge clement.calenge@ofb.gouv.fr


Calenge, C., Dufour, A.B. and Maillard, D. (2005) K-select analysis: a new method to analyse habitat selection in radio-tracking studies. Ecological modelling, 186, 143–153.

See Also

kselect to perform a K-select analysis.


## Not run: 
## Loads the data

locs <- puechabonsp$relocs
map <- puechabonsp$map

## compute the home range of animals (e.g. using the minimum convex
## polygon)
pc <- mcp(locs[,"Name"])

## rasterize it
hr <- do.call("data.frame", lapply(1:nrow(pc), function(i) {
    overlay(map, geometry(pc[i,]))
names(hr) <- slot(pc, "data")$id
coordinates(hr) <- coordinates(map)
gridded(hr) <- TRUE

## Compute the number of relocation in each pixel of the map
cp <- count.points(locs[,"Name"], map)

## prepares the data for the kselect analysis
x <- prepksel(map, hr, cp)
tab <- x$tab
dud <- dudi.mix(tab, scannf = FALSE, nf = 2)

## the randomisation tests
## be patient, this can be very long on some machines
(te <- rand.kselect(dud, x$factor, x$weight, nrep = 500))

## End(Not run)

adehabitatHS documentation built on April 6, 2023, 5:22 p.m.