2017-03-08 241 views
0

我想用igraph软件包测量R中有262000个节点和1M个边的有向图的特征向量中心性。当我运行命令我得到这个错误:有向图中的特征向量

> ev<-evcent(amazon,directed=TRUE) 

Error in .Call("R_igraph_eigenvector_centrality", graph, directed, scale, : At arpack.c:1174 : ARPACK error, Maximum number of iterations reached De plus : Warning message: In .Call("R_igraph_eigenvector_centrality", graph, directed, scale, : At arpack.c:776 :ARPACK solver failed to converge (1001 iterations, 0/1 eigenvectors converged)

我不知道是什么意思这个错误???

+0

特征向量中心性可能有问题与有向图和不对称矩阵。 (请注意'eigen_centrality'中的警告!)关于方式的简短讨论是[here](http://www.sci.unich.it/~francesc/teaching/network/katz.html)。考虑像Katz或页面排名等有向图的其他中心性度量。 – paqmo

回答

4

错误代表它说的是:Maximum number of iterations reached

您可以增加最大迭代次数。这里是一个重复的例子:

首先制作一个图表:

> g <- make_ring(1000, directed=FALSE) 

然后迭代的默认数量设置为较小的数字:

> arpack_defaults$maxiter = 10 

传递到eigen_centrality,让你的错误:

> e = eigen_centrality(g, options=arpack_defaults) 
Error in .Call("R_igraph_eigenvector_centrality", graph, directed, scale, : 
    At arpack.c:944 : ARPACK error, Maximum number of iterations reached 
In addition: Warning message: 
In .Call("R_igraph_eigenvector_centrality", graph, directed, scale, : 
    At arpack.c:776 :ARPACK solver failed to converge (11 iterations, 0/1 eigenvectors converged) 

所以让我们尝试更多的迭代:

> arpack_defaults$maxiter = 1000 

,看看是否能工作:

> e = eigen_centrality(g, options=arpack_defaults) 

没有错误!

我不知道你的图需要多少迭代,或者需要多长时间。只要继续添加零,直到它收敛并正确返回,或者因为耗时过长而放弃。

+0

我添加了'arpack_defaults $ maxiter = 10000'的值,但仍然有同样的问题,为什么当我们在** ** ** ** ** ** ** ** ** ** ** ** ** ** ** **在同一秒内,当**指示=真**时,需要大约1小时的时间来获取错误。 – Sasa88

+0

帮助中有一个注释(arpack),表示如果输入矩阵是对称的,那么计算速度可以加快。如果指导=假,那么邻接矩阵必须是对称的,所以也许这是报道的加速。建议您使用较小的图表进行调查以了解相关情况。 – Spacedman