cancor                 package:stats                 R Documentation

Canonical Correlations

Description:

     Compute the canonical correlations between two data matrices.

Usage:

     cancor(x, y, xcenter = TRUE, ycenter = TRUE)

Arguments:

       x: numeric matrix (n * p1), containing the x coordinates.

       y: numeric matrix (n * p2), containing the y coordinates.

 xcenter: logical or numeric vector of length p1, describing any
          centering to be done on the x values before the analysis.  If
          'TRUE' (default), subtract the column means. If 'FALSE', do
          not adjust the columns.  Otherwise, a vector of values to be
          subtracted from the columns.

 ycenter: analogous to 'xcenter', but for the y values.

Details:

     The canonical correlation analysis seeks linear combinations of
     the 'y' variables which are well explained by linear combinations
     of the 'x' variables. The relationship is symmetric as 'well
     explained' is measured by correlations.

Value:

     A list containing the following components: 

     cor: correlations.

   xcoef: estimated coefficients for the 'x' variables.

   ycoef: estimated coefficients for the 'y' variables.

 xcenter: the values used to adjust the 'x' variables.

 ycenter: the values used to adjust the 'x' variables.

References:

     Becker, R. A., Chambers, J. M. and Wilks, A. R. (1988) _The New S
     Language_. Wadsworth & Brooks/Cole.

     Hotelling H. (1936). Relations between two sets of variables.
     _Biometrika_, *28*, 321-327.

     Seber, G. A. F. (1984). _Multivariate Observations_. New York:
     Wiley, p. 506f.

See Also:

     'qr', 'svd'.

Examples:

     data(LifeCycleSavings)
     pop <- LifeCycleSavings[, 2:3]
     oec <- LifeCycleSavings[, -(2:3)]
     cancor(pop, oec)

     x <- matrix(rnorm(150), 50, 3)
     y <- matrix(rnorm(250), 50, 5)
     (cxy <- cancor(x, y))
     all(abs(cor(x %*% cxy$xcoef,
                 y %*% cxy$ycoef)[,1:3] - diag(cxy $ cor)) < 1e-15)
     all(abs(cor(x %*% cxy$xcoef) - diag(3)) < 1e-15)
     all(abs(cor(y %*% cxy$ycoef) - diag(5)) < 1e-15)

