vegan (version 2.4-2)

# isomap: 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, ...)
"summary"(object, axes = 4, ...)
"plot"(x, net = TRUE, n.col = "gray", type = "points", ...)```

## 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. This can also be a vector that is recycled for points, and the colour of the net segment is a mixture of joined points.
type
Plot observations either as `"points"`, `"text"` or use `"none"` to plot no observations. The `"text"` will use `ordilabel` if `net = TRUE` and `ordiplot` if `net = FALSE`, and pass extra arguments to these functions.
...
Other parameters passed to functions.

## 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.

## 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 function `xdiss` in non-CRAN 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`.

The `plot` function uses internally `ordiplot`, except that it adds text over net using `ordilabel`. The `plot` function passes extra arguments to these functions. In addition, vegan3d package has function `rgl.isomap` to make dynamic 3D plots that can be rotated on the screen.

## 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`. 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

Run this code
```## 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)
## colour points and web by the dominant species
dom <- apply(BCI, 1, which.max)
## need nine colours, but default palette  has only eight
op <- palette(c(palette("default"), "sienna"))
plot(ord, pch = 16, col = dom, n.col = dom)
palette(op)
```

Run the code above in your browser using DataCamp Workspace