\Header{prcomp}{Principal Components Analysis}
\alias{plot.prcomp}{prcomp}
\alias{print.prcomp}{prcomp}
\alias{print.summary.prcomp}{prcomp}
\alias{summary.prcomp}{prcomp}
\keyword{multivariate}{prcomp}
\begin{Description}\relax
Performs a principal components analysis on the given data matrix
and returns the results as an object of class \code{prcomp}.\end{Description}
\begin{Usage}
\begin{verbatim}
prcomp(x, retx = TRUE, center = TRUE, scale. = FALSE, tol = NULL)
\end{verbatim}
\end{Usage}
\begin{Arguments}
\begin{ldescription}
\item[\code{x}] a numeric or complex matrix (or data frame) which provides
the data for the principal components analysis.
\item[\code{retx}] a logical value indicating whether the rotated variables
should be returned.
\item[\code{center}] a logical value indicating whether the variables
should be shifted to be zero centered. Alternately, a vector of
length equal the number of columns of \code{x} can be supplied.
The value is passed to \code{scale}.
\item[\code{scale.}] a logical value indicating whether the variables should
be scaled to have unit variance before the analysis takes
place. The default is \code{FALSE} for consistency with S, but
in general scaling is advisable. Alternately, a vector of length
equal the number of columns of \code{x} can be supplied.  The
value is passed to \code{scale}.
\item[\code{tol}] a value indicating the magnitude below which components
should be omitted. (Components are omitted if their
standard deviations are less than or equal to \code{tol} times the
standard deviation of the first component.)
With the default null setting, no components
are omitted.  Other settings for tol could be \code{tol = 0} or
\code{tol = sqrt(.Machine\$double.eps)}, which would omit
essentially constant components.
\end{ldescription}
\end{Arguments}
\begin{Details}\relax
The calculation is done by a singular value decomposition of the
(centered and scaled) data matrix, not by using \code{eigen} on the
covariance matrix.  This
is generally the preferred method for numerical accuracy.  The
\code{print} method for the these objects prints the results in a nice
format and the \code{plot} method produces a scree plot.

If the input has more variables than units then \code{\Link{La.svd}}
is used, and the results may differ in sign from versions prior to 1.7.0.\end{Details}
\begin{Value}
\code{prcomp} returns an list with class \code{"prcomp"}
containing the following components:
\begin{ldescription}
\item[\code{sdev}] the standard deviations of the principal components
(i.e., the square roots of the eigenvalues of the
covariance/correlation matrix, though the calculation
is actually done with the singular values of the data matrix).
\item[\code{rotation}] the matrix of variable loadings (i.e., a matrix
whose columns contain the eigenvectors).  The function
\code{princomp} returns this in the element \code{loadings}.
\item[\code{x}] if \code{retx} is true the value of the rotated data (the
data multiplied by the \code{rotation} matrix) is returned.
\end{ldescription}
\end{Value}
\begin{Note}\relax
The signs of the columns of the rotation matrix are arbitrary, and
so may differ between different programs for PCA, and even between
different builds of \R.\end{Note}
\begin{References}\relax
Becker, R. A., Chambers, J. M. and Wilks, A. R. (1988)
\emph{The New S Language}.
Wadsworth \& Brooks/Cole.

Mardia, K. V., J. T. Kent, and J. M. Bibby (1979)
\emph{Multivariate Analysis}, London: Academic Press.

Venables, W. N. and B. D. Ripley (1997, 9)
\emph{Modern Applied Statistics with S-PLUS}, Springer-Verlag.\end{References}
\begin{SeeAlso}\relax
\code{\Link{princomp}}, \code{\Link{cor}}, \code{\Link{cov}},
\code{\Link{svd}}, \code{\Link{eigen}}.\end{SeeAlso}
\begin{Examples}
\begin{ExampleCode}
## the variances of the variables in the
## USArrests data vary by orders of magnitude, so scaling is appropriate
data(USArrests)
prcomp(USArrests)  # inappropriate
prcomp(USArrests, scale = TRUE)
plot(prcomp(USArrests))
summary(prcomp(USArrests, scale = TRUE))
\end{ExampleCode}
\end{Examples}

