randtest.enfa {adehabitat} -- erratum in calculating the tolerance
Consuelo,
Again, about the tolerance, using the code you told me: pc3 <- dudi.pca(kasc2df(map)$tab, scan=FALSE) sum(dudi.pca(pc3$tab, scale=FALSE, row.w = dataenfa1$pr/sum(dataenfa1$pr), scan=FALSE)$eig) I got* 3.129783*, is this correct?
Yes it is. You can double check it with niche.test:
bla <- niche.test(map, lynxjura$locs[tmp, c("X", "Y")])
bla$obs
0.1450481 3.1297832
The first value is the marginality (same as in enfa1), the second one is
the tolerance.
But I don't understand, shouldn't tolerance have a value ranging from 0 to 1? I thougth that was the idea, since specialization varies from 1 to infinite, right? [i.e. Reutter et al 2003***]
Not necessarily. But I guess you will find different definitions of (global) tolerance and (global) specialization according to different sources. In any cases, I would not recommend the use of a *global* tolerance/specialization index, unless it is used to compare: - two species in the same study area - the same species in two periods, given that the environment does not change.
In the other hand, I have estimated the global specializations using Hirzel et al (2002) formula, like this: S <- (sqrt(sum(enfa1$s)))/1.96 Does it seem correct?
According to Hirzel et al. (2002)'s definition, it should be divided by the number of specialization axes. It is just the mean eigenvalue of specialization, which can be seen as a way to define a global specialization. Now, as I said before, it is difficult to use it as is.
I got this value S = 0.996322 (<1 though), and then, my tolerance (1/S) was 1.003692 (>1). It bothers me that we don't have the same values! grrr
My guess: the S = 1/T relation only hold on one dimension, but not in the N-dimensions ecological space. Could be wrong, though. Anyway, Hirzel et al. (2002)'s definition of specialization cannot not be used in this context.
What do you think? About my other question about the scatter plot of enfa, the scores and so on... I think I haven't been able to explain myself... I have uploaded a picture http://img808.imageshack.us/i/scatter.jpg/. I hope you can see what I mean there.
Now I see. The d=1 that you have in the upper-right corner just holds for the projection of pixels (simplified with the use of MCPs). Try the following: > scatter(enfa1, pts = TRUE) > summary(enfa1$li) which should help. The arrows are just proportional to their real values, in order to adequately fit in the graph. Regards, Mathieu.
Thanks again guys!!!
Consuelo
*** Reutter, B.A, V. Helfer, A.H. Hirzel1 & P. Vogel. 2003. Modelling
habitat-suitability using museum collections: an example with three
sympatric Apodemus species from the Alps. Journal of Biogeography, 30,
581?590
-------------
Consuelo Hermosilla
PhD student
Departamento de Ecolog?a y Biolog?a Animal
Departamento de Bioqu?mica, Gen?tica e Inmunolog?a, ?rea de Gen?tica
Facultad de Ciencias del Mar
Campus de As Lagoas-Marcosende
Universidad de Vigo
36310 Vigo
SPAIN
Mobile: +34 692 633 298
oooO
( ) Oooo
( ( )
_) ) /
(_/
Stop Gaza Massacre
2010/6/9 Cl?ment Calenge <clement.calenge at gmail.com
<mailto:clement.calenge at gmail.com>>
On 06/09/2010 09:05 AM, Cl?ment Calenge wrote:
sum(dudi.pca(kasc2df(map), row.w =
dataenfa1$pr/sum(dataenfa1$pr),
scan=FALSE)$eig)
which gives you 5 only. The weights should sum to 1 (i.e.
they are
proportions). But then, how would you interpret this? This
is the same
as for the "global specialization".
Yes, but be careful: kasc2df returns a list with one component
"tab" (the component of interest) and one component "index" (the
component allowing to rebuild the original kasc), so that the
correct code is:
sum(dudi.pca(kasc2df(map)$tab, row.w =
dataenfa1$pr/sum(dataenfa1$pr), scan=FALSE)$eig)
I was a bit too hasty for this reply. Actually the code is
incorrect. Consider the following code:
pc <- dudi.pca(kasc2df(map)$tab, row.w = dataenfa1$pr/sum(dataenfa1$pr))
This code performs a *centered and scaled* PCA of the environmental
variables: this analysis first centers and scales the table
containing the value of the environmental variables. Therefore, for
each variable of pc$tab, the mean *weighted by the utilization
weights* is equal to zero and the variance *weighted by the
utilization weights* is equal to 1. Therefore, the sum of the
eigenvalues of the PCA on this transformed table is equal to the
number of environmental variables. This code is incorrect (thanks
Mathieu for noting the inconsistency). First, to calculate the
global tolerance, you would need to calculate:
pc <- dudi.pca(kasc2df(map)$tab, scan=FALSE)
This preliminary analysis is performed just to center/scale the
variables with uniform weighting. This allows to compare the
different variables in pc$tab (they all have the same average and
the same scale). *Then*, calculate the weighted and *unscaled* PCA
of the table pc$tab:
sum(dudi.pca(pc$tab, scale=FALSE, row.w =
dataenfa1$pr/sum(dataenfa1$pr), scan=FALSE)$eig)
This gives the tolerance of the species on the area,
Sorry for the confusion,
HTH,
Cl?ment Calenge
--
Cl?ment CALENGE
Cellule d'appui ? l'analyse de donn?es
Office national de la chasse et de la faune sauvage
Saint Benoist - 78610 Auffargis
tel. (33) 01.30.46.54.14
~$ whoami Mathieu Basille, Post-Doc ~$ locate Laboratoire d'?cologie Comportementale et de Conservation de la Faune + Centre d'?tude de la For?t D?partement de Biologie Universit? Laval, Qu?bec ~$ info http://ase-research.org/basille ~$ fortune ``If you can't win by reason, go for volume.'' Calvin, by Bill Watterson.