[R] Request for Help: Rotation of PCA Solution or Eigenvectors

Prof Brian D Ripley ripley at stats.ox.ac.uk
Sat Sep 22 08:38:18 CEST 2001

On Fri, 21 Sep 2001, Jonathan Baron wrote:

> >I am writing because I seek to perform a varimax rotation
> >on my Principal Components Analysis (PCA)  solution. (I have been
> >performing PCA's using the eigen command in R.) If you can tell me
> >how to perform this rotation when I use the eigen command (or the
> >princomp command) I would be thrilled.
> You must have the mva package if you are doing principle
> components.  Look at the help for it.  You will see "varimax" as
> one of the topics, and "factanal" as another.  I think that is
> what is available.  I don't think you can do varimax rotation on
> principal components (unless you write it yourself, assuming that
> it is meaningful).

You can do it, but whether it is meaningful is another question. Christian
Hoffmann has sent me examples.  He just calls princomp, and then calls
varimax on the loadings.  As an example (not his)

pc.cr <- princomp(USArrests, cor=TRUE)
varimax(loadings(pc.cr)[, 1:2])  # rotate the first two components

I don't believe that is the best way to use rotation in PCA (although it is
commonly used).  There is a discussion in the on-line Statistical
Complements to MASS3 (via http://www.stats.ox.ac.uk/pub/MASS3)
with recommendations from various sources and S-PLUS examples (that
would work with small changes in R).  Caveat: I am not an expert and the
authorities disagree.   The issues seem much more contentious than
using rotation in factor analysis.

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 mailing list