Learn R Programming

rrcov (version 0.4-01)

Robpca: ROBPCA - ROBust method for Principal Components Analysis

Description

The ROBPCA algorithm was proposed by Hubert et al (2005) and stays for 'ROBust method for Principal Components Analysis'. It is resistant to outliers in the data. The robust loadings are computed using projection-pursuit techniques and the MCD method. Therefore ROBPCA can be applied to both low and high-dimensional data sets. In low dimensions, the MCD method is applied.

Usage

Robpca(x, ...)
## S3 method for class 'default':
Robpca(x, k = 0, kmax = 10, alpha = 0.75, mcd = TRUE, trace=FALSE, \dots)
## S3 method for class 'formula':
Robpca(formula, data = NULL, subset, na.action, \dots)

Arguments

formula
a formula with no response variable, referring only to numeric variables.
data
an optional data frame (or similar: see model.frame) containing the variables in the formula formula.
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 NAs. The default is set by the na.action setting of options, and is
...
arguments passed to or from other methods.
x
a numeric matrix (or data frame) which provides the data for the principal components analysis.
k
number of principal components to compute. If k is missing, or k = 0, the algorithm itself will determine the number of components by finding such k that $l_k/l_1 >= 10.E-3$ and $\Sigma_{j=1}^k l_j/
kmax
maximal number of principal components to compute. Default is kmax=10. If k is provided, kmax does not need to be specified, unless k is larger than 10.
alpha
this parameter measures the fraction of outliers the algorithm should resist. In MCD alpha controls the size of the subsets over which the determinant is minimized, i.e. alpha*n observations are used for computing the determinant. Allowed
mcd
Logical - when the number of variables is sufficiently small, the loadings are computed as the eigenvectors of the MCD covariance matrix, hence the function CovMcd() is automatically called. The n
trace
whether to print intermediate results. Default is trace = FALSE

Value

Details

Robpca, serving as a constructor for objects of class Robpca-class is a generic function with "formula" and "default" methods. The calculation is done using the ROBPCA method of Hubert et al (2005) which can be described briefly as follows. For details see the relevant references. Let n denote the number of observations, and p the number of original variables in the input data matrix X. The ROBPCA algorithm finds a robust center M (p x 1) of the data and a loading matrix P which is (p x k) dimensional. Its columns are orthogonal and define a new coordinate system. The scores T, an (n x k) matrix, are the coordinates of the centered observations with respect to the loadings: $$T=(X-M)P$$ The ROBPCA algorithm also yields a robust covariance matrix (often singular) which can be computed as $$S=PLP^t$$ where $L$ is the diagonal matrix with the eigenvalues $l_1, \dots, \l_k$. This is done in the following three main steps: Step 1: The data are preprocessed by reducing their data space to the subspace spanned by the n observations. This is done by singular value decomposition of the input data matrix. As a result the data are represented using at most n-1=rank(X) without loss of information. Step 2: In this step for each data point a measure of outlyingness is computed. For this purpose the high-dimensional data points are projected on many univariate directions, each time the univariate MCD estimator of location and scale is computed and the standardized distance to the center is measured. The largest of these distances (over all considered directions) is the outlyingness measure of the data point. The h data points with smallest outlyingness measure are used to compute the covariance matrix $\Sigma_h$ and to select the number k of principal components to retain. This is done by finding such k that $l_k/l_1 >= 10.E-3$ and $\Sigma_{j=1}^k l_j/\Sigma_{j=1}^r l_j >= 0.8$ Alternatively the number of principal components k can be specified by the user after inspecting the scree plot. Step 3: The data points are projected on the k-dimensional subspace spanned by the k eigenvectors corresponding to the largest k eigenvalues of the matrix $\Sigma_h$. The location and scatter and shape of the projected data are computed using the reweighted MCD estimator and the eigenvectors of this scatter matrix yield the robust principal components.

References

M. Hubert, P. J. Rousseeuw, K. Vanden Branden (2005), ROBPCA: a new approach to robust principal components analysis, Technometrics, 47, 64--79.

Examples

Run this code
## PCA of the Hawkins Bradu Kass's Artificial Data
##  using all 4 variables
    data(hbk)
    pca <- Robpca(hbk)
    pca

## Compare with the classical PCA
    prcomp(hbk)

## or  
    PcaClassic(hbk)
    
## If you want to print the scores too, use
    print(pca, print.x=TRUE)

## Using the formula interface
    Robpca(~., data=hbk)

## To plot the results:

    plot(pca)               # distance plot
    plot(Robpca(hbk, k=2))  # PCA diagnostic plot (or outlier map)
    
## Use the standard plots for \code{prcomp} and \code{princomp}
    screeplot(getPrcomp(pca))    
    biplot(getPrcomp(pca))

Run the code above in your browser using DataLab