The Spherical Principal Components procedure was proposed by Locantore et al., (1999) as a functional data analysis method. The idea is to perform classical PCA on the data, projected onto a unit sphere. The estimates of the eigenvectors are consistent and the procedure is extremely fast. The simulations of Maronna (2005) show that this method has very good performance.
PcaLocantore(x, ...)
# S3 method for default
PcaLocantore(x, k = ncol(x), kmax = ncol(x), delta = 0.001,
na.action = na.fail, scale = FALSE, signflip = TRUE,
crit.pca.distances = 0.975, trace=FALSE, ...)
# S3 method for formula
PcaLocantore(formula, data = NULL, subset, na.action, ...)
An S4 object of class PcaLocantore-class
which is a subclass of the
virtual class PcaRobust-class
.
a formula with no response variable, referring only to numeric variables.
an optional data frame (or similar: see
model.frame
) containing the variables in the
formula formula
.
an optional vector used to select rows (observations) of the
data matrix x
.
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 default is na.omit
.
arguments passed to or from other methods.
a numeric matrix (or data frame) which provides the data for the principal components analysis.
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 k=ncol(x)
.
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.
an accuracy parameter
a value indicating whether and how the variables should be scaled
to have unit variance (only possible if there are no constant
variables). If scale=FALSE
(default) or scale=NULL
no scaling is
performed (a vector of 1s is returned in the scale slot). If scale=TRUE
the data are scaled by mad
. Alternatively it can be a function
like sd
or Qn
or a vector of length equal the number of columns
of x
. The value is passed to the underlying function and the result
returned is stored in the scale slot. Default is scale=FALSE
.
a logical value indicating wheather to try to solve
the sign indeterminancy of the loadings - ad hoc approach setting
the maximum element in a singular vector to be positive. Default is
signflip = TRUE
criterion to use for computing the cutoff values for the orthogonal and score distances. Default is 0.975.
whether to print intermediate results. Default is trace = FALSE
Valentin Todorov valentin.todorov@chello.at The SPC algorithm is implemented on the bases of the available from the web site of the book Maronna et al. (2006) code https://www.wiley.com/legacy/wileychi/robust_statistics/
PcaLocantore
, serving as a constructor for objects of class
PcaLocantore-class
is a generic function with "formula"
and "default" methods. For details see the relevant references.
N. Locantore, J. Marron, D. Simpson, N. Tripoli, J. Zhang and K. Cohen K. (1999), Robust principal components for functional data. Test, 8, 1-28.
R. Maronna, D. Martin and V. Yohai (2006), Robust Statistics: Theory and Methods. Wiley, New York.
R. Maronna (2005). Principal components and orthogonal regression based on robust scales. Technometrics, 47, 264-273.
Todorov V & Filzmoser P (2009), An Object Oriented Framework for Robust Multivariate Analysis. Journal of Statistical Software, 32(3), 1--47. tools:::Rd_expr_doi("10.18637/jss.v032.i03").
## PCA of the Hawkins Bradu Kass's Artificial Data
## using all 4 variables
data(hbk)
pca <- PcaLocantore(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
PcaLocantore(~., data=hbk)
## To plot the results:
plot(pca) # distance plot
pca2 <- PcaLocantore(hbk, k=2)
plot(pca2) # PCA diagnostic plot (or outlier map)
## Use the standard plots available for for prcomp and princomp
screeplot(pca)
biplot(pca)
Run the code above in your browser using DataLab