isomap {vegan} R Documentation

## Isometric Feature Mapping Ordination

### Description

The function performs isometric feature mapping which consists of three simple steps: (1) retain only some of the shortest dissimilarities among objects, (2) estimate all dissimilarities as shortest path distances, and (3) perform metric scaling (Tenenbaum et al. 2000).

### Usage

```isomap(dist, ndim=10, ...)
isomapdist(dist, epsilon, k, path = "shortest", fragmentedOK =FALSE, ...)
## S3 method for class 'isomap':
summary(object, axes = 4, ...)
## S3 method for class 'isomap':
plot(x, net = TRUE, n.col = "gray", ...)
rgl.isomap(x, web = "white", ...)
```

### Arguments

 `dist` Dissimilarities. `ndim` Number of axes in metric scaling (argument `k` in `cmdscale`). `epsilon` Shortest dissimilarity retained. `k` Number of shortest dissimilarities retained for a point. If both `epsilon` and `k` are given, `epsilon` will be used. `path` Method used in `stepacross` to estimate the shortest path, with alternatives `"shortest"` and `"extended"`. `fragmentedOK` What to do if dissimilarity matrix is fragmented. If `TRUE`, analyse the largest connected group, otherwise stop with error. `x, object` An `isomap` result object. `axes` Number of axes displayed. `net` Draw the net of retained dissimilarities. `n.col` Colour of drawn net segments. `web` Colour of the web in rgl graphics. `...` Other parameters passed to functions.

### Details

The function `isomap` first calls function `isomapdist` for dissimilarity transformation, and then performs metric scaling for the result. All arguments to `isomap` are passed to `isomapdist`. The functions are separate so that the `isompadist` transformation could be easily used with other functions than simple linear mapping of `cmdscale`.

Function `isomapdist` retains either dissimilarities equal or shorter to `epsilon`, or if `epsilon` is not given, at least `k` shortest dissimilarities for a point. Then a complete dissimilarity matrix is reconstructed using `stepacross` using either flexible shortest paths or extended dissimilarities (for details, see `stepacross`).

De'ath (1999) actually published essentially the same method before Tenenbaum et al. (2000), and De'ath's function is available in `xdiss` in package mvpart. The differences are that `isomap` introduced the `k` criterion, whereas De'ath only used `epsilon` criterion. In practice, De'ath also retains higher proportion of dissimilarities than typical `isomap`.

In addition to the standard `plot` function, function `rgl.isomap` can make dynamic 3D plots that can be rotated on the screen. The functions is based on `ordirgl`, but it adds the connecting lines. The function passes extra arguments to `scores` and `ordirgl` functions so that you can select axes, or define colours and sizes of points.

### Value

Function `isomapdist` returns a dissimilarity object similar to `dist`. Function `isomap` returns an object of class `isomap` with `plot` and `summary` methods. The `plot` function returns invisibly an object of class `ordiplot`. Function `scores` can extract the ordination scores.

### Note

Tenenbaum et al. (2000) justify `isomap` as a tool of unfolding a manifold (e.g. a 'Swiss Roll'). Even with a manifold structure, the sampling must be even and dense so that dissimilarities along a manifold are shorter than across the folds. If data do not have such a manifold structure, the results are very sensitive to parameter values.

Jari Oksanen

### References

De'ath, G. (1999) Extended dissimilarity: a method of robust estimation of ecological distances from high beta diversity data. Plant Ecology 144, 191–199

Tenenbaum, J.B., de Silva, V. & Langford, J.C. (2000) A global network framework for nonlinear dimensionality reduction. Science 290, 2319–2323.

The underlying functions that do the proper work are `stepacross`, `distconnected` and `cmdscale`. Package mvpart provides a parallel (but a bit different) implementation (`xdiss`). Moreover, vegan function `metaMDS` may trigger `stepacross` transformation, but usually only for longest dissimilarities. The `plot` method of vegan minimum spanning tree function (`spantree`) has even more extreme way of isomapping things.

### Examples

```## The following examples also overlay minimum spanning tree to
## the graphics in red.
op <- par(mar=c(4,4,1,1)+0.2, mfrow=c(2,2))
data(BCI)
dis <- vegdist(BCI)
tr <- spantree(dis)
pl <- ordiplot(cmdscale(dis), main="cmdscale")
lines(tr, pl, col="red")
ord <- isomap(dis, k=3)
ord
pl <- plot(ord, main="isomap k=3")
lines(tr, pl, col="red")
pl <- plot(isomap(dis, k=5), main="isomap k=5")
lines(tr, pl, col="red")
pl <- plot(isomap(dis, epsilon=0.45), main="isomap epsilon=0.45")
lines(tr, pl, col="red")
par(op)
## The following command requires user interaction
## Not run:
rgl.isomap(ord, size=4, color="hotpink")
## End(Not run)
```

[Package vegan version 1.16-32 Index]