4

フォーラムの同じスレッドに投稿するユーザーの名前で構成されるデータ テーブルがあります。次のようになります。X1 X2 1. g79 kian 2. g79 grayracer 3. g79 oldskoo1 ...

次数、近さ、中間性を計算する必要があります。私は次のコードを使用しています:

library(igraph)
setwd("/Volumes/NATASHKA/api/R files")
load("edgelist_one_mode.rda")
load("map.rda")
load ("result.rda")
el <- as.matrix(whatwewant)
el[,1] <- as.character(el[,1])
el[,2] <- as.character(el[,2])
g <- graph.data.frame(el, directed=FALSE)
plot(g, edge.arrow.size=.5)
indegreeG <- degree(g, mode="in")
outdegreeG <- degree(g, mode="out")
totaldegreeG <- degree(g)
inclosenessG <- closeness(g, mode='in')
outclosenessG <- closeness(g, mode='out')
totalclosenessG <- closeness(g)
betweennessG <- betweenness(g)
forumG <- data.frame(V(g)$name, indegreeG, outdegreeG, totaldegreeG, inclosenessG,    outclosenessG, totalclosenessG, betweennessG)
write.table(forumG,file="forumG.csv",sep=";")

問題は、in-degree、out-degree、および total-degree で同じ値を取得し、closeness で同じ値を取得するのはなぜですか? その上、最初は 41213 人のユーザーがいますが、分析後 (次数を計算するときなど) は 37874 しかありません。コードに間違いがあれば教えてください。

ありがとう

4

1 に答える 1

7

入次数、出次数、総次数で同じ値が得られるのは、 で無向ネットワークを作成しているためですgraph.data.frame(el, directed=FALSE)。無向ネットワークでは、ノードからノードへのリンクの数は同じであり、どちらもグローバル次数に等しくなります。

有向ネットワークが必要な場合は、 を実行する必要がありますgraph.data.frame(el, directed=TRUE)。データフレームの最初の列のIDがタイを送信するノードのIDであり、2番目の列のIDがそのタイを受信するノードを示す有向ネットワークが作成されます。

ノードを失うことについては、誰とも対話しないため、2 モード ネットワークを 1 モードに変換すると失われる個人がいると思います (これを行うと仮定しますが、どのように行うかは示しません)。それはあなたのラインのせいですload("edgelist_one_mode.rda"):)

再現可能な例が不足しているため、コードから推測できるのはそれだけだと思います。

于 2013-06-05T13:52:13.617 に答える