Weighted Classical (Metric) Multidimensional Scaling
Weighted classical multidimensional scaling, also known as weighted principal coordinates analysis.
wcmdscale(d, k, eig = FALSE, add = FALSE, x.ret = FALSE, w) ## S3 method for class 'wcmdscale' plot(x, choices = c(1, 2), type = "t", ...) ## S3 method for class 'wcmdscale' scores(x, choices = NA, ...)
d |
a distance structure such as that returned by |
k |
the dimension of the space which the data are to be represented in; must be in {1,2,…,n-1}. If missing, all dimensions with above zero eigenvalue. |
eig |
indicates whether eigenvalues should be returned. |
add |
an additive constant c is added to the non-diagonal
dissimilarities such that all n-1 eigenvalues are
non-negative. Alternatives are |
x.ret |
indicates whether the doubly centred symmetric distance matrix should be returned. |
w |
Weights of points. |
x |
The |
choices |
Axes to be returned; |
type |
Type of graph which may be |
... |
Other arguments passed to graphical functions. |
Function wcmdscale is based on function
cmdscale (package stats of base R), but it uses
point weights. Points with high weights will have a stronger
influence on the result than those with low weights. Setting equal
weights w = 1 will give ordinary multidimensional scaling.
With default options, the function returns only a matrix of scores
scaled by eigenvalues for all real axes. If the function is called
with eig = TRUE or x.ret = TRUE, the function returns
an object of class "wcmdscale" with print,
plot, scores, eigenvals and
stressplot methods, and described in section Value.
The method is Euclidean, and with non-Euclidean dissimilarities some
eigenvalues can be negative. If this disturbs you, this can be
avoided by adding a constant to non-diagonal dissimilarities making
all eigenvalues non-negative. The function implements methods
discussed by Legendre & Anderson (1999): The method of Lingoes
(add="lingoes") adds the constant c to squared
dissimilarities d using sqrt(d^2 + 2*c)
and the method of Cailliez (add="cailliez") to
dissimilarities using d + c. Legendre & Anderson (1999)
recommend the method of Lingoes, and base R function
cmdscale implements the method of Cailliez.
If eig = FALSE and x.ret = FALSE (default), a
matrix with k columns whose rows give the coordinates of
points corresponding to positive eigenvalues. Otherwise, an object
of class wcmdscale containing the components that are mostly
similar as in cmdscale:
points |
a matrix with |
eig |
the n-1 eigenvalues computed during the scaling
process if |
x |
the doubly centred and weighted distance matrix if
|
ac, add |
additive constant and adjustment method used to avoid
negative eigenvalues. These are |
GOF |
Goodness of fit statistics for |
weights |
Weights. |
negaxes |
A matrix of scores for axes with negative eigenvalues
scaled by the absolute eigenvalues similarly as
|
call |
Function call. |
Gower, J. C. (1966) Some distance properties of latent root and vector methods used in multivariate analysis. Biometrika 53, 325–328.
Legendre, P. & Anderson, M. J. (1999). Distance-based redundancy analysis: testing multispecies responses in multifactorial ecological experiments. Ecology 69, 1–24.
Mardia, K. V., Kent, J. T. and Bibby, J. M. (1979). Chapter 14 of Multivariate Analysis, London: Academic Press.
The function is modelled after cmdscale, but adds
weights (hence name) and handles negative eigenvalues differently.
eigenvals.wcmdscale and
stressplot.wcmdscale are some specific methods. Other
multidimensional scaling methods are monoMDS, and
isoMDS and sammon in package
MASS.
## Correspondence analysis as a weighted principal coordinates ## analysis of Euclidean distances of Chi-square transformed data data(dune) rs <- rowSums(dune)/sum(dune) d <- dist(decostand(dune, "chi")) ord <- wcmdscale(d, w = rs, eig = TRUE) ## Ordinary CA ca <- cca(dune) ## Eigevalues are numerically similar ca$CA$eig - ord$eig ## Configurations are similar when site scores are scaled by ## eigenvalues in CA procrustes(ord, ca, choices=1:19, scaling = "sites") plot(procrustes(ord, ca, choices=1:2, scaling="sites")) ## Reconstruction of non-Euclidean distances with negative eigenvalues d <- vegdist(dune) ord <- wcmdscale(d, eig = TRUE) ## Only positive eigenvalues: cor(d, dist(ord$points)) ## Correction with negative eigenvalues: cor(d, sqrt(dist(ord$points)^2 - dist(ord$negaxes)^2))
Please choose more modern alternatives, such as Google Chrome or Mozilla Firefox.