2017-03-08 11 views
0

igraphパッケージを使用して、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'の警告に注意してください!)方法についての簡単な議論はこちら[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'の値を加えましたが、同じ問題を抱えています。なぜなら、** directed **と同じデータセットで** eigen_centrality **を** FALSE **として実行すると、同じ秒で、そして** directed = TRUE **のときは、エラーを得るのに1時間ほどの時間がかかります。 – Sasa88

+0

ヘルプ(arpack)に、入力行列が対称であれば計算が高速化できるというメモがあります。 directed = FALSEの場合、隣接行列は対称でなければならないので、おそらくこれは報告された速度です。小さなグラフを使って調査し、このことを把握することをお勧めします。 – Spacedman

関連する問題