R: Principal Components Analysis

princomp {mva} | R Documentation

## Principal Components Analysis

### Description

`princomp` performs a principal components analysis on the given data matrix and returns the results as an object of class `princomp`.

### Usage

    princomp(x, data = NULL, subset, na.action, ...)
    princomp(x, cor = FALSE, scores = TRUE, covmat = NULL,
             subset = rep(TRUE, nrow(as.matrix(x))), ...)

### Arguments

`x` | a formula or matrix (or data frame) which provides the data for the principal components analysis.
`data` | an optional data frame containing the variables in the formula `x`. By default the variables are taken from `environment(x)`.
`subset` | an optional vector used to select rows (observations) of the data matrix `x`.
`na.action` | a function which indicates what should happen when the data contain `NA`s. The default is set by the `na.action` setting of `options`, and is `na.fail` if that is unset. The ``factory-fresh'' default is `na.omit`.
`cor` | a logical value indicating whether the calculation should use the correlation matrix or the covariance matrix.
`scores` | a logical value indicating whether the score on each principal component should be calculated.
`covmat` | a covariance matrix, or a covariance list as returned by `cov.wt`, `cov.mve` or `cov.mcd`. If supplied, this is used rather than the covariance matrix of `x`.
`...` | arguments passed to or from other methods. If `x` is a formula one might specify `cor` or `scores`.

### Details

`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 the 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`.

### Value

`princomp` returns a list with class `"princomp"` containing the following components:

`sdev` | the standard deviations of the principal components.
`loadings` | the matrix of variable loadings (i.e., a matrix whose columns contain the eigenvectors). This is of class `"loadings"`: see `loadings` for its `print` method.
`center` | the means that were subtracted.
`scale` | the scalings applied to each variable.
`n.obs` | the number of observations.
`scores` | if `scores = TRUE`, the scores of the supplied data on the principal components.
`call` | the matched call.
`na.action` | If relevant.

### References

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

Venables, W. N. and B. D. Ripley (1997, 9). Modern Applied Statistics with S-PLUS, Springer-Verlag.

### See Also

`summary.princomp`, `screeplot`, `biplot.princomp`, `prcomp`, `cor`, `cov`, `eigen`.

### Examples

    ## The variances of the variables in the
    ## USArrests data vary by orders of magnitude, so scaling is appropriate
    data(USArrests)
    (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
    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(~ ., data = USArrests, na.action=na.exclude, cor = TRUE)
    pc.cr$scores

[Package Contents]