我在我正在处理的一些数据中发现了一个奇怪的结果,并决定使用以下矩阵测试closeness和shortest.paths函数。
test<-c(0,0.3,0.7,0.9,0.3,0,0,0,0.7,0,0,0.5,0.9,0,0.5,0)
test<-matrix(test,nrow=4)
colnames(test)<-c("A","B","C,","D")
rownames(test)<-c("A","B","C,","D")
test
A B C D
A 0.0 0.3 0.7 0.9
B 0.3 0.0 0.0 0.0
C 0.7 0.0 0.0 0.5
D 0.9 0.0 0.5 0.0
grafo=graph.adjacency(abs(test),mode="undirected",weighted=TRUE,diag=FALSE)
当我衡量亲密度()时,我得到了这个:
> closeness(grafo)
A B C D
0.5263158 0.4000000 0.4545455 0.3846154
这仅仅是权重的总和而不是距离(1权重)。
> 1/(0.7+(0.7+0.3)+0.5)
[1] 0.4545455
当我将距离定义为1-weight时,我得到了这个
> 1/((1-0.7)+((1-0.7)+(1-0.3))+(1-0.5))
[1] 0.5555556
在igraph手册中,它在公式中说它是距离的总和。我的问题是,该功能是否实际考虑了权重,因此,它是一个错误,或者我们应该考虑(和修改)我们的图表&#39;边缘作为运行此功能的距离?
使用shortest.paths函数btw会出现SAME问题。它给出了权重的总和,而不是距离。
> shortest.paths(grafo)
A B C D
A 0.0 0.3 0.7 0.9
B 0.3 0.0 1.0 1.2
C 0.7 1.0 0.0 0.5
D 0.9 1.2 0.5 0.0
感谢。