Obtains a robust estimate of the covariance matrix of a sample of multivariate data, using Campbell's (1980) method as described on p231-235 of Krzanowski (1988).
robCov(sY, alpha = 2, beta = 1.25)
A list where:
E
a square root of the inverse covariance matrix. i.e. the inverse cov
matrix is t(E)%*%E
;
half.ldet.V
Half the log of the determinant of the covariance matrix;
mY
The estimated mean;
sd
The estimated standard deviations of each variable.
A matrix, where each column is a replicate observation on a multivariate r.v.
tuning parameter, see details.
tuning parameter, see details.
Simon N. Wood, maintained by Matteo Fasiolo <matteo.fasiolo@gmail.com>.
Campbell (1980) suggests an estimator of the covariance matrix which downweights observations
at more than some Mahalanobis distance d.0
from the mean.
d.0
is sqrt(nrow(sY))+alpha/sqrt(2)
. Weights are one for observations
with Mahalanobis distance, d
, less than d.0
. Otherwise weights are
d.0*exp(-.5*(d-d.0)^2/beta)/d
. The defaults are as recommended by Campbell.
This routine also uses pre-conditioning to ensure good scaling and stable
numerical calculations.
Krzanowski, W.J. (1988) Principles of Multivariate Analysis. Oxford. Campbell, N.A. (1980) Robust procedures in multivariate analysis I: robust covariance estimation. JRSSC 29, 231-237.
p <- 5;n <- 100
Y <- matrix(runif(p*n),p,n)
robCov(Y)
Run the code above in your browser using DataLab