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=";")

问题是为什么我的入度、出度和总度的值相同,而接近度也相同?另外,一开始我有41213个用户,但是经过分析(当我计算度数等时)我只有37874个。我怎么会失去这么多的观察?如果我在代码中有错误,请告诉我。

谢谢

4

1 回答 1

7

入度、出度和总度获得相同值的原因是您正在使用graph.data.frame(el, directed=FALSE). 在无向网络中,从一个节点到一个节点的链接数相同,它们都等于全局度。

如果你想要一个定向网络,你需要做graph.data.frame(el, directed=TRUE). 它将创建一个有向网络,其中数据帧第一列中的 id 是发送 tie 的节点的 id,第二列中的 id 表示接收该 tie 的节点。

至于丢失节点,我的猜测是你有一些人从不与任何人互动,因此当你将你的双模网络转换为单模时会丢失(我假设你这样做但不要告诉我们你是怎么做的这是因为你的线路load("edgelist_one_mode.rda"):)

缺少可重现的示例,我认为这就是我可以从您的代码中推断出的全部内容。

于 2013-06-05T13:52:13.617 回答