Learn R Programming

ddpca (version 1.1)

DDPCA_convex: Diagonally Dominant Principal Component Analysis using Convex approach

Description

This function decomposes a positive semidefinite matrix into a low rank component, and a diagonally dominant component by solving a convex relaxation using ADMM.

Usage

DDPCA_convex(Sigma, lambda, rho = 20, max_iter_convex = 50)

Arguments

Sigma

Input matrix of size \(n\times n\)

lambda

The parameter in the convex program that controls the rank of the low rank component

rho

The parameter used in each ADMM update.

max_iter_convex

Maximal number of iterations of ADMM update.

Value

A list containing the following items

L

The low rank component

A

The diagonally dominant component

Details

This function decomposes a positive semidefinite matrix Sigma into a low rank component L and a symmetric diagonally dominant component A, by solving the following convex program $$\textrm{minimize} \quad 0.5*\|\Sigma - L - A\|^2 + \lambda \|L\|_{*}$$ $$\textrm{subject to} \quad A\in SDD$$ where \(\|L\|_{*}\) is the nuclear norm of L (sum of singular values) and SDD is the symmetric diagonally dominant cone.

References

Ke, Z., Xue, L. and Yang, F., 2019. Diagonally Dominant Principal Component Analysis. Journal of Computational and Graphic Statistics, under review.

See Also

DDPCA_nonconvex

Examples

Run this code
# NOT RUN {
library(MASS)
p = 30
n = 30
k = 3
rho = 0.5
a = 0:(p-1)
Sigma_mu = rho^abs(outer(a,a,'-'))
Sigma_mu = (diag(p) + Sigma_mu)/2 # Now Sigma_mu is a symmetric diagonally dominant matrix
mu = mvrnorm(n,rep(0,p),Sigma_mu)
B = matrix(rnorm(p*k),nrow = p)
F = matrix(rnorm(k*n),nrow = k)
Y = mu + t(B %*% F) 
Sigma_sample = cov(Y)
result = DDPCA_convex(Sigma_sample,lambda=3)
# }

Run the code above in your browser using DataLab