R中的复图熵测量

时间:2014-09-06 17:17:44

标签: r function igraph shortest-path

对于此测量,我总是只需要将传入的树放入顶点。 第一部分我将不得不计算所有最短的顶点路径,并以特殊的方式求和它们,所有的shortestPath = 1将计为1,shortestPath = 2将计为1/2,全部使用shortestPath = 3为1/3,依此类推。然后他们应该总结为我们现在称为x的值。 完成图表后,应该有一个函数,它将采用x并计算  x / sum(y)y将是从上面计算的所有值减去我们当前正在处理的值。

我的初始数据是:

library(igraph)
From <- c(1,2,3,4,5,6,7,8)
To <- c(NA,1,2,3,2,NA,6,7)
Data <- data.frame(From,To)
Network <- graph.data.frame(Data[,c("From","To")],directed=TRUE)
Network<- Network - "NA"
plot(Network)

enter image description here

最后它看起来应该与此类似

From <- c(1,2,3,4,5,6,7,8)
To <- c(NA,1,2,3,2,NA,6,7)
ValueX<- c(2.333, 2.5, 1, 0, 0, 1.5, 1, 0)
FinalMeasure<- c(2.333/(2.5+1+0+0), 2.5/(2.333+1+0+0), 1/(2.333+2.5+0+0), 0/(2.333+2.5+1+0), 0/(2.333+2.5+1+0), 1.5/(1+0), 1/(1.5+0), 0/(1.5+1))
NewData<- data.frame(From,To, ValueX, FinalMeasure)

我的第一个想法是使用clusters()和shortest.paths()构建一个函数,但我不知道我该怎么做。

1 个答案:

答案 0 :(得分:1)

您似乎可以使用此代码计算ValueXFinalMeasure

pp <- 1/shortest.paths(Network, mode="out")
pp[!is.finite(pp)]<-0
ValueX <- colSums(pp)

FinalMeasure <- ave(dd, clusters(Network)$membership, FUN=function(x) x/(sum(x)-x))

所以你的决赛桌是

NewData<- data.frame(From,To, ValueX, FinalMeasure)

#   From To   ValueX FinalMeasure
# 1    1 NA 2.333333    0.6665714
# 2    2  1 2.500000    0.7500750
# 3    3  2 1.000000    0.2069108
# 4    4  3 0.000000    0.0000000
# 5    5  2 0.000000    0.0000000
# 6    6 NA 1.500000    1.5000000
# 7    7  6 1.000000    0.6666667
# 8    8  7 0.000000    0.0000000