R: Fast Computation of the Inverse of the Covariance and...
invcov.shrink
R Documentation
Fast Computation of the Inverse of the Covariance and Correlation Matrix
Description
The functions invcov.shrink and invcor.shrink implement an
algorithm to efficiently compute
the inverses of shrinkage estimates of covariance (cov.shrink)
and correlation (cor.shrink).
the correlation shrinkage intensity (range 0-1).
If lambda is not specified (the default) it is estimated
using an analytic formula from Sch"afer and Strimmer (2005)
- see cor.shrink.
For lambda=0 the empirical correlations are recovered.
lambda.var
the variance shrinkage intensity (range 0-1).
If lambda.var is not specified (the default) it is estimated
using an analytic formula from Sch"afer and Strimmer (2005)
- see var.shrink.
For lambda.var=0 the empirical variances are recovered.
w
optional: weights for each data point - if not specified uniform weights are assumed
(w = rep(1/n, n) with n = nrow(x)).
verbose
output status while computing (default: TRUE)
Details
Both invcov.shrink and invcor.shrink rely on
powcor.shrink. This allows to compute the inverses in
a very efficient fashion (much more efficient than directly inverting
the matrices - see the example).
Value
invcov.shrink returns the inverse of the output from cov.shrink.
invcor.shrink returns the inverse of the output from cor.shrink.
Sch"afer, J., and K. Strimmer. 2005. A shrinkage approach to large-scale
covariance estimation and implications for functional genomics.
Statist. Appl. Genet. Mol. Biol. 4:32.
(http://www.bepress.com/sagmb/vol4/iss1/art32/)
See Also
powcor.shrink, cov.shrink, pcor.shrink, cor2pcor
Examples
# load corpcor library
library("corpcor")
# generate data matrix
p = 500
n = 10
X = matrix(rnorm(n*p), nrow = n, ncol = p)
lambda = 0.23 # some arbitrary lambda
# slow
system.time(
(W1 = solve(cov.shrink(X, lambda)))
)
# very fast
system.time(
(W2 = invcov.shrink(X, lambda))
)
# no difference
sum((W1-W2)^2)