cmdscale {stats} | R Documentation |
Classical multidimensional scaling of a data matrix. Also known as principal coordinates analysis (Gower, 1966).
cmdscale(d, k = 2, eig = FALSE, add = FALSE, x.ret = FALSE)
d |
a distance structure such as that returned by dist
or a full symmetric matrix containing the dissimilarities. |
k |
the dimension of the space which the data are to be represented in; must be in {1, 2, …, n-1}. |
eig |
indicates whether eigenvalues should be returned. |
add |
logical indicating if an additive constant c* should be computed, and added to the non-diagonal dissimilarities such that all n-1 eigenvalues are non-negative. |
x.ret |
indicates whether the doubly centred symmetric distance matrix should be returned. |
Multidimensional scaling takes a set of dissimilarities and returns a set of points such that the distances between the points are approximately equal to the dissimilarities. (It is a major part of what ecologists call ‘ordination’.)
A set of Euclidean distances on n points can be represented
exactly in at most n-1 dimensions. However, the approximation
given by classical scaling for non-Eucliean distances can be poor for
large k
, and warnings about negative eigenvalues should be
heeded.
The representation is only determined up to location (cmdscale
takes the column means of the configuration to be at the origin),
rotations and reflections. The configuration returned is given in
principal-component axes, so the reflection chosen may differ between
R platforms (see prcomp
).
When add = TRUE
, an additive constant c* is computed, and
the dissimilarities d[i,j] + c* are used instead of
the original d[i,j]'s.
Whereas S (Becker et al., 1988) computes this constant using an approximation suggested by Torgerson, R uses the analytical solution of Cailliez (1983), see also Cox and Cox (2001).
If eig = FALSE
, add = FALSE
and x.ret = FALSE
(default), a matrix with k
columns whose rows give the
coordinates of the points chosen to represent the dissimilarities.
Otherwise, a list containing the following components.
points |
a matrix with k columns whose rows give the
coordinates of the points chosen to represent the dissimilarities. |
eig |
the n eigenvalues computed during the scaling process if
eig is true. NB: versions of R before 2.12.1
returned only k but were documented to return n-1. |
x |
the doubly centered distance matrix if x.ret is true. |
ac |
the additive constant c*, 0 if add=FALSE . |
GOF |
a numeric vector of length 2, equal to say (g.1,g.2), where g.i = (sum{j=1..k} λ[j]) / (sum{j=1..n} T.i(λ[j])), where λ[j] are the eigenvalues (sorted in decreasing order), T.1(v) = abs(v), and T.2(v) = max(v, 0). |
Becker, R. A., Chambers, J. M. and Wilks, A. R. (1988) The New S Language. Wadsworth & Brooks/Cole.
Cailliez, F. (1983) The analytical solution of the additive constant problem. Psychometrika 48, 343–349.
Cox, T. F. and Cox, M. A. A. (2001) Multidimensional Scaling. Second edition. Chapman and Hall.
Gower, J. C. (1966) Some distance properties of latent root and vector methods used in multivariate analysis. Biometrika 53, 325–328.
Krzanowski, W. J. and Marriott, F. H. C. (1994) Multivariate Analysis. Part I. Distributions, Ordination and Inference. London: Edward Arnold. (Especially pp. 108–111.)
Mardia, K. V., Kent, J. T. and Bibby, J. M. (1979). Chapter 14 of Multivariate Analysis, London: Academic Press.
Seber, G. A. F. (1984). Multivariate Observations. New York: Wiley.
Torgerson, W. S. (1958). Theory and Methods of Scaling. New York: Wiley.
dist
.
isoMDS
and sammon
in package MASS provide alternative methods of multidimensional
scaling.
require(graphics) loc <- cmdscale(eurodist) x <- loc[, 1] y <- -loc[, 2] # reflect so North is at the top ## note asp = 1, to ensure Euclidean distances are represented correctly plot(x, y, type = "n", xlab = "", ylab = "", asp = 1, axes = FALSE, main = "cmdscale(eurodist)") text(x, y, rownames(loc), cex = 0.6)