CovOgk {rrcov} | R Documentation |
Robust Location and Scatter Estimation - Ortogonalized Gnanadesikan-Kettenring (OGK)
Description
Computes a robust multivariate location and scatter estimate with a high breakdown point, using the pairwise algorithm proposed by Marona and Zamar (2002) which in turn is based on the pairwise robust estimator proposed by Gnanadesikan-Kettenring (1972).
Usage
CovOgk(x, niter = 2, beta = 0.9, control)
Arguments
x |
a matrix or data frame. |
niter |
number of iterations, usually 1 or 2 since iterations beyond the second do not lead to improvement. |
beta |
coverage parameter for the final reweighted estimate |
control |
a control object (S4) of class |
Details
The method proposed by Marona and Zamar (2002) allowes to obtain
positive-definite and almost affine equivariant robust scatter matrices
starting from any pairwise robust scatter matrix. The default robust estimate
of covariance between two random vectors used is the one proposed by
Gnanadesikan and Kettenring (1972) but the user can choose any other method by
redefining the function in slot vrob
of the control object
CovControlOgk
. Similarly, the function for computing the robust
univariate location and dispersion used is the tau scale
defined
in Yohai and Zamar (1998) but it can be redefined in the control object.
The estimates obtained by the OGK method, similarly as in CovMcd
are returned
as 'raw' estimates. To improve the estimates a reweighting step is performed using
the coverage parameter beta
and these reweighted estimates are returned as
'final' estimates.
Value
An S4 object of class CovOgk-class
which is a subclass of the
virtual class CovRobust-class
.
Note
If the user does not specify a scale and covariance function to be used in
the computations or specifies one by using the arguments smrob
and svrob
(i.e. the names of the functions as strings), a native code written in C will be called which
is by far faster than the R version.
If the arguments mrob
and vrob
are not NULL, the specified functions
will be used via the pure R implementation of the algorithm. This could be quite slow.
See CovControlOgk
for details.
Author(s)
Valentin Todorov valentin.todorov@chello.at and Kjell Konis kjell.konis@epfl.ch
References
Maronna, R.A. and Zamar, R.H. (2002) Robust estimates of location and dispersion of high-dimensional datasets; Technometrics 44(4), 307–317.
Yohai, R.A. and Zamar, R.H. (1998) High breakdown point estimates of regression by means of the minimization of efficient scale JASA 86, 403–413.
Gnanadesikan, R. and John R. Kettenring (1972) Robust estimates, residuals, and outlier detection with multiresponse data. Biometrics 28, 81–124.
Todorov V & Filzmoser P (2009), An Object Oriented Framework for Robust Multivariate Analysis. Journal of Statistical Software, 32(3), 1–47. doi:10.18637/jss.v032.i03.
See Also
Examples
data(hbk)
hbk.x <- data.matrix(hbk[, 1:3])
CovOgk(hbk.x)
## the following three statements are equivalent
c1 <- CovOgk(hbk.x, niter=1)
c2 <- CovOgk(hbk.x, control = CovControlOgk(niter=1))
## direct specification overrides control one:
c3 <- CovOgk(hbk.x, beta=0.95,
control = CovControlOgk(beta=0.99))
c1
x<-matrix(c(1,2,3,7,1,2,3,7), ncol=2)
## CovOgk(x) - this would fail because the two columns of x are exactly collinear.
## In order to fix it, redefine the default 'vrob' function for example
## in the following way and pass it as a parameter in the control
## object.
cc <- CovOgk(x, control=new("CovControlOgk",
vrob=function(x1, x2, ...)
{
r <- .vrobGK(x1, x2, ...)
if(is.na(r))
r <- 0
r
})
)
cc