Learn R Programming

ade4 (version 1.7-5)

procuste: Simple Procruste Rotation between two sets of points

Description

performs a simple procruste rotation between two sets of points.

Usage

procuste(dfX, dfY, scale = TRUE, nf = 4, tol = 1e-07) "plot"(x, xax = 1, yax = 2, ...) "print"(x, ...) "randtest"(xtest, nrepet = 999, ...)

Arguments

dfX, dfY
two data frames with the same rows
scale
a logical value indicating whether a transformation by the Gower's scaling (1971) should be applied
nf
an integer indicating the number of kept axes
tol
a tolerance threshold to test whether the distance matrix is Euclidean : an eigenvalue is considered positive if it is larger than -tol*lambda1 where lambda1 is the largest eigenvalue.
x, xtest
an objet of class procuste
xax
the column number for the x-axis
yax
the column number for the y-axis
nrepet
the number of repetitions to perform the randomization test
...
further arguments passed to or from other methods

Value

returns a list of the class procuste with 9 components

References

Digby, P. G. N. and Kempton, R. A. (1987) Multivariate Analysis of Ecological Communities. Population and Community Biology Series, Chapman and Hall, London. Gower, J.C. (1971) Statistical methods of comparing different multivariate analyses of the same data. In Mathematics in the archaeological and historical sciences, Hodson, F.R, Kendall, D.G. & Tautu, P. (Eds.) University Press, Edinburgh, 138--149. Schönemann, P.H. (1968) On two-sided Procustes problems. Psychometrika, 33, 19--34. Torre, F. and Chessel, D. (1994) Co-structure de deux tableaux totalement appariés. Revue de Statistique Appliquée, 43, 109--121. Dray, S., Chessel, D. and Thioulouse, J. (2003) Procustean co-inertia analysis for the linking of multivariate datasets. Ecoscience, 10, 1, 110-119.

Examples

Run this code
data(macaca)
pro1 <- procuste(macaca$xy1, macaca$xy2, scal = FALSE)
pro2 <- procuste(macaca$xy1, macaca$xy2)
if(adegraphicsLoaded()) {
  g1 <- s.match(pro1$tabX, pro1$rotY, plab.cex = 0.7, plot = F)
  g2 <- s.match(pro1$tabY, pro1$rotX, plab.cex = 0.7, plot = F)
  g3 <- s.match(pro2$tabX, pro2$rotY, plab.cex = 0.7, plot = F)
  g4 <- s.match(pro2$tabY, pro2$rotX, plab.cex = 0.7, plot = F)
  G <- ADEgS(list(g1, g2, g3, g4), layout = c(2, 2))
} else {
  par(mfrow = c(2, 2))
  s.match(pro1$tabX, pro1$rotY, clab = 0.7)
  s.match(pro1$tabY, pro1$rotX, clab = 0.7)
  s.match(pro2$tabX, pro2$rotY, clab = 0.7)
  s.match(pro2$tabY, pro2$rotX, clab = 0.7)
  par(mfrow = c(1,1))
}

data(doubs)
pca1 <- dudi.pca(doubs$env, scal = TRUE, scann = FALSE)
pca2 <- dudi.pca(doubs$fish, scal = FALSE, scann = FALSE)
pro3 <- procuste(pca1$tab, pca2$tab, nf = 2)
if(adegraphicsLoaded()) {
  g11 <- s.traject(pro3$scorX, plab.cex = 0, plot = F)
  g12 <- s.label(pro3$scorX, plab.cex = 0.8, plot = F)
  g1 <- superpose(g11, g12)
  g21 <- s.traject(pro3$scorY, plab.cex = 0, plot = F)
  g22 <- s.label(pro3$scorY, plab.cex = 0.8, plot = F)
  g2 <- superpose(g21, g22)
  g3 <- s.arrow(pro3$loadX, plab.cex = 0.75, plot = F)
  g4 <- s.arrow(pro3$loadY, plab.cex = 0.75, plot = F)
  G <- ADEgS(list(g1, g2, g3, g4), layout = c(2, 2))

} else {
  par(mfrow = c(2, 2))
  s.traject(pro3$scorX, clab = 0)
  s.label(pro3$scorX, clab = 0.8, add.p = TRUE)
  s.traject(pro3$scorY, clab = 0)
  s.label(pro3$scorY, clab = 0.8, add.p = TRUE)
  s.arrow(pro3$loadX, clab = 0.75)
  s.arrow(pro3$loadY, clab = 0.75)
  par(mfrow = c(1, 1))
}

plot(pro3)
randtest(pro3)

data(fruits)
plot(procuste(scalewt(fruits$jug), scalewt(fruits$var)))

Run the code above in your browser using DataLab