Description Usage Arguments Details Value Author(s) References See Also Examples

View source: R/DDPCA_nonconvex.R

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

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

`Sigma` |
Input matrix of size |

`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 |

`max_iter_SDD,eps` |
Arguments in function |

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.

A list containing the following items

`L` |
The low rank component |

`A` |
The diagonally dominant component |

Fan Yang <fyang1@uchicago.edu>

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

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)
``` |

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.