Simon Goring
2007-Aug-24 18:43 UTC
[R] Adding new points to a metaMDS ordination ("vegan" pkg)
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. I don't want to do the metaMDS ordination on the whole set of points (test.set combined with New.points) since I am afraid adding "New.points" will change the underlying relationship between the "test.set" points. Thanks in advance. Simon Goring
Jari Oksanen
2007-Aug-31 08:43 UTC
[R] Adding new points to a metaMDS ordination ("vegan" pkg)
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 user-friendly. Code is welcome. BTW, it seems that you didn't use squared chord distance, but just chord distance. Best wishes, Jari Oksanen -- Jari Oksanen <jarioksa at cc.oulu.fi>