
princomp
performs a principal components analysis on the given
numeric data matrix and returns the results as an object of class
princomp
.princomp(x, ...)## S3 method for class 'formula':
princomp(formula, data = NULL, subset, na.action, \dots)
## S3 method for class 'default':
princomp(x, cor = FALSE, scores = TRUE, covmat = NULL,
subset = rep_len(TRUE, nrow(as.matrix(x))), ...)
## S3 method for class 'princomp':
predict(object, newdata, \dots)
model.frame
) containing the variables in the
formula formula
. By default the variables are taken from
environment(formula)
.x
.x
is
a formula one might specify cor
or scores
."princomp"
newdata
must contain columns with the same
names. Otherwise it must contain the same number of columns, to be
used in the same order.princomp
returns a list with class "princomp"
containing the following components:"loadings"
: see loadings
for its print
method.scores = TRUE
, the scores of the supplied
data on the principal components. These are non-null only if
x
was supplied, and if covmat
was also supplied if it
was a covariance list. For the formula method,
napredict()
is applied to handle the treatment of
values omitted by the na.action
.princomp
is a generic function with "formula"
and
"default"
methods. The calculation is done using eigen
on the correlation or
covariance matrix, as determined by cor
. This is done for
compatibility with the S-PLUS result. A preferred method of
calculation is to use svd
on x
, as is done in
prcomp
.
Note that the default calculation uses divisor N
for the
covariance matrix.
The print
method for these objects prints the
results in a nice format and the plot
method produces
a scree plot (screeplot
). There is also a
biplot
method.
If x
is a formula then the standard NA-handling is applied to
the scores (if requested): see napredict
.
princomp
only handles so-called R-mode PCA, that is feature
extraction of variables. If a data matrix is supplied (possibly via a
formula) it is required that there are at least as many units as
variables. For Q-mode PCA use prcomp
.
Venables, W. N. and B. D. Ripley (2002). Modern Applied Statistics with S, Springer-Verlag.
summary.princomp
, screeplot
,
biplot.princomp
,
prcomp
, cor
, cov
,
eigen
.require(graphics)
## The variances of the variables in the
## USArrests data vary by orders of magnitude, so scaling is appropriate
(pc.cr <- princomp(USArrests)) # inappropriate
princomp(USArrests, cor = TRUE) # =^= prcomp(USArrests, scale=TRUE)
## Similar, but different:
## The standard deviations differ by a factor of sqrt(49/50)
summary(pc.cr <- princomp(USArrests, cor = TRUE))
loadings(pc.cr) # note that blank entries are small but not zero
## The signs of the columns are arbitrary
plot(pc.cr) # shows a screeplot.
biplot(pc.cr)
## Formula interface
princomp(~ ., data = USArrests, cor = TRUE)
## NA-handling
USArrests[1, 2] <- NA
pc.cr <- princomp(~ Murder + Assault + UrbanPop,
data = USArrests, na.action = na.exclude, cor = TRUE)
pc.cr$scores[1:5, ]
## (Simple) Robust PCA:
## Classical:
(pc.cl <- princomp(stackloss))
## Robust:
(pc.rob <- princomp(stackloss, covmat = MASS::cov.rob(stackloss)))
Run the code above in your browser using DataLab