This function solves the optimization problem

Minimize_X (1/2)||X - A||_F^2 + lam||P*X||_1 s.t. X >= del * I.

This is the prox function for the generalized gradient descent of Bien & Tibshirani 2011 (see full reference below).

1 |

`A` |
A symmetric matrix. |

`del` |
A non-negative scalar. Lower bound on eigenvalues. |

`lam` |
A non-negative scalar. L1 penalty parameter. |

`P` |
Matrix with non-negative elements and dimension of A. Allows for differing L1 penalty parameters. |

`rho` |
ADMM parameter. Can affect rate of convergence a lot. |

`tol` |
Convergence threshold. |

`maxiters` |
Maximum number of iterations. |

`verb` |
Controls whether to be verbose. |

This is the R implementation of the algorithm in Appendix 3 of Bien, J., and Tibshirani, R. (2011), "Sparse Estimation of a Covariance Matrix," Biometrika. 98(4). 807–820. It uses an ADMM approach to solve the problem

Minimize_X (1/2)||X - A||_F^2 + lam||P*X||_1 s.t. X >= del * I.

Here, the multiplication between P and X is elementwise. The inequality in the constraint is a lower bound on the minimum eigenvalue of the matrix X.

Note that there are two variables X and Z that are outputted. Both are estimates of the optimal X. However, Z has exact zeros whereas X has eigenvalues at least del. Running the ADMM algorithm long enough, these two are guaranteed to converge.

`X` |
Estimate of optimal X. |

`Z` |
Estimate of optimal X. |

`obj` |
Objective values. |

Jacob Bien and Rob Tibshirani

Bien, J., and Tibshirani, R. (2011), "Sparse Estimation of a Covariance Matrix," Biometrika. 98(4). 807–820.

spcov

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 | ```
set.seed(1)
n <- 100
p <- 200
# generate a covariance matrix:
model <- GenerateCliquesCovariance(ncliques=4, cliquesize=p / 4, 1)
# generate data matrix with x[i, ] ~ N(0, model$Sigma):
x <- matrix(rnorm(n * p), ncol=p) %*% model$A
S <- var(x)
# compute sparse, positive covariance estimator:
P <- matrix(1, p, p)
diag(P) <- 0
lam <- 0.1
aa <- ProxADMM(S, 0.01, lam, P)
``` |

Questions? Problems? Suggestions? Tweet to @rdrrHQ or email at ian@mutexlabs.com.

Please suggest features or report bugs with the GitHub issue tracker.

All documentation is copyright its authors; we didn't write any of that.

Embedding an R snippet on your website

Add the following code to your website.

For more information on customizing the embed code, read Embedding Snippets.