A function to compute the \(L\) and \(R\) semi-projectors for a given partition of the vertices.
Usage
scg_semi_proj(
groups,
mtype = c("symmetric", "laplacian", "stochastic"),
p = NULL,
norm = c("row", "col"),
sparse = igraph_opt("sparsematrices")
)
Arguments
- groups
A vector of
nrow(X)
orvcount(X)
integers giving the group label of every vertex in the partition.- mtype
The type of semi-projectors. For now “symmetric”, “laplacian” and “stochastic” are available.
- p
A probability vector of length
length(gr)
.p
is the stationary probability distribution of a Markov chain whenmtype
= “stochastic”. This parameter is ignored in all other cases.- norm
Either “row” or “col”. If set to “row” the rows of the Laplacian matrix sum up to zero and the rows of the stochastic sum up to one; otherwise it is the columns.
- sparse
Logical scalar, whether to return sparse matrices.
Details
The three types of semi-projectors are defined as follows. Let \(\gamma(j)\) label the group of vertex \(j\) in a partition of all the vertices.
The symmetric semi-projectors are defined as $$L_{\alpha j}=R_{\alpha
j}= $$$$
\frac{1}{\sqrt{|\alpha|}}\delta_{\alpha\gamma(j)},$$ the (row) Laplacian
semi-projectors as $$L_{\alpha
j}=\frac{1}{|\alpha|}\delta_{\alpha\gamma(j)}\,\,\,\, $$$$ \textrm{and}\,\,\,\, R_{\alpha
j}=\delta_{\alpha\gamma(j)},$$ and the (row) stochastic
semi-projectors as $$L_{\alpha
j}=\frac{p_{1}(j)}{\sum_{k\in\gamma(j)}p_{1}(k)}\,\,\,\, $$$$ \textrm{and}\,\,\,\, R_{\alpha
j}=\delta_{\alpha\gamma(j)\delta_{\alpha\gamma(j)}},$$ where \(p_1\) is the (left) eigenvector
associated with the one-eigenvalue of the stochastic matrix. \(L\) and
\(R\) are defined in a symmetric way when norm = col
. All these
semi-projectors verify various properties described in the reference.
References
D. Morton de Lachapelle, D. Gfeller, and P. De Los Rios, Shrinking Matrices while Preserving their Eigenpairs with Application to the Spectral Coarse Graining of Graphs. Submitted to SIAM Journal on Matrix Analysis and Applications, 2008. http://people.epfl.ch/david.morton
See also
scg-method for a detailed introduction. scg()
,
scg_eps()
, scg_group()
Spectral Coarse Graining
scg-method
,
scg_eps()
,
scg_group()
,
scg()
,
stochastic_matrix()
Author
David Morton de Lachapelle, http://people.epfl.ch/david.morton.
Examples
library(Matrix)
# compute the semi-projectors and projector for the partition
# provided by a community detection method
g <- sample_pa(20, m = 1.5, directed = FALSE)
eb <- cluster_edge_betweenness(g)
memb <- membership(eb)
lr <- scg_semi_proj(memb)
# In the symmetric case L = R
tcrossprod(lr$R) # same as lr$R %*% t(lr$R)
#> 4 x 4 sparse Matrix of class "dsCMatrix"
#>
#> [1,] 1 . . .
#> [2,] . 1 . .
#> [3,] . . 1 .
#> [4,] . . . 1
P <- crossprod(lr$R) # same as t(lr$R) %*% lr$R
# P is an orthogonal projector
isSymmetric(P)
#> [1] TRUE
sum((P %*% P - P)^2)
#> [1] 3.5206e-31
## use L and R to coarse-grain the graph Laplacian
lr <- scg_semi_proj(memb, mtype = "laplacian")
L <- laplacian_matrix(g)
Lt <- lr$L %*% L %*% t(lr$R)
## or better lr$L %*% tcrossprod(L,lr$R)
rowSums(Lt)
#> [1] 1.110223e-16 1.110223e-16 1.110223e-16 1.110223e-16