This function solves the optimization problem needed to create fixed-X and Gaussian SDP knockoffs
on the full covariance matrix. This will be more powerful than create.solve_asdp
,
but more computationally expensive.
create.solve_sdp(Sigma, gaptol = 1e-06, maxit = 1000, verbose = FALSE)
The solution \(s\) to the semidefinite programming problem defined above.
positive-definite p-by-p covariance matrix.
tolerance for duality gap as a fraction of the value of the objective functions (default: 1e-6).
maximum number of iterations for the solver (default: 1000).
whether to display progress (default: FALSE).
Solves the semidefinite programming problem:
$$ \mathrm{maximize} \; \mathrm{sum}(s) \quad \mathrm{subject} \; \mathrm{to} 0 \leq s \leq 1, \; 2\Sigma - \mathrm{diag}(s) \geq 0$$
This problem is solved using the interior-point method implemented in dsdp
.
If the matrix Sigma supplied by the user is a non-scaled covariance matrix (i.e. its diagonal entries are not all equal to 1), then the appropriate scaling is applied before solving the SDP defined above. The result is then scaled back before being returned, as to match the original scaling of the covariance matrix supplied by the user.
Other optimization:
create.solve_asdp()
,
create.solve_equi()