https://github.com/philboileau/cvcovest
An R package for assumption-lean covariance matrix estimation in high dimensions
https://github.com/philboileau/cvcovest
covariance-matrix-estimation cross-validation high-dimensional-statistics nonparametric-statistics
Last synced: 3 months ago
JSON representation
An R package for assumption-lean covariance matrix estimation in high dimensions
- Host: GitHub
- URL: https://github.com/philboileau/cvcovest
- Owner: PhilBoileau
- License: other
- Created: 2020-04-16T20:50:11.000Z (about 6 years ago)
- Default Branch: master
- Last Pushed: 2024-02-17T20:10:48.000Z (over 2 years ago)
- Last Synced: 2024-11-28T18:09:44.853Z (over 1 year ago)
- Topics: covariance-matrix-estimation, cross-validation, high-dimensional-statistics, nonparametric-statistics
- Language: R
- Homepage: https://philboileau.github.io/cvCovEst/
- Size: 4.88 MB
- Stars: 13
- Watchers: 3
- Forks: 4
- Open Issues: 3
-
Metadata Files:
- Readme: README.Rmd
- Contributing: CONTRIBUTING.md
- License: LICENSE
Awesome Lists containing this project
README
---
output: github_document
bibliography: "inst/REFERENCES.bib"
---
```{r, include = FALSE}
knitr::opts_chunk$set(
collapse = TRUE,
comment = "#>",
fig.path = "man/figures/README-",
out.width = "100%"
)
```
# R/`cvCovEst`
[](https://app.circleci.com/pipelines/github/PhilBoileau/cvCovEst?branch=master)
[](https://app.codecov.io/gh/PhilBoileau/cvCovEst)
[](https://www.repostatus.org/#active)
[](https://doi.org/10.21105/joss.03273)
[](https://opensource.org/license/mit/)
> Cross-Validated Covariance Matrix Estimation
__Authors:__ [Philippe Boileau](https://pboileau.ca),
[Brian Collica](https://www.linkedin.com/in/brian-collica-553b0b94), and
[Nima Hejazi](https://nimahejazi.org)
---
## What's `cvCovEst`?
`cvCovEst` implements an efficient cross-validated procedure for covariance
matrix estimation, particularly useful in high-dimensional settings. The
general methodology allows for cross-validation to be used to data adaptively
identify the optimal estimator of the covariance matrix from a prespecified set
of candidate estimators. An overview of the framework is provided in the
package vignette. For a more detailed description, see @boileau2021. A suite of
plotting and diagnostic tools are also included.
---
## Installation
For standard use, install `cvCovEst` from
[CRAN](https://cran.r-project.org/package=cvCovEst):
```{r CRAN-install, eval=FALSE}
install.packages("cvCovEst")
```
The _development version_ of the package may be installed from GitHub using
[`remotes`](https://CRAN.R-project.org/package=remotes):
```{r gh-master-installation, eval=FALSE}
remotes::install_github("PhilBoileau/cvCovEst")
```
---
## Example
To illustrate how `cvCovEst` may be used to select an optimal covariance matrix
estimator via cross-validation, consider the following toy example:
```{r example, message=FALSE, warning=FALSE}
library(MASS)
library(cvCovEst)
set.seed(1584)
# generate a 50x50 covariance matrix with unit variances and off-diagonal
# elements equal to 0.5
Sigma <- matrix(0.5, nrow = 50, ncol = 50) + diag(0.5, nrow = 50)
# sample 50 observations from multivariate normal with mean = 0, var = Sigma
dat <- mvrnorm(n = 50, mu = rep(0, 50), Sigma = Sigma)
# run CV-selector
cv_cov_est_out <- cvCovEst(
dat = dat,
estimators = c(linearShrinkLWEst, denseLinearShrinkEst,
thresholdingEst, poetEst, sampleCovEst),
estimator_params = list(
thresholdingEst = list(gamma = c(0.2, 2)),
poetEst = list(lambda = c(0.1, 0.2), k = c(1L, 2L))
),
cv_loss = cvMatrixFrobeniusLoss,
cv_scheme = "v_fold",
v_folds = 5
)
# print the table of risk estimates
# NOTE: the estimated covariance matrix is accessible via the `$estimate` slot
cv_cov_est_out$risk_df
```
---
## Issues
If you encounter any bugs or have any specific feature requests, please [file
an issue](https://github.com/PhilBoileau/cvCovEst/issues).
---
## Contributions
Contributions are very welcome. Interested contributors should consult our
[contribution
guidelines](https://github.com/PhilBoileau/cvCovEst/blob/master/CONTRIBUTING.md)
prior to submitting a pull request.
---
## Citation
Please cite the following paper when using the `cvCovEst` R software package.
```
@article{cvCovEst2021,
doi = {10.21105/joss.03273},
url = {https://doi.org/10.21105/joss.03273},
year = {2021},
publisher = {The Open Journal},
volume = {6},
number = {63},
pages = {3273},
author = {Philippe Boileau and Nima S. Hejazi and Brian Collica and Mark J. van der Laan and Sandrine Dudoit},
title = {cvCovEst: Cross-validated covariance matrix estimator selection and evaluation in `R`},
journal = {Journal of Open Source Software}
}
```
When describing or discussing the theory underlying the `cvCovEst` method, or
simply using the method, please cite the pre-print below.
```
@article{boileau2022,
author = {Philippe Boileau and Nima S. Hejazi and Mark J. van der Laan and Sandrine Dudoit},
doi = {10.1080/10618600.2022.2110883},
eprint = {https://doi.org/10.1080/10618600.2022.2110883},
journal = {Journal of Computational and Graphical Statistics},
number = {ja},
pages = {1-28},
publisher = {Taylor & Francis},
title = {Cross-Validated Loss-Based Covariance Matrix Estimator Selection in High Dimensions},
url = {https://doi.org/10.1080/10618600.2022.2110883},
volume = {0},
year = {2022},
bdsk-url-1 = {https://doi.org/10.1080/10618600.2022.2110883}}
```
---
## License
© 2020-2023 [Philippe Boileau](https://pboileau.ca)
The contents of this repository are distributed under the MIT license. See file
[`LICENSE.md`](https://github.com/PhilBoileau/cvCovEst/blob/master/LICENSE.md)
for details.
---
## References