Title: | FastPCS Robust Fit of Multivariate Location and Scatter |
---|---|
Description: | The FastPCS algorithm of Vakili and Schmitt (2014) <doi:10.1016/j.csda.2013.07.021> for robust estimation of multivariate location and scatter and multivariate outliers detection. |
Authors: | Kaveh Vakili [aut, cre] |
Maintainer: | Kaveh Vakili <[email protected]> |
License: | GPL (>= 2) |
Version: | 0.1.4 |
Built: | 2025-01-31 06:27:08 UTC |
Source: | CRAN |
Uses the FastPCS algorithm to compute the robust PCS estimator of location and scatter.
Package: | FastPCS |
Type: | Package |
Version: | 0.0.9 |
Date: | 2024-03-13 |
Suggests: | mvtnorm |
License: | GPL (>= 2) |
LazyLoad: | yes |
Index:
FastPCS Function to compute the robust FastPCS estimator of location and scatter. FPCSnumStarts Internal function used to compute the number of starting points used by FastPCS. quanf Internal function used to compute h, the minimum number of observations expected to be uncontaminated. plot.FastPCS Plots the robust distances outputted by a FastPCS model.
Kaveh Vakili [aut, cre], Maintainer: Kaveh Vakili <[email protected]>
Vakili, K. and Schmitt, E. (2014). Finding multivariate outliers with FastPCS. Computational Statistics & Data Analysis. Vol. 69, pp 54–66. (http://arxiv.org/abs/1301.2053)
Computes a fast and robust multivariate outlyingness index for a n by p matrix of multivariate continuous data.
FastPCS(x,nSamp,alpha=0.5,seed=1)
FastPCS(x,nSamp,alpha=0.5,seed=1)
x |
A numeric n (n>5*p) by p (p>1) matrix or data frame. |
nSamp |
A positive integer giving the number of resamples required;
|
alpha |
Numeric parameter controlling the size of the active subsets,
i.e., |
seed |
Starting value for random generator. A positive integer. Default is seed = 1 |
The current version of FastPCS includes the use of a C-step procedure to improve efficiency (Rousseeuw and van Driessen (1999)). C-steps are taken after the raw subset (H*) as been chosen (according to the I-index) and before reweighting. In experiments, we found that carrying C-Steps
starting from the members of $rawBest
improves the speed of convergence without increasing the bias
of the final estimates. FastPCS is affine equivariant (Schmitt et al. (2014)) and thus consistent at the
elliptical model (Maronna et al., (2006) p. 217).
alpha |
The value of alpha used. |
nSamp |
The value of nSamp used. |
obj |
The value of the FastPCS objective function of the optimal h subset. |
rawBest |
The index of the h observation with smallest outlyingness indexes. |
best |
The index of the observations with outlyingness smaller than the rejection threshold after C-steps are taken. |
center |
The mean vector of the observations with outlyingness smaller than the rejection threshold after C-steps are taken. |
cov |
Covariance matrix of the observations with outlyingness smaller than the rejection threshold after C-steps are taken. |
distance |
The statistical distance of each observation wrt the center vector and cov matrix of the observations with outlyingness smaller than the rejection threshold after C-steps are taken. |
Kaveh Vakili
Maronna, R. A., Martin R. D. and Yohai V. J. (2006). Robust Statistics: Theory and Methods. Wiley, New York.
P. J. Rousseeuw and K. van Driessen (1999). A fast algorithm for the minimum covariance determinant estimator. Technometrics 41, 212–223.
Eric Schmitt, Viktoria Oellerer, Kaveh Vakili (2014). The finite sample breakdown point of PCS Statistics and Probability Letters, Volume 94, Pages 214-220.
Vakili, K. and Schmitt, E. (2014). Finding multivariate outliers with FastPCS. Computational Statistics & Data Analysis. Vol. 69, pp 54–66. (http://arxiv.org/abs/1301.2053)
## testing outlier detection set.seed(123) n<-100 p<-3 x0<-matrix(rnorm(n*p),nc=p) x0[1:30,]<-matrix(rnorm(30*p,4.5,1/100),nc=p) z<-c(rep(0,30),rep(1,70)) nstart<-FPCSnumStarts(p=p,eps=0.4) results<-FastPCS(x=x0,nSamp=nstart) z[results$best] ## testing outlier detection, different value of alpha set.seed(123) n<-100 p<-3 x0<-matrix(rnorm(n*p),nc=p) x0[1:20,]<-matrix(rnorm(20*p,4.5,1/100),nc=p) z<-c(rep(0,20),rep(1,80)) nstart<-FPCSnumStarts(p=p,eps=0.25) results<-FastPCS(x=x0,nSamp=nstart,alpha=0.75) z[results$best] #testing exact fit set.seed(123) n<-100 p<-3 x0<-matrix(rnorm(n*p),nc=p) x0[1:30,]<-matrix(rnorm(30*p,5,1/100),nc=p) x0[31:100,3]<-x0[31:100,2]*2+1 z<-c(rep(0,30),rep(1,70)) nstart<-FPCSnumStarts(p=p,eps=0.4) results<-FastPCS(x=x0,nSamp=nstart) z[results$rawBest] results$obj #testing affine equivariance n<-100 p<-3 set.seed(123) x0<-matrix(rnorm(n*p),nc=p) nstart<-500 results1<-FastPCS(x=x0,nSamp=nstart,seed=1) a1<-matrix(0.9,p,p) diag(a1)<-1 x1<-x0%*%a1 results2<-FastPCS(x=x1,nSamp=nstart,seed=1) results2$center results2$cov #should be the same results1$center%*%a1 a1
## testing outlier detection set.seed(123) n<-100 p<-3 x0<-matrix(rnorm(n*p),nc=p) x0[1:30,]<-matrix(rnorm(30*p,4.5,1/100),nc=p) z<-c(rep(0,30),rep(1,70)) nstart<-FPCSnumStarts(p=p,eps=0.4) results<-FastPCS(x=x0,nSamp=nstart) z[results$best] ## testing outlier detection, different value of alpha set.seed(123) n<-100 p<-3 x0<-matrix(rnorm(n*p),nc=p) x0[1:20,]<-matrix(rnorm(20*p,4.5,1/100),nc=p) z<-c(rep(0,20),rep(1,80)) nstart<-FPCSnumStarts(p=p,eps=0.25) results<-FastPCS(x=x0,nSamp=nstart,alpha=0.75) z[results$best] #testing exact fit set.seed(123) n<-100 p<-3 x0<-matrix(rnorm(n*p),nc=p) x0[1:30,]<-matrix(rnorm(30*p,5,1/100),nc=p) x0[31:100,3]<-x0[31:100,2]*2+1 z<-c(rep(0,30),rep(1,70)) nstart<-FPCSnumStarts(p=p,eps=0.4) results<-FastPCS(x=x0,nSamp=nstart) z[results$rawBest] results$obj #testing affine equivariance n<-100 p<-3 set.seed(123) x0<-matrix(rnorm(n*p),nc=p) nstart<-500 results1<-FastPCS(x=x0,nSamp=nstart,seed=1) a1<-matrix(0.9,p,p) diag(a1)<-1 x1<-x0%*%a1 results2<-FastPCS(x=x1,nSamp=nstart,seed=1) results2$center results2$cov #should be the same results1$center%*%a1 a1
Computes the number of starting p-subsets so that the desired probability of selecting at least one clean one is achieved. This is an internal function not intended to be called by the user.
FPCSnumStarts(p,gamma=0.99,eps=0.5)
FPCSnumStarts(p,gamma=0.99,eps=0.5)
p |
number of dimensions of the data matrix X. |
gamma |
desired probability of having at least one clean starting p-subset. |
eps |
suspected contamination rate of the sample. |
An integer number of starting p-subsets.
Kaveh Vakili
FPCSnumStarts(p=3,gamma=0.99,eps=0.4)
FPCSnumStarts(p=3,gamma=0.99,eps=0.4)
Plots the robust distance values from a FastPCS model fit, and their parametric cut-off.
## S3 method for class 'FastPCS' plot(x,col="black",pch=16,...)
## S3 method for class 'FastPCS' plot(x,col="black",pch=16,...)
x |
For the |
col |
A specification for the default plotting color. Vectors of values are recycled. |
pch |
Either an integer specifying a symbol, or a single character to be used as the default in plotting points. Note that only integers and single-character strings can be set as graphics parameters. Vectors of values are recycled. |
... |
Further arguments passed to the plot function. |
Kaveh Vakili, Eric Schmitt
## generate data set.seed(123) n<-100 p<-3 x0<-matrix(rnorm(n*p),nc=p) x0[1:30,]<-matrix(rnorm(30*p,4.5,1/100),nc=p) z<-c(rep(0,30),rep(1,70)) nstart<-FPCSnumStarts(p=p,eps=0.4) results<-FastPCS(x=x0,nSamp=nstart) colvec<-rep("orange",length(z)) colvec[z==1]<-"blue" plot.FastPCS(results,col=colvec,pch=16)
## generate data set.seed(123) n<-100 p<-3 x0<-matrix(rnorm(n*p),nc=p) x0[1:30,]<-matrix(rnorm(30*p,4.5,1/100),nc=p) z<-c(rep(0,30),rep(1,70)) nstart<-FPCSnumStarts(p=p,eps=0.4) results<-FastPCS(x=x0,nSamp=nstart) colvec<-rep("orange",length(z)) colvec[z==1]<-"blue" plot.FastPCS(results,col=colvec,pch=16)
FastPCS selects the subset of size h that minimizes the I-index criterion. The function quanf
determines the size of h based on the rate of contamination the user expects is present in the data.
This is an internal function not intended to be called
by the user.
quanf(n,p,alpha)
quanf(n,p,alpha)
n |
Number of rows of the data matrix. |
p |
Number of columns of the data matrix. |
alpha |
Numeric parameter controlling the size of the active subsets,
i.e., |
An integer number of the size of the starting p-subsets.
Kaveh Vakili
quanf(p=3,n=500,alpha=0.5)
quanf(p=3,n=500,alpha=0.5)