CASCORE {CASCORE}  R Documentation 
Using ratiosofeigenvectors to detect underlying communities in networks with node covariates.
CASCORE(
Adj,
Covariate,
K,
alpha = NULL,
alphan = 5,
itermax = 100,
startn = 10
)
Adj 
A 0/1 adjacency matrix. 
Covariate 
A covariate matrix. The rows correspond to nodes and the columns correspond to covariates. 
K 
A positive integer, indicating the number of underlying communities in graph 
alpha 
A numeric vector, each element of which is a tuning parameter to weigh the covariate matrix. 
alphan 
The number of candidates 
itermax 

startn 

CASCORE is fully established in CovariateAssisted Community Detection
on Sparse Networks of Hu & Wang (2022). CASCORE detects the latent community structure
under the covariate assisted degree corrected stochastic block model (CADCSBM), and it allows
the disagreement between the community structures indicated in the graph and the covariates,
respectively. Kmeans
is applied on the entrywise ratios between first leading eigenvector
and each of the other K
leading eigenvectors of the combined matrix of the adjacency matrix and the
covariate matrix, to reveal the underlying memberships.
estall 
A lavel vector. 
Hu, Y., & Wang, W. (2022). CovariateAssisted Community Detection on Sparse Networks.
doi: 10.48550/arXiv.2208.00257
# Simulate the Network
n = 10; K = 2;
theta = 0.4 + (0.450.05)*(seq(1:n)/n)^2; Theta = diag(theta);
P = matrix(c(0.8, 0.2, 0.2, 0.8), byrow = TRUE, nrow = K)
set.seed(2022)
l = sample(1:K, n, replace=TRUE); # node labels
Pi = matrix(0, n, K) # label matrix
for (k in 1:K){
Pi[l == k, k] = 1
}
Omega = Theta %*% Pi %*% P %*% t(Pi) %*% Theta;
Adj = matrix(runif(n*n, 0, 1), nrow = n);
Adj = Omega  Adj;
Adj = 1*(Adj >= 0)
diag(Adj) = 0
Adj[lower.tri(Adj)] = t(Adj)[lower.tri(Adj)]
caseno = 4; Nrange = 10; Nmin = 10; prob1 = 0.9; p = n*4;
Q = matrix(runif(p*K, 0, 1), nrow = p, ncol = K)
Q = sweep(Q,2,colSums(Q),`/`)
W = matrix(0, nrow = n, ncol = K);
for(jj in 1:n) {
if(runif(1) <= prob1) {W[jj, 1:K] = Pi[jj, ];}
else W[jj, sample(K, 1)] = 1;
}
W = t(W)
D0 = Q %*% W
X = matrix(0, n, p)
N = switch(caseno, rep(100, n), rep(100, n), round(runif(n)*Nrange+ Nmin),
round(runif(n)* Nrange+Nmin))
for (i in 1: ncol(D0)){
X[i, ] = rmultinom(1, N[i], D0[, i])
}
CASCORE(Adj, X, 2)