- Fix un-escaped brackets in
`bandingEst()`

and`taperingEst()`

documentation. - Argument documentation now matches argument names in
`cvRiskPlot()`

and`matrixMetrics()`

.

- Removing superfluous test that messes with CRAN’s MKL checks (tests with alternative BLAS/LAPACK implementations)
- Add doi of Journal of Computational and Graphical Statistics article to description.

`cvCovEst()`

no longer accepts`center`

and`scale`

arguments. Data centering is now handled within each estimator function. Users no longer have an option to scale their data. If they’d like to produce a correlation matrix, they must scale the`cvCovEst()`

estimate using`cov2cor()`

.

- Using strings of variable names instead of prefixing them with
`.data$`

in`dplyr::select()`

statements.

- This minor release sees the addition of three new estimators for Gaussian spiked covariance models. These estimators are
`spikedOperatorShrinkEst()`

,`spikedFrobeniusShrinkEst()`

and`spikedSteinShrinkEst()`

, and apply the asymptotically optimal amount of shrinkage on the sample covariance matrix’s eigenvalues with respect to their respective loss functions. For more information on these estimators, see Donoho et al.’s Annals of Statistics article “Optimal Shrinkage of Eigenvalues in the Spiked Covariance Model”.

`summary()`

now reports metrics about the candidate estimators’ estimates, like their condition numbers, signe, and sparsity levels.

`scadEst()`

and`adaptiveLassoEst()`

are now vectorized, greatly improving their computational efficiency. Thanks, Brian!

`cvCovEst()`

no longer accepts the`true_cov_mat`

argument.`cvCovEst`

is now ready for publication through JOSS.

- Fixing formatting errors in
`inst/REFERENCES.bib`

- Addressing typos and bibliography errors in JOSS paper draft
- Updating
`pkgdown`

documentation - Creating a GitHub release. Subsequent versions of the package won’t accept “true” covariance matrices as an argument to
`cvCovEst()`

. This is the last version of`cvCovEst`

that can be used to reproduce the simulation results of the accompanying manuscript, “Cross-Validated Loss-Based Covariance Matrix Estimator Selection in High Dimensions”.

- Calling
`summary.cvCovEst()`

when a single summary function is specified now immediately returns a table instead of a list of length 1 that contains said table. - Tables returned by
`summary.cvCovEst()`

no longer have`dplyr`

groups. - Fixed typo in Toy Dataset Example section of paper.

- Renamed
`empirical_risk`

column in`risk_df`

table output by`cvCovEst()`

to`cv_risk`

. - Added additional citations of existing R packages for covariance matrix estimation in our JOSS submission.
- Added more comprehensive tests for the available loss functions.

- Setting ‘LazyLoad’ to ‘false’ in DESCRIPTION to address CRAN checks notes.

- Fixing plotting labels and table column names, along with associated documentation.
- Fixing links to pass CRAN checks
- Reducing size of toy datasets to increase testing speed

- Adding note to
`robustPoetEst()`

warning again its use for correlation matrix estimation. - Fixing bug in
`robustPoetEst`

plots.

- Adding preprint citation information.

- Edited documentation to meet CRAN specifications.

- Added information and simulated data examples of plotting and summary functions.
- Made the
`cvCovEst`

R package a public repository GitHub.

`cvCovEst`

now possesses a slew of diagnostic and visualization tools. A detailed description of these functions will be added to the vignette in the near future.

- Minor clarifying updates to the documentation and the vignette.
- Updates to
`NEWS.md`

, adding consistency in bullet point indicator and enforcing the 80-column rule. - Tweaks to dependencies, removing reliance on
`stringi`

since only invoked in a single pipe call in`checkArgs`

.

- Added basic examples to all exported functions.

- Made
`cvMatrixFrobeniusLoss`

the default loss function.

- Added
`cvScaledMatrixFrobeniusLoss`

, a new matrix-based loss function that scales squared error calculations associated with each entry of a covariance matrix estimate by the sample variances of the entry’s row and column variables. This is particularly useful if the features of your dataset are of different magnitude. It’s approximately equivalent to estimating the correlation matrix, but without the need to re-scale the estimated correlation matrix to be an estimated covariance matrix.

- Fixed error with
`denseLinearShrinkEst`

: the shrinkage parameter was often selected such that the dense target was returned as the estimate.

- Completed vignette.

`robustPoetEst`

has been added to the library of candidate estimators.

- cvCovEst version 0.1.0 is used in the accompanying manuscript to generate all results.
- It is stored as a separate branch called ‘preprint’.

- cvCovEst now accepts cvMatrixFrobeniusLoss as a loss function. This loss function is a matrix-based alternative to the standard loss function. Through Proposition 1 of the method’s manuscript the resulting selections of each loss are identical for any fixed cross-validation scheme. However, the matrix-based loss is more computationally efficient. Other minor tweaks to testing procedures.

- cvCovEst can now be run in parallel using future.

- When provided with the true covariance matrix, cvCovEst now outputs the conditional cross-validated risk differences of the cross-validation selection and the oracle selections.

- Fixing a minor dimension error in
`nlShrinkLWEst`

by changing a conditional, as per https://github.com/PhilBoileau/cvCovEst/issues/23. - Enforcing the
`tidyverse`

code style via the first call to`styler`

in this codebase (via`make style`

). - Enforcing 80-columns in
`NEWS.md`

.

- Replacing
`stats::cov`

with`coop::covar`

after resolving the issue on Linux machines, as per https://github.com/PhilBoileau/cvCovEst/issues/18. - Removed calculation of spurious risk ratios from
`cvCovEst`

and from`cvFrobeniusLoss`

when the true covariance matrix is passed in.

- Changing loss function computation so that it is more computationally efficient.

- Removing
`coop::covar`

due to strange parallelization issue on Linux machines. Hopefully we can use it again one day. - Prevent users from including a lone estimator as input to
`cvCovEst`

if the estimator in questions doesn’t have any hyperparameters. - Coerce sparse, true covariance matrices to regular matrix objects if and when input to
`cvCovEst`

.

- Adding additional risk difference ratio calculations when the true covariance matrix of Gaussian Multivariate data is provided.

- Added adaptive LASSO estimator.
- Users now have the option to include the true covariance matrix of their multivariate Gaussian data, allowing them to compare cvCovEst’s selection versus that of the cross-validated oracle.

- Adding POET estimator
- Estimators can now take multiple hyperparameter arguments.

- Adding smoothly clipped absolute deviation thresholding estimator.

- Updated the loss computation; it now patches the formula used in the draft. Note that it vastly overestimates the true risk of an estimator, but that it provides an equivalent decision rule compared to a matrix-based loss. Perhaps we’re missing a scaling factor in our calculations?
- Moved Frobenius loss calculations to cv fold loss function.
- Removed the penalized cross-validation loss. Doesn’t make sense to include.
- Included check for centered data matrix.

- Adding dense covariance matrix linear shrinkage estimator.
- Updating citations in estimators docs.

- Adding analytical nonlinear shrinkage estimator.

- Adding tapering estimator.

- Adding argument checker for
`cvCovEst`

function.

- Adding banding estimator.

- Added unpenalized frobenius matrix loss.
- cvCovEst() now requires a vector of candidate estimator functions be passed to he estimators argument, instead of a vector of characters corresponding to these candidates’ names.

- Minor changes to core routines, including changes to use of
`origami`

. - Updates to documentation, including
`Roxygen`

styling. - Addition of templates for vignette and JOSS paper.

- Added a
`NEWS.md`

file to track changes to the package.