問題タブ [sna]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
graph-theory - 次数1.5のグラフの近傍を計算するには?
私はグラフ オブジェクトを持っており、1.5での一連の頂点の近傍のgサブグラフを作成したいと考えています。g_subv_matchesgorder
言い換えれば、どの頂点がv_matches(順序 1) に接続されているか、およびこれらが頂点にも接続されている場合にのみv_matches、どの頂点が order==1 頂点に接続されているかを見つけたいと考えています。
非技術的な用語では、「友人の友人 (順序 2)、これらの友人が私の友人でもある場合 (順序 1.5)」を見つけたいと考えています。でこれを簡単に行う方法が見つかりませんigraph。
私が書いたコードは の次数 2 の近傍をv_matches計算しますが、次数 1.5 を計算したいのです。どんな助けでも大歓迎です。
v_matches <- which(V(g)$SomeVertexAttribute==SomeValue)
g_sub <- induced.subgraph(graph=g,vids=unlist(neighborhood(g,order=2,nodes=v_matches)))
order=2更新:サブグラフをに変換するために作成した関数とコードを次に示しますorder 1.5。ただし、それが適切に機能しているとは確信していません。
r - Rを使用して製品の推奨事項を理解するためのSNA分析
この質問がうまく組み立てられていない場合はお詫び申し上げます。SNAP からの e コマース データで SNA を分析するために、初心者の R スキルを試しています。製品の共同購入情報に関する大規模なデータ セットを取得しました。データ セットには、#FromNode および #ToNode 情報に関する詳細が含まれており、その他のトランザクションの詳細 (製品に関する推奨事項の詳細が含まれています) とは別にあります。近接中心性、中間性、自己中心性、密度などのネットワーク パラメーターのいくつかでデータをテストしたいと思います。以下は、データセットで試した最初のコードで、エラーが発生しました。
.Call("R_igraph_graph_adjacency", adjmatrix, as.numeric(mode), のエラー: structure_generators.c:272 で: 非正方行列、非正方行列
データセットには、「有向グラフ (順序付けられていないノードの各ペアが 1 回保存される)」と記載されています。ここからどう進めばいいのかわからない。また、トランザクションの詳細をこれらのノードとエッジの分析にリンクする方法 (ノードは製品であり、エッジは 1 つの製品と共同購入された製品の間のリンクです)。
r - 行列のリストを大きな行列にマージします (その値を要約します)
現時点で私の問題は次のとおりです。私は行列の大きなリスト(約1600)を持っています。実際には、さまざまなサイズ (2:2 から 5:5) のクリークの隣接行列です。ここに2つの行列の例があります
最初
そして2番目
このマトリックスをより大きなマトリックスにマージして、次のようなものにする必要があります。
でもこれが全てじゃない。同様のクリーク(例の最初のものなど)、または古い名前を含む別のクリークがある場合、その値を大きなマトリックスの値で要約したいと思います。そして、次の形式の行列を取得します。
ソーシャル ネットワークのリンクの力を特定するには、これらの数値が必要です。
この問題は私にとって非常に複雑に思えるので、十分に明確に説明したいと思います:)
r - 印刷中に複数のファイル タイプを作成する
高解像度バージョンと低解像度バージョンの両方で一連のプロットを生成するか、2 つの異なるファイル タイプ (.png と .eps) を使用して別の方法で記述したいと考えています。これを行うための最良/最小の反復方法を知りたいです。gplotで関数を使用していますsnaが、プロットにはプロット エリアの外側にカスタムの凡例があります。私は次のような関数を書きました:
これは完全に機能しますが、非効率的で扱いにくいようです。この質問のより一般的なバージョンは次のとおりです。何らかの理由でプロット (カスタム凡例などの追加レイヤーを含む) を作成し、それをオブジェクトとして保存し、後でプロットする場合、これを行う方法はありますか? ちなみに、この質問はsna最初は私に固有のものではありませんでしたが、 で同様の関数を使用して問題を再現しようとしたところplot、凡例が正しく表示されなかったので、プロット領域外に対するこの解決策伝説は一般的ではないようです。
r - 頂点を反復処理し、近隣の属性に基づいて新しい属性を計算する高速な方法
すべての頂点を繰り返し処理し、隣接する頂点に基づいて新しい属性を計算するという単純なタスクを実行しています。SOを検索しましたが、これまでのところ、少なくとも3つの方法があることがわかっています。
- ad_adj_list を使用して adj リストを作成し、各要素を反復処理します。
- sapply を使用して、各頂点を直接反復します。
ただし、どちらの方法も、データの規模 (300k の頂点と 800 万のエッジ) に対して時間がかかりすぎます。頂点をループする高速な方法はありますか? ありがとう!
ベンチマークとして、次のサンプル データがあるとします。
方法 1. のコードは次のとおりです。
方法 2. のコードは次のとおりです。
私は、igraph-R が頂点の相互作用をそれほど遅くすべきではないと信じています。さもなければ、数百万のサイズの大きなグラフの分析が不可能になります。このタスクは、R ユーザーにとって非常に一般的なはずです!
アップデート
by@MichaelChirico のコメントによると、次のように、グラフ構造を data.table にインポートし、data.table構文で計算を行うという 3 番目の方法を思いつきました。
data.table の方法ははるかに高速です。ただし、その結果は最初の 2 つの方法の結果とまったく同じではありません。さらに、このような単純なタスクを実行するために別のパッケージに依存しなければならないことに非常に失望しています。これが igraph-R の強みであるはずです。私が間違っていることを願っています!
r - 焦点ノードの中間性に影響を与えるノードを特定する
焦点ノード i の中間中心性に影響を与えるノード (j、k) を特定する最良の方法を知りたいです。中間性は i を通過する j と k の間の測地線に基づくため、これを行う 1 つの方法は、ネットワーク内のすべての最短パスを取得し、i を含むパスのみを選択し、それらのパス上のノードの ID を取得することです。 . でも
実行に約 9 秒かかります。これは、最初のノードからのパスのみです。私が理解しているように、shortest_paths一度に1つのノードからのパスのみを計算します。iを通過する測地線だけが本当に欲しいので、これには多くの無関係な情報が含まれます。私は、媒介関数自体が、幅優先探索または他のアルゴリズムを使用してより効率的な方法でこれを行っていると想定していますが、igraph や sna のドキュメントには、これを可能にするものは何もありません。ここで車輪の再発明は避けたいと思います。
要するに、ネットワークと焦点ノード i が与えられた場合、i を含む j と k の間のすべての測地線を見つける最良の方法は何ですか?
更新:これは私が書いた機能であり、トリックを行うようです(ただし、これはまだ注意深くチェックしていません)。同点確率 .2 の 100 ノードのランダム グラフでは遅いですが、実行できないほど遅くはありません。これを行うためのより良い方法があると確信しています。
r - Rでプリファレンスマトリックスを生成しますか?
r を使用して、属性として民族性を持つ個人の無向ネットワークを分析しています。ネクタイ アカウント テーブル、または「選好マトリックス」を作成したいと考えています。これは、民族性の値が両方の次元に配列された正方行列であり、各セルは、そのタイプの関係に対応するネクタイの数を示します。(したがって、これにより、あるグループが別のグループに引き分けになる確率を計算できますが、igraphのpreference.game関数の引数として使用したいだけです)。これが私が試したことです:
私の問題は最後にあると思います。セルにデータを入力する方法を R に指示する式を理解する必要があります。私が入れた表現は機能していないようですが、潜在的に私が行くことができるようにしたいです
そして、"a" は、白黒関係に対応する隣接行列内のすべてのセルの合計を返します。
これが私のデータのサンプルです:
matrix - 対人影響の構造的尺度
私は、2 人の俳優が同点である確率と、影響を受ける可能性に基づいて、対人関係の影響のマトリックスを計算しようとしています (Friedkin, 2001)。そのためには、0 と 1 の間の直接的な結びつきの 13*13 行列から始めます。社会行列から影響行列への変換は、次のように行われます。
Ai = 感受性の尺度および Cik = 同点の確率の行列 - ERGM によって計算されます。私が理解していないのは、数学者にとっては簡単な質問かもしれませんが、分母です。正確には何によって分割していますか?そして、この計算のためにRで関数を書く簡単な方法はありますか?
明確にしていただきありがとうございます。
ベスト、マティアス