# DDPCA_nonconvex: Diagonally Dominant Principal Component Analysis using... In ddpca: Diagonally Dominant Principal Component Analysis

## Description

This function decomposes a positive semidefinite matrix into a low rank component, and a diagonally dominant component using an iterative projection algorithm.

## Usage

 1 2 DDPCA_nonconvex(Sigma, K, max_iter_nonconvex = 15, SDD_approx = TRUE, max_iter_SDD = 20, eps = NA) 

## Arguments

 Sigma Input matrix of size n\times n K A positive integer indicating the rank of the low rank component. max_iter_nonconvex Maximal number of iterations of the iterative projection algorithm. SDD_approx If set to TRUE, then the projection onto SDD cone step in each iteration will be replaced by projection onto DD cone followed by symmetrization. This approximation will reduce the computational cost, but the output matrix A may only be approximately diagonally dominant. max_iter_SDD,eps Arguments in function ProjSDD. Matters only when SDD_approx = False.

## Details

This function performs iterative projection algorithm to decompose a positive semidefinite matrix Sigma into a low rank component L and a symmetric diagonally dominant component A. The projection onto the set of low rank matrices is done via eigenvalue decomposition, while the projection onto the symmetric diagonally dominant (SDD) cone is done via function ProjSDD, unless SDD_approx = TRUE where an approximation is used to speed up the algorithm.

## Value

A list containing the following items

 L The low rank component A The diagonally dominant component

## Author(s)

Fan Yang <fyang1@uchicago.edu>

## References

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

DDPCA_convex
  1 2 3 4 5 6 7 8 9 10 11 12 13 14 library(MASS) p = 200 n = 200 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_nonconvex(Sigma_sample,K=k)