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.
1 2 3 4 5 
dudi 
a duality diagram, object of class 
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 
scores 
logical. If 
type 
what type of plot should be drawn. Possible types are: 
adjust 
if 
Acol 
if 
Ucol 
if 
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 
Ulwd 
if 
kasc 
a raster map of class 
pts 
a data frame with two columns, giving the coordinates of the species locations 
... 
further arguments passed to or from other methods 
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 ndimensional
space using two measures: the Mspecialization (hereafter termed marginality)
and the Sspecialization (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).
The function enfa
can be used on both quantitative variables and
qualitative variables (though the interpretation of the results of the
ENFA for qualitative variables is still under research), provided that
the table containing the values of habitat variables (columns) for
each resource unit (rows) is correctly transformed
(e.g. columncentered and standardised for tables containing only
quantitative variables), and that appropriate column weights are given
(e.g. the sum of the weights for
the levels of a factor should be the same as the weight of one
quantitative variable). Therefore, the function enfa
requires
that a preliminary multivariate analysis is performed on the table
(using analysis of the family of duality diagram, e.g. principal
component analysis or Hill and Smith analysis). The object returned
by this preliminary analysis contains the appropriate weights and
transformation of the original data frame. For example,
the function dudi.mix
can be used first on the data.frame
containing the value of both quantitative (e.g. slope, elevation) and
qualitative habitat variables (e.g. vegetation) for each pixel of a
raster map. The result of this analysis can then be passed as argument
to the function enfa
(see examples below).
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. 
cw 
column weights, a vector with p components. 
co 
column coordinates, data frame with p rows and nf columns. 
mar 
coordinates of the marginality vector. 
data2enfa
returns a list of class dataenfa
containing the
following components:
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

attr 
an object of class 
Mathieu Basille basille@aseresearch.org
Hutchinson, G.E. (1957) Concluding Remarks. Cold Spring Harbor Symposium on Quantitative Biology, 22: 415–427.
Perrin, N. (1984) Contribution a l'ecologie du genre Cepaea (Gastropoda) : Approche descriptive et experimentale de l'habitat et de la niche ecologique. These de Doctorat. Universite de Lausanne, Lausanne.
Hirzel, A.H., Hausser, J., Chessel, D. and Perrin, N. (2002) Ecologicalniche factor analysis: How to compute habitatsuitability maps without absence data? Ecology, 83, 2027–2036.
Basille, M., Calenge, C., Marboutin, E., Andersen, R. and Gaillard, J.M. (2008) Assessing habitat selection using multivariate statistics: Some refinements of the ecologicalniche factor analysis. Ecological Modelling, 211, 233–240.
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
. See madifa
for another factorial analysis of
the ecological niche.
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  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))
## We then perform the PCA before the ENFA
pc < dudi.pca(dataenfa1$tab, scannf = FALSE)
## The object 'pc' contains the transformed table (i.e.
## centered so that all columns have a mean of 0
## and scaled so that all columns have a variance of 1
## 'pc' also contains the weights of the habitat variables,
## and the weights of the pixels in the analysis
(enfa1 < enfa(pc, dataenfa1$pr,
scannf = FALSE))
hist(enfa1)
hist(enfa1, scores = FALSE, type = "l")
## randomization test and scatterplot
## Not run:
(renfa < randtest(enfa1))
plot(renfa)
scatter(enfa1)
## End(Not run)

Questions? Problems? Suggestions? Tweet to @rdrrHQ or email at ian@mutexlabs.com.
Please suggest features or report bugs with the GitHub issue tracker.
All documentation is copyright its authors; we didn't write any of that.