enfa {adehabitat} | R Documentation

## Ecological-Niche Factor Analysis

### Description

`enfa` performs an Ecological-Niche Factor Analysis. `hist.enfa` draws histograms of the row scores or of the initial variables of the ENFA. `data2enfa` prepares data (kasc and localizations) to be analyzed by the ENFA.

### Usage

    enfa(tab, pr, scannf = TRUE, nf = 1)
    hist.enfa(x, scores = TRUE, type = c("h", "l"), adjust = 1, Acol, Ucol,
              Aborder, Uborder, Alwd = 1, Ulwd = 1, ...)
    data2enfa(kasc, pts)

### Arguments

`tab` | a data frame describing the available units
`pr` | a vector giving the utilization weights associated to each unit
`scannf` | logical. Whether the eigenvalues barplot should be displayed
`nf` | an integer indicating the number of kept specialization axes
`x` | an object of class `enfa`
`scores` | logical. If `TRUE`, the histograms display the row scores of the ENFA. If `FALSE`, they display the niche on the environmental variables (in this case, this is equivalent to `histniche`)
`type` | what type of plot should be drawn. Possible types are: * `"h"` for histograms, * `"l"` for kernel density estimates (see `?density`). By default, `type = "h"` is used. If `type = "l"` is used, the position of the mean of each distribution is indicated by dotted lines
`adjust` | if `type = "l"`, a parameter used to control the bandwidth of the density estimates (see `?density`)
`Acol` | if `type = "h"`, a color to be used to fill the histogram of the available pixels. if `type = "l"`, a color to be used for the kernel density estimates of the available pixels
`Ucol` | if `type = "h"`, a color to be used to fill the histogram of the used pixels. if `type = "l"`, a color to be used for the kernel density estimates of the used pixels
`Aborder` | color for the border of the histograms of the available pixels
`Uborder` | color for the border of the histograms of the used pixels
`Alwd` | if `type = "l"`, the line width of the kernel density estimates of the available pixels
`Ulwd` | if `type = "l"`, the line width of the kernel density estimates of the used pixels
`kasc` | a raster map of class `kasc`
`pts` | a data frame with two columns, giving the coordinates of the species locations
`...` | further arguments passed to or from other methods

### Details

The niche concept, as defined by Hutchinson (1957), considers the ecological niche of a species as an hypervolume in the multidimensional space defined by environmental variables, within which the populations of a species can persist. The Ecological-Niche Factor Analysis (ENFA) has been developped by Hirzel et al. (2002) to analyse the position of the niche in the ecological space. Nicolas Perrin (1984) described the position of the niche in the n-dimensional space using two measures: the M-specialization (hereafter termed marginality) and the S-specialization (hereafter termed specialization). The marginality represents the squared distance of the niche barycentre from the mean available habitat. A large specialization corresponds to a narrow niche relative to the habitat conditions available to the species.

The ENFA first extracts an axis of marginality (vector from the average of available habitat conditions to the average used habitat conditions). Then the analysis extracts successives orthogonal axes (i.e. uncorrelated), which maximises the specialization of the species. The calculations used in the function are described in Hirzel et al. (2002).

### Value

`enfa` returns a list of class `enfa` containing the following components:

`call` | original call.
`tab` | a data frame with n rows and p columns.
`pr` | a vector of length n containing the number of points in each pixel of the map.
`nf` | the number of kept specialization axes.
`m` | the marginality (squared length of the marginality vector).
`s` | a vector with all the eigenvalues of the analysis.
`lw` | row weights, a vector with n components.
`li` | row coordinates, data frame with n rows and nf columns.
`l1` | row normed scores, data frame with n rows and nf columns.
`co` | column coordinates, data frame with p rows and nf columns.
`c1` | column normed scores, data frame with p rows and nf columns.
`mar` | coordinates of the marginality vector.
`tab` | a data frame with n rows and p columns.
`pr` | a vector of length n containing the number of points in each pixel of the map.
`index` | an integer vector giving the position of the rows of `tab` in the initial object of class `kasc`.
`attr` | an object of class `mapattr` with the attributes of the initial `kasc`.

### Author(s)

Mathieu Basille basille@biomserv.univ-lyon1.fr

### References

Hutchinson, G.E. (1957) Concluding Remarks. Cold Spring Harbor Symposium on Quantitative Biology, 22: 415–427.

Perrin, N. (1984) Contribution à l'écologie du genre Cepaea (Gastropoda) : Approche descriptive et expérimentale de l'habitat et de la niche écologique. Thèse de Doctorat. Université de Lausanne, Lausanne.

Hirzel, A.H., Hausser, J., Chessel, D. & Perrin, N. (2002) Ecological-niche factor analysis: How to compute habitat-suitability maps without absence data? Ecology, 83, 2027–2036.

### See Also

`niche`, `kselect` for other types of analysis of the niche, when several species are under studies, `niche.test` to perform a test of the marginality and the tolerance of the niche, and `scatter.enfa` to have a graphical display of objects of class `enfa`.

### Examples

    ## Not run:
    data(lynxjura)

    map <- lynxjura$map

    ## We keep only "wild" indices.
    tmp <- lynxjura$locs[,4]!="D"
    locs <- lynxjura$locs[tmp, c("X","Y")]
    hist(map, type = "l")
    ## The variable artif is far from symetric

    ## We perform a square root transformation
    ## of this variable
    ## We therefore normalize the variable 'artif'
    map[,4] <- sqrt(map[,4])
    hist(map, type = "l")

    ## We prepare the data for the ENFA
    (dataenfa1 <- data2enfa(map, locs[tmp, c("X","Y")]))

    ## We then perform the ENFA
    (enfa1 <- enfa(dataenfa1$tab, dataenfa1$pr,
                   scannf = FALSE))
    hist(enfa1)
    hist(enfa1, scores = FALSE, type = "l")

    ## randomization test and scatterplot
    (renfa <- randtest(enfa1))
    plot(renfa)
    scatter(enfa1)
    ## End(Not run)

[Package adehabitat version 1.3 Index]