1
$\begingroup$

May I ask how to generate a low-rank sparse covariance matrix? Thank you!

$\endgroup$
1
  • $\begingroup$ Have you tried using semidefinite programming (SDP)? Take a look at this $\endgroup$ Commented Feb 7, 2023 at 22:41

2 Answers 2

0
$\begingroup$

You could start from a covariance graph, and use the algorithm described in appendix A of Model-based clustering with sparse covariance matrices. This algorithm guarantees the covariance matrix positive definite; the graph gives the rank and degree of sparseness.

$\endgroup$
1
  • $\begingroup$ OP wants a low-rank matrix, so it cannot be positive definite. $\endgroup$ Commented Jun 1 at 22:51
0
$\begingroup$

Matlab's sprandsym generates a random sparse positive-definite matrix by starting from a diagonal matrix and applying to it Jacobi rotations, i.e., rotation matrices that act only on two components. In this way you can also prescribe its eigenvalues.

You could follow a similar strategy for your task, even if your matrix is not PD.

If your definition of "covariance matrix" also requires the diagonal entries to be 1, you can apply a diagonal scaling to enforce it.

$\endgroup$

You must log in to answer this question.

Not the answer you're looking for? Browse other questions tagged .