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 NetworkAdjusted Covariates for Community Detection
of Hu & Wang (2023). 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. (2023) NetworkAdjustedCovariatesforCommunity Detection,
https://arxiv.org/abs/2306.15616
# 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)