[R] canonical variates
Prof Brian Ripley
ripley at stats.ox.ac.uk
Thu Feb 24 18:28:23 CET 2000
> Date: Thu, 24 Feb 2000 16:46:59 +0100 (MET)
> From: Mauro Andrea Cremonini <mac at foodsci.unibo.it>
> Dear all, I am a new R user so forgive my perhaps naive question.
> I am looking for a R canonical variates routine, which as far as I
> understand it is not contained in the mva multivariate package.
> Anybody has already written this routine? And where can I find it?
Not that I know of, but it is fairly simple. Suppose you have data matrices
A and B on the same observations. Then
cancor <- function(A, B)
Ap <- prcomp(scale(A, T, F), retx=T)
Apc <- Ap$x %*% diag(1/Ap$sdev)
Bp <- prcomp(scale(B, T, F), retx=T)
Bpc <- Bp$x %*% diag(1/Bp$sdev)
Sigma <- crossprod(Apc, Bpc)/(nrow(A) - 1)
s <- svd(Sigma, ncol(A), ncol(B))
return(list(cor=s$d, canvar.x=Apc %*% s$u, canvar.y=Bpc %*% s$v))
should do the trick. The canonical variates are zero-mean, unit-variance
I have only done some simple checks, but this seems to agree with
S-PLUS up to the different normalizations.
Brian D. Ripley, ripley at stats.ox.ac.uk
Professor of Applied Statistics, http://www.stats.ox.ac.uk/~ripley/
University of Oxford, Tel: +44 1865 272861 (self)
1 South Parks Road, +44 1865 272860 (secr)
Oxford OX1 3TG, UK Fax: +44 1865 272595
r-help mailing list -- Read http://www.ci.tuwien.ac.at/~hornik/R/R-FAQ.html
Send "info", "help", or "[un]subscribe"
(in the "body", not the subject !) To: r-help-request at stat.math.ethz.ch
More information about the R-help