[R] Adding new points to a metaMDS ordination ("vegan" pkg)

Jari Oksanen jarioksa at sun3.oulu.fi
Fri Aug 31 10:43:44 CEST 2007

Simon Goring sgoring at sfu.ca wrote:
> Hi, I've been using R for a while now but I've got a problem with 
> metaMDS (in the vegan package) that I can't quite figure out.
> I have a set of proportion data (from 0-1, rows sum to 1) that I apply 
> metaMDS to using the command:
> nMDS.set=metaMDS(sqrt(test.set),distance="euclidean",k=3,zerodist="add",autotransform=FALSE)
> I am using a squared-chord distance metric here.  It gives me a great 
> ordination that appears to represent my ecological gradients well.  What 
> I want to do is passively add new points to the ordination in an effort 
> to "predict" visually certain ecological attributes.
> I have tried adding the new points passively using matrix multiplication:
> passive.points=sqrt(New.points) %*% nMDS.set[[8]]
> This appears to work, however, I know that one point in "New.points" was 
> originally included in the "test.set" and when I plot "passive.points" 
> onto the nMDS.set ordination those two points do not line up (they are 
> actually relatively far from one another.
> Am I mis-using the "Species Scores" returned by metaMDS, or am I 
> overlooking something?  I've used both of the shrink switches 
> (TRUE/FALSE) in the hope that that would help.
Yes you are. Species scores are for species scores, and you cannot use
them to add new sample points to you ordination. The method of nonmetric
ordination is quite different from metric weighted averaging and mixing
these is doomed to fail. In principle, it may be possible to work out
method of adding new points to NMDS, but that may not be easy and it may
be unstable (there may be several alternative holes for a point, and
finding the deepest hole may be uncertain). Moreover, you would need
distance matrix between your new points and old points. I run some tests
a couple of years ago, mainly to identify unstable points with
alternative locations, but that produced nothing that could be called

Code is welcome.

BTW, it seems that you didn't use squared chord distance, but just chord

Best wishes, Jari Oksanen
Jari Oksanen <jarioksa at cc.oulu.fi>

More information about the R-help mailing list