CovEst.2010RBLW {CovTools} R Documentation

## Rao-Blackwell Ledoit-Wolf Estimator

### Description

Authors propose to estimate covariance matrix by minimizing mean squared error with the following formula,

\hat{Σ} = ρ \hat{F} + (1-ρ) \hat{S}

where ρ \in (0,1) a control parameter/weight, \hat{S} an empirical covariance matrix, and \hat{F} a target matrix. It is proposed to use a structured estimate \hat{F} = \textrm{Tr} (\hat{S}/p) \cdot I_{p\times p} where I_{p\times p} is an identity matrix of dimension p.

### Usage

CovEst.2010RBLW(X)


### Arguments

 X an (n\times p) matrix where each row is an observation.

### Value

a named list containing:

S

a (p\times p) covariance matrix estimate.

rho

an estimate for convex combination weight.

### References

Chen Y, Wiesel A, Eldar YC, Hero AO (2010). “Shrinkage Algorithms for MMSE Covariance Estimation.” IEEE Transactions on Signal Processing, 58(10), 5016–5029. ISSN 1053-587X, 1941-0476.

### Examples

## CRAN-purpose small computation
# set a seed for reproducibility
set.seed(11)

#  small data with identity covariance
pdim      <- 10
dat.small <- matrix(rnorm(5*pdim), ncol=pdim)

#  run the code
out.small <- CovEst.2010RBLW(dat.small)

#  visualize
par(mfrow=c(1,3), pty="s")
image(diag(pdim)[,pdim:1],     main="true cov")
image(cov(dat.small)[,pdim:1], main="sample cov")
image(out.small$S[,pdim:1], main="estimated cov") par(opar) ## Not run: ## want to see how delta is determined according to # the number of observations we have. nsamples = seq(from=5, to=200, by=5) nnsample = length(nsamples) # we will record two values; rho and norm difference vec.rho = rep(0, nnsample) vec.normd = rep(0, nnsample) for (i in 1:nnsample){ dat.norun <- matrix(rnorm(nsamples[i]*pdim), ncol=pdim) # sample in R^5 out.norun <- CovEst.2010RBLW(dat.norun) # run with default vec.rho[i] = out.norun$rho
vec.normd[i] = norm(out.norun\$S - diag(5),"f")          # Frobenius norm
}

# let's visualize the results
opar <- par(mfrow=c(1,2))
plot(nsamples, vec.rho,   lwd=2, type="b", col="red", main="estimated rhos")
plot(nsamples, vec.normd, lwd=2, type="b", col="blue",main="Frobenius error")
par(opar)

## End(Not run)



[Package CovTools version 0.5.4 Index]