【问题标题】:Calculate degree, closeness and betweenness in R计算R中的度数、接近度和介数
【发布时间】:2013-06-05 13:13:25
【问题描述】:

我有一个数据表,其中包含在论坛的同一线程中发帖的用户的姓名,它看起来像这样: X1 X2 1. g79 基安 2. g79 灰色赛车 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个。我怎么会失去这么多的观察?如果我的代码有错误,请告诉我。

谢谢

【问题讨论】:

  • 使用dput 包含一些示例数据。并告诉我们您正在使用哪些软件包。
  • 如果没有reproducible example,很难为您提供帮助。对于您的第一个问题,例如,如果您有一个环形结构,您就会得到相同数量的入、出和所有度数。即g &lt;- - graph.ring(10).
  • @Thomas 它是igraph 包。我编辑 OP 以添加它。

标签: r social-networking igraph sna


【解决方案1】:

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

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

至于丢失节点,我的猜测是您有一些人从不与任何人互动,因此当您将双模网络转换为单模时会丢失(我假设您这样做但没有向我们展示由于您的线路,您是如何做到的:load("edgelist_one_mode.rda"))

没有一个可重复的例子,我想这就是我可以从你的代码中推断出来的全部内容。

【讨论】:

    猜你喜欢
    • 2019-04-01
    • 1970-01-01
    • 1970-01-01
    • 2013-10-02
    • 1970-01-01
    • 1970-01-01
    • 2011-01-06
    • 2013-08-01
    • 2021-03-09
    相关资源
    最近更新 更多