问题
I have been doing some ordinations on a data set that I have of abundances of species at different sampling points. I am using metaMDS in vegan to do this. With this function you can either (1)enter directly the community data (sites in rows and species in columns) and specify what type of distance you want it to use (i.e. jaccard, brays curtis, euclidean, etc.) and the function calls vegdist to do this. On the other hand you can (2)give the metaMDS a distance matrix you have already created, potentially using vegdist (separate from the metaMDS function). Where I am confused is that if I do the first strategy I get one answer, and when I do the second (and then putting that distance matrix into the metaMDS function) I get a totally different answer (very different stress values, different ordination coordinates). And when I call for the distance matrix created in the first strategy the distances are drastically different then what I get from just vegdist function. I read in passing, researching something else, that when metaMDS calls the vegdist function it is finding the distances in multi-dimensional space, while just using vegdist is in a single dimension. Essentially I am asking is how does metaMDS call and compute the distances with vegdist (is it doing it in multi-dimensional space?) and how is that different than simply using vegdist itself? Hopefully in understanding these differences I can discern which is the best and most appropriate method for my dataset.
mrja<-read.table("example.txt")
jac<-vegdist(mrja,method="jaccard")
head(jac)
[1] 0.7910448 0.8721461 0.7157360 0.9075908 0.9335038 0.9104478 ###first six distances
ordjac1<-metaMDS(jac,k=2)
ordjac1$stress
[1] 0.169781 ordjac1
Call: metaMDS(comm = jac, k = 2)
global Multidimensional Scaling using monoMDS
Data: jac Distance: jaccard
Dimensions: 2 Stress: 0.169781 Stress type 1, weak ties No convergent solutions - best solution after 20 tries Scaling: centring, PC rotation Species: scores missing
ordjac2<-metaMDS(mrja,k=2,distance="jaccard")
ordjac2$stress
[1] 0.2367037
head(ordjac2$dist)
[1] 5.259303e-06 2.812693e-05 1.879357e-02 1.216611e-01 3.913638e-02 [6] 7.444730e-02 ###first six distances
ordjac2
Call: metaMDS(comm = mrja, distance = "jaccard", k = 2)
global Multidimensional Scaling using monoMDS
Data: wisconsin(sqrt(mrja)) Distance: jaccard
Dimensions: 2 Stress: 0.2367037 Stress type 1, weak ties No convergent solutions - best solution after 20 tries Scaling: centring, PC rotation, halfchange scaling Species: expanded scores based on ‘wisconsin(sqrt(mrja))’
回答1:
There is not sufficient information, but perhaps metaMDS
performed some transformation and standardization. This is seen in tracing information and in printed output. For instance, we have
> metaMDS(varespec)
Square root transformation
Wisconsin double standardization
...
global Multidimensional Scaling using monoMDS
Data: wisconsin(sqrt(varespec))
Distance: bray
which tells you that data were first squareroot transformed and then Wisconsin standardized. Do you see something like this? You can turn off these by setting argument autotransform = FALSE
in the metaMDS()
call. You can start by providing us this information.
来源:https://stackoverflow.com/questions/25629645/r-metamds-ordination-distances