igraph与tnet之间中心性度量的差异

时间:2013-12-04 23:12:49

标签: r social-networking igraph

我正试图获得有针对性的加权网络的中心度量。我一直在使用igraph中的tnetR个包。但是,我发现使用这两个软件包获得的结果存在一些差异,我对这些差异的原因有点困惑。见下文。

require(igraph)
require(tnet)
set.seed(1234)

m <- expand.grid(from = 1:4, to = 1:4)
m <- m[m$from != m$to, ]
m$weight <- sample(1:7, 12, replace = T)
igraph_g <- graph.data.frame(m)
tnet_g <- as.tnet(m)

closeness(igraph_g, mode = "in")

         2          3          4          1 
0.05882353 0.12500000 0.07692308 0.09090909 

closeness(igraph_g, mode = "out")

         2          3          4          1 
0.12500000 0.06250000 0.06666667 0.10000000 

closeness(igraph_g, mode = "total")

         2          3          4          1 
0.12500000 0.14285714 0.07692308 0.16666667 


closeness_w(tnet_g, directed = T, alpha = 1)

     node closeness n.closeness
[1,]    1 0.2721088  0.09070295
[2,]    2 0.2448980  0.08163265
[3,]    3 0.4130809  0.13769363
[4,]    4 0.4081633  0.13605442

有人知道发生了什么事吗?

1 个答案:

答案 0 :(得分:12)

在发布这个问题之后,我偶然发现了由tnet包的维护者Tore Opsahl维护的blog。我使用博客this帖子上的评论问了同样的Tore问题。以下是Tore的回复:

  

感谢您使用tnet! igraph能够处理权重;但是,igraph中的距离函数要求权重代表“成本”而不是“强度”。换句话说,系带重量被认为是穿过系带所需的能量。请参阅Shortest Paths in Weighted Networks

因此,如果您运行Tore提供的以下代码(在将权重传递给igraph之前获取权重的倒数),您将获得tnet和{{1}的等效紧密度分数}。

igraph