谢谢您的时间。我正在尝试确定一种在R中计算度内Bonacich Power Centrality的方法。我是UCINET的长期用户,正在尝试进行切换。在UCINET中,这是通过选择Beta Centrality(Bonacich Power)并选择方向的“ incentrality”来完成的。
在R中,似乎没有一种方法可以使用sna或igraph软件包进行计算。这是sna中的bonpow:
bonpow(dat, g=1, nodes=NULL, gmode="digraph", diag=FALSE, tmaxdev=FALSE,
exponent=1, rescale=FALSE, tol=1e-07)
我确实指定了有向图,但是我无法在R中复制分析。
类似地,这是因为igraph中的power_centrality:
power_centrality(graph, nodes = V(graph), loops = FALSE,
exponent = 1, rescale = FALSE, tol = 1e-07, sparse = TRUE)
这里,似乎没有办法指定它是有向图(尽管您可以在定义网络时指定它)。但是,您可以估计它的居中性。
在两种情况下,我似乎都无法指定度内或度外功率中心。任何帮助表示赞赏。这些或其他包装中是否有我可能忽略的东西?
我不确定您指的是什么意思,因为在我看来,原始论文没有解决这个问题。现在,通常使用这些从邻接矩阵直接计算出的统计数据来完成的事情是通过对统计数据进行转置来“改变方向”(例如,当在netdiffuseR包中计算曝光量时,我们允许用户仅通过计算邻接矩阵的转置来计算“传入”或“传出”曝光)。当进行移调时,实际上是在翻转领带的方向性,即i-> j变为j-> i。
如果这是UCINET所做的(再次,不能完全确定它是什么),则可以通过换位网络来获得“传入” /“传出”版本。这是一个玩具示例:
# Loading the sna package (btw: igraph's implementation is a copy of
# sna's). I wrap it around suppressMessages to avoid the verbose
# print that the package has
suppressMessages(library(sna))
# This is random graph I generated with 10 vertices
net <- structure(
c(0, 0, 0, 1, 0, 1, 1, 0, 1, 0, 1, 0, 1, 1, 0, 0, 1,
0, 1, 1, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 1, 1,
0, 0, 0, 1, 0, 0, 0, 0, 1, 1, 0, 1, 0, 0, 0, 1, 1, 0, 0, 1, 1,
0, 1, 0, 0, 0, 0, 1, 0, 1, 1, 1, 0, 1, 1, 1, 0, 0, 0, 0, 1, 1,
0, 0, 0, 1, 1, 0, 0, 1, 0, 1, 0, 1, 1, 1, 1, 1, 0, 1, 0, 0),
.Dim = c(10L, 10L)
)
# Here is the default
bonpow(net)
#> [1] -0.8921521 -0.7658658 -0.9165947 -1.4176664 -0.6151369 -0.7862345
#> [7] -0.9206684 -1.3565601 -1.0347335 -1.0062173
# Here I'm getting the transpose of the adjmat
net2 <- t(net)
# The output is different (as you can see)
bonpow(net2)
#> [1] -0.8969158 -1.1026305 -0.6336011 -0.7158869 -1.2960022 -0.9545159
#> [7] -1.1684592 -0.8845729 -1.0368018 -1.1190876
由reprex package(v0.3.0)在2019-11-20创建