LOCUS {LOCUS}R Documentation

LOCUS: Low-rank decomposition of brain connectivity matrices with uniform sparsity

Description

This is the main function in the package. It conducts the LOCUS approach for decomposing brain connectivity data into subnetworks.

Usage

LOCUS(Y, q, V, MaxIteration=100, penalty="SCAD", phi = 0.9, approximation=TRUE, 
preprocess=TRUE, espli1=0.001, espli2=0.001, rho=0.95, silent=FALSE)

Arguments

Y

Group-level connectivity data from N subjects, which is of dimension N x p, where p is number of edges. Each row of Y represents a subject's vectorized connectivity matrix by Ltrans function.

q

Number of ICs/subnetworks to extract.

V

Number of nodes in the network. Note: p should be equal to V(V-1)/2.

MaxIteration

Maximum number of iteractions.

penalty

The penalization approach for uniform sparsity, which can be NULL, SCAD, and L1.

phi

\phi: tuning parameter for uniform sparse penalty.

approximation

Whether to use an approximated algorithm to speed up the algorithm.

preprocess

Whether to preprocess the data, which reduces the data dimension to q and whiten the data.

espli1

Toleration for convergence on mixing coefficient matrix, i.e. A.

espli2

Toleration for convergence on latent sources, i.e. S.

rho

\rho: tuning parameter for selecting number of ranks in each subnetwork's decomposition.

silent

Whether to print intermediate steps.

Details

This is the main function for LOCUS decomposition of brain connectivity matrices, which is to minimize the following objective function:

\sum_{i=1}^N\|y_i - \sum_{l=1}^q a_{il} s_l\|_2^2 + \phi \sum_{l=1}^q\|s_l\|_*,

where y_i is the transpose of ith row in Y, s_l = L(X_l D_l X_l') represents the lth vectorized latent source/subnetwork with low-rank decomposition, L is Ltrans function, \|\cdot\|_* represents the penalty which can either be NULL, L1, or SCAD (Fan & Li, 2001).

If user want to do BIC parameter selection of \phi, \rho before calling LOCUS main function, one can use LOCUS_BIC_selection to find the best parameter set. Further details can be found in the LOCUS paper.

Value

An R list from Locus containing the following terms:

Conver

Whether the algorithm is converaged.

A

Mixing matrix \{a_{il}\} of dimension N by q.

S

Subnetworks of dimension q by p, where each row represents a vectorized subnetwork based on Ltrans function.

theta

A list of length q, where theta[[i]] contains the symmetric low-rank decomposition of ith subnetwork.

References

Wang, Y. and Guo, Y. (2023). LOCUS: A novel signal decomposition method for brain network connectivity matrices using low-rank structure with uniform sparsity. Annals of Applied Statistics.

Fan, J., & Li, R. (2001). Variable selection via nonconcave penalized likelihood and its oracle properties. Journal of the American statistical Association, 96(456), 1348-1360.

Examples

## Simulated the data to use. 
V = 50
S1 = S2 = S3 = matrix(0,ncol = V,nrow = V)
S1[5:20,5:20] = 4;S1[23:37,23:37] = 3;S1[40:48,40:48] = 3
S2[15:20,] = -3;S2[,15:20] = -3
S3[15:25,36:45] = 3; S3[36:45,15:25] = 3
Struth = rbind(Ltrans(S1,FALSE) , Ltrans(S2,FALSE), Ltrans(S3,FALSE))
set.seed(100)
Atruth = matrix(rnorm(100*3),nrow=100,ncol=3)
Residual = matrix(rnorm(100*dim(Struth)[2]),nrow=100)
Yraw = Atruth%*%Struth + Residual

##### Run Locus on the data ##### 
Locus_result = LOCUS(Yraw,3,V)

oldpar = par(mfrow=c(2,3))
for(i in 1:dim(Struth)[1]){image(Ltrinv(Struth[i,],V,FALSE))}
for(i in 1:dim(Locus_result$S)[1]){image(Ltrinv(Locus_result$S[i,],V,FALSE))}
par(oldpar)

[Package LOCUS version 1.0 Index]