计算(假定为稀疏)图的选定特征值和特征向量。
用法
spectrum(
graph,
algorithm = c("arpack", "auto", "lapack", "comp_auto", "comp_lapack", "comp_arpack"),
which = list(),
options = arpack_defaults()
)
参数
- graph
输入图,可以是有向图或无向图。
- algorithm
要使用的算法。目前只实现了
arpack
,它使用 ARPACK 求解器。另请参见arpack()
。- which
一个列表,用于指定要计算哪些特征值和特征向量。默认情况下,计算主(即最大幅度)特征值和相应的特征向量。
- options
ARPACK 求解器的选项。请参见
arpack_defaults()
。
值
取决于所使用的算法。
对于 arpack
,返回一个包含三个条目的列表
- options
有关完整说明,请参见
arpack()
的返回值。- values
数值向量,特征值。
- vectors
数值矩阵,特征向量作为列。
详细信息
which
参数是一个列表,它指定要计算哪些特征值和相应的特征向量:有八个选项
具有最大幅度的特征值。将
pos
设置为LM
,将howmany
设置为您想要的特征值的数量。具有最小幅度的特征值。将
pos
设置为SM
,将howmany
设置为您想要的特征值的数量。最大特征值。将
pos
设置为LA
,将howmany
设置为您想要的特征值的数量。最小特征值。将
pos
设置为SA
,将howmany
设置为您想要的特征值的数量。来自频谱两端的特征值。将
pos
设置为BE
,将howmany
设置为您想要的特征值的数量。如果howmany
是奇数,则从较大端返回一个额外的特征值。选定的特征值。目前尚未实现。
区间中的特征值。目前尚未实现。
所有特征值。尚未实现。无论如何,标准
eigen
函数在这方面做得更好。
请注意,对于具有多个组件的图,例如具有孤立顶点的图,ARPACK 可能不稳定。
参见
as_adjacency_matrix()
用于创建(稀疏)邻接矩阵。
中心性度量 alpha_centrality()
、authority_score()
、betweenness()
、closeness()
、diversity()
、eigen_centrality()
、harmonic_centrality()
、hits_scores()
、page_rank()
、power_centrality()
、strength()
、subgraph_centrality()
作者
Gabor Csardi csardi.gabor@gmail.com
示例
## Small example graph, leading eigenvector by default
kite <- make_graph("Krackhardt_kite")
spectrum(kite)[c("values", "vectors")]
#> $values
#> [1] 4.306404
#>
#> $vectors
#> [,1]
#> [1,] -0.35220940
#> [2,] -0.35220940
#> [3,] -0.28583499
#> [4,] -0.48102086
#> [5,] -0.28583499
#> [6,] -0.39769064
#> [7,] -0.39769064
#> [8,] -0.19586058
#> [9,] -0.04807349
#> [10,] -0.01116326
#>
## Double check
eigen(as_adjacency_matrix(kite, sparse = FALSE))$vectors[, 1]
#> [1] -0.35220940 -0.35220940 -0.28583499 -0.48102086 -0.28583499 -0.39769064
#> [7] -0.39769064 -0.19586058 -0.04807349 -0.01116326
## Should be the same as 'eigen_centrality' (but rescaled)
cor(eigen_centrality(kite)$vector, spectrum(kite)$vectors)
#> [,1]
#> [1,] -1
## Smallest eigenvalues
spectrum(kite, which = list(pos = "SM", howmany = 2))$values
#> [1] -0.4043420 0.6403647