Igraph加权平均度计算中的标准化

时间:2017-06-01 11:30:08

标签: r normalization igraph

我有一个我在Igraph使用加权边的无向网络。

对于特定图表out,我可以使用函数Igraph计算edge.betweenness.community中的社区,并使用edge.betweenness计算每个边的中间性。

我可以通过编写以下内容告诉igraph包括每条边的权重:

largest <- which.max(sapply(modules, vcount))
out <- modules[largest][[1]]
bt <- edge.betweenness(out, weights = E(out)$value, directed = FALSE)

返回:

bt
 [1] 20.0 11.0 27.0 11.0  8.0 12.0  8.0  8.5  7.5  6.0  3.0  3.0  7.0  8.5  7.5  4.0 11.0

权重是:

E(out)$value
 [1] 0.2829 0.2880 0.2997 0.1842 0.2963 0.2714 0.2577 0.2850 0.2850 0.2577 0.2305 0.2305 0.2577 0.1488 0.1488 0.1215 0.2997

此情况下的权重具有限制0 - 1,其中 1 =最高成本以遍历边缘, 0 =最低成本。但是,在任何中介性计算中,这些限制都不会传递给igraph

我的问题:igraph如何根据规范化来评估所列权重的下限和上限?

是否会根据指定重量的最小值和最大值自动调整权重? (在这种情况下为min = 0.1215, max = 0.2997

我想要的是:如何让它考虑完整数据集(min=0 - max=1)的真实限制?

其他信息:

如果我将权重E(out)$value乘以某个常数并重新计算中间性,我得到一个类似的答案(我假设有一些浮动错误,它们实际上是相同的):

new_weights <- as.numeric(E(out)$value*2.5)
new_weights
 [1] 0.70725 0.72000 0.74925 0.46050 0.74075 0.67850 0.64425 0.71250 0.71250 0.64425 0.57625 0.57625 0.64425 0.37200 0.37200 0.30375 0.74925
bt <- edge.betweenness(out, weights = new_weights, directed = FALSE)

,并提供:

bt
 [1] 20 11 27 11  8 12  8  8  8  6  3  3  7  8  8  4 11

这意味着正在进行一些自动缩放:

考虑到这一点,如何手动将中介性计算扩展到我所需的0和1限制?

研究:

2016年6月2日编辑 -

我试图在igraph R Github页面上查看edge.betweenness的源代码https://github.com/igraph/rigraph/tree/dev/R

我能找到的最接近的功能是https://github.com/igraph/rigraph/blob/dev/R/community.R

cluster_edge_betweenness

此函数调用C函数C_R_igraph_community_edge_betweenness。我在igraph C文档中找到的最接近的参考文献是igraph_community_edge_betweenness https://github.com/igraph/igraph/blob/master/include/igraph_community.h

然而,这些链接都没有提及如何计算权重的限制。

原创研究:

我查看了关于中介算法的igraph文档,并探讨了与规范化相关的其他问题,但没有发现任何特定于权重本身标准化的内容。

Modularity calculation for weighted graphs in igraph

Calculation of betweenness in iGraph

http://igraph.org/r/doc/betweenness.html

网络数据和可视化如下:

plot(out)

Weighted Graph

get.data.frame(out)
   from   to  value sourceID targetID
1    74   80 0.2829   255609   262854
2    74   61 0.2880   255609   179585
3    80 1085 0.2997   262854  3055482
4  1045 1046 0.1842  2970629  2971615
5  1046 1085 0.2963  2971615  3055482
6  1046 1154 0.2714  2971615  3087803
7  1085 1154 0.2577  3055482  3087803
8  1085 1187 0.2850  3055482  3101131
9  1085 1209 0.2850  3055482  3110186
10 1154 1243 0.2577  3087803  3130848
11 1154 1187 0.2305  3087803  3101131
12 1154 1209 0.2305  3087803  3110186
13 1154 1244 0.2577  3087803  3131379
14 1243 1187 0.1488  3130848  3101131
15 1243 1209 0.1488  3130848  3110186
16 1243 1244 0.1215  3130848  3131379
17 1243 1281 0.2997  3130848  3255811

(在这种情况下,权重位于frame$value列中,限制为0 - 1,其中 1 =最高成本以遍历边缘, 0 =最低成本)

0 个答案:

没有答案