SCORE {NAC} | R Documentation |
Spectral Clustering On Ratios-of-Eigenvectors.
Description
Using ratios-of-eigenvectors to detect underlying communities.
Usage
SCORE(G, K, itermax = 100, startn = 10)
Arguments
G |
An |
K |
A positive integer which is no larger than |
itermax |
|
startn |
|
Details
SCORE
is fully established in Fast community detection by
SCORE of Jin (2015). SCORE
uses the entrywise ratios between the
first leading eigenvector and each of the other leading eigenvectors for
clustering. It is noteworthy that SCORE only works on connected graphs.
In other words, it does not allow for isolated vertices.
Value
estall |
A factor indicating nodes' labels. Items sharing the same label are in the same community. |
References
Jin, J. (2015). Fast community detection by score.
The Annals of Statistics, 43 (1), 57–89.
doi:10.1214/14-AOS1265
Examples
# Simulate the Network
n = 10; K = 2;
theta = 0.4 + (0.45-0.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)]
library(igraph)
is.igraph(Adj) # [1] FALSE
ix = components(graph.adjacency(Adj))
componentLabel = ix$membership
giantLabel = which(componentLabel == which.max(ix$csize))
Giant = Adj[giantLabel, giantLabel]
SCORE(Giant, 2)