\HeaderA{varimax}{Rotation Methods for Factor Analysis}{varimax}
\aliasA{promax}{varimax}{promax}
\keyword{multivariate}{varimax}
\begin{Description}\relax
These functions \sQuote{rotate} loading matrices in factor analysis.
\end{Description}
\begin{Usage}
\begin{verbatim}
varimax(x, normalize = TRUE, eps = 1e-5)
promax(x, m = 4)
\end{verbatim}
\end{Usage}
\begin{Arguments}
\begin{ldescription}
\item[\code{x}] A loadings matrix, with \eqn{p}{} rows and \eqn{k < p}{} columns
\item[\code{m}] The power used the target for \code{promax}.  Values of 2 to
4 are recommended.
\item[\code{normalize}] logical. Should Kaiser normalization be performed?
If so the rows of \code{x} are re-scaled to unit length before
rotation, and scaled back afterwards.
\item[\code{eps}] The tolerance for stopping: the relative change in the sum
of singular values.
\end{ldescription}
\end{Arguments}
\begin{Details}\relax
These seek a \sQuote{rotation} of the factors \code{x \%*\% T} that
aims to clarify the structure of the loadings matrix.  The matrix
\code{T} is a rotation (possibly with reflection) for \code{varimax},
but a general linear transformation for \code{promax}, with the
variance of the factors being preserved.
\end{Details}
\begin{Value}
A list with components
\begin{ldescription}
\item[\code{loadings}] The \sQuote{rotated} loadings matrix,
\code{x \%*\% rotmat}, of class \code{"loadings"}.
\item[\code{rotmat}] The \sQuote{rotation} matrix.
\end{ldescription}
\end{Value}
\begin{References}\relax
Hendrickson, A. E. and White, P. O. (1964) Promax: a quick method for
rotation to orthogonal oblique structure. \emph{British Journal of
Statistical Psychology}, \bold{17}, 65--70.

Horst, P. (1965) \emph{Factor Analysis of Data Matrices.} Holt,
Rinehart and Winston.  Chapter 10.

Kaiser, H. F. (1958) The varimax criterion for analytic rotation in
factor analysis. \emph{Psychometrika} \bold{23}, 187--200.

Lawley, D. N. and Maxwell, A. E. (1971) \emph{Factor Analysis as a
Statistical Method}. Second edition. Butterworths.
\end{References}
\begin{SeeAlso}\relax
\code{\LinkA{factanal}{factanal}}, \code{\LinkA{Harman74.cor}{Harman74.cor}}.
\end{SeeAlso}
\begin{Examples}
\begin{ExampleCode}
## varimax with normalize = TRUE is the default
fa <- factanal( ~., 2, data = swiss)
varimax(loadings(fa), normalize = FALSE)
promax(loadings(fa))
\end{ExampleCode}
\end{Examples}

