power_centrality()
接受一个图 (dat
) 并返回位置(由 nodes
选择)的 Boncich 权力中心性。权力贡献的衰减率由 exponent
指定(默认为 1)。
用法
power_centrality(
graph,
nodes = V(graph),
loops = FALSE,
exponent = 1,
rescale = FALSE,
tol = 1e-07,
sparse = TRUE
)
参数
- graph
输入图。
- 节点
顶点序列,指示哪些顶点要包含在计算中。默认情况下,包含所有顶点。
- loops
布尔值,指示是否应将对角线视为有效数据。仅当数据可以包含循环时才将其设置为 true。默认情况下,
loops
为FALSE
。- exponent
Bonacich 权力中心性分数的指数(衰减率);可以为负数
- rescale
如果为 true,则重新缩放中心性分数,使其总和为 1。
- tol
矩阵求逆期间接近奇异值的容差(请参阅
solve()
)- sparse
逻辑标量,是否使用稀疏矩阵进行计算。稀疏矩阵支持需要“Matrix”包
详细信息
Bonacich 的权力中心性度量定义为 \(C_{BP}\left(\alpha,\beta\right)=\alpha\left(\mathbf{I}-\beta\mathbf{A}\right)^{-1}\mathbf{A}\mathbf{1}\),其中 \(\beta\) 是一个衰减参数(此处由 exponent
设置),\(\mathbf{A}\) 是图邻接矩阵。(系数 \(\alpha\) 充当缩放参数,并且在此处(遵循 Bonacich (1987))进行设置,以使平方分数的总和等于顶点的数量。这允许使用 1 作为中心性范围“中间”的参考值。)当 \(\beta \rightarrow \)\( 1/\lambda_{\mathbf{A}1}\)(\(\mathbf{A}\) 的最大特征值的倒数)时,这在熟悉的特征向量中心性分数的常数倍数之内;对于 \(\beta\) 的其他值,该度量的行为截然不同。特别是,\(\beta\) 分别为偶数和奇数游走赋予正权重和负权重,这可以从级数展开 \(C_{BP}\left(\alpha,\beta\right)=\alpha \sum_{k=0}^\infty \beta^k \)\( \mathbf{A}^{k+1} \mathbf{1}\) 中看出,只要 \(|\beta| \)\( < 1/\lambda_{\mathbf{A}1}\) 就收敛。\(\beta\) 的大小控制着远处参与者对自我中心性分数的影响,较大的幅度表示衰减速率较慢。(因此,高速率意味着对边缘效应的更大敏感性。)
从解释上讲,Bonacich 权力度量对应于顶点权力由其改变者的权力之和递归定义的概念。然后,所涉及的递归的性质由幂指数控制:正值表示顶点随着其改变者变得更强大而变得更强大(如合作关系中发生的那样),而负值表示顶点只有在其改变者变得更弱时才变得更强大(如竞争或对抗关系中发生的那样)。指数的大小表示效应在长距离游走中衰减的趋势;幅度越大,衰减越慢。该度量的一个有趣的特征是它对指数幅度变化的相对不稳定性(尤其是在负值情况下)。如果您的理论激发了使用此度量,则应非常小心地选择一个非临时衰减参数。
对于有向网络,Bonacich 权力度量可以理解为类似于网络中的状态,其中较高状态的节点具有更多从它们指向具有状态的其他节点的边。节点 A 的中心性取决于 A 指向的所有节点的中心性,而它们的中心性取决于它们指向的节点,等等。请注意,这意味着出度为 0 的节点将具有 0 的 Bonacich 权力中心性,因为它们不指向任何人。将此与有向网络一起使用时,重要的是要考虑边缘方向及其代表的含义。
参考文献
Bonacich, P. (1972). “Factoring and Weighting Approaches to Status Scores and Clique Identification.” Journal of Mathematical Sociology, 2, 113-120.
Bonacich, P. (1987). “Power and Centrality: A Family of Measures.” American Journal of Sociology, 92, 1170-1182.
作者
Carter T. Butts (http://www.faculty.uci.edu/profile.cfm?faculty_id=5057),由 Gabor Csardi 移植到 igraph csardi.gabor@gmail.com
示例
# Generate some test data from Bonacich, 1987:
g.c <- make_graph(c(1, 2, 1, 3, 2, 4, 3, 5), dir = FALSE)
g.d <- make_graph(c(1, 2, 1, 3, 1, 4, 2, 5, 3, 6, 4, 7), dir = FALSE)
g.e <- make_graph(c(1, 2, 1, 3, 1, 4, 2, 5, 2, 6, 3, 7, 3, 8, 4, 9, 4, 10), dir = FALSE)
g.f <- make_graph(
c(1, 2, 1, 3, 1, 4, 2, 5, 2, 6, 2, 7, 3, 8, 3, 9, 3, 10, 4, 11, 4, 12, 4, 13),
dir = FALSE
)
# Compute power centrality scores
for (e in seq(-0.5, .5, by = 0.1)) {
print(round(power_centrality(g.c, exp = e)[c(1, 2, 4)], 2))
}
#> [1] 0.00 1.58 0.00
#> [1] 0.73 1.45 0.36
#> [1] 0.97 1.34 0.49
#> [1] 1.09 1.27 0.54
#> [1] 1.15 1.23 0.58
#> [1] 1.2 1.2 0.6
#> [1] 1.22 1.17 0.61
#> [1] 1.25 1.16 0.62
#> [1] 1.26 1.14 0.63
#> [1] 1.27 1.13 0.64
#> [1] 1.28 1.12 0.64
for (e in seq(-0.4, .4, by = 0.1)) {
print(round(power_centrality(g.d, exp = e)[c(1, 2, 5)], 2))
}
#> [1] 1.62 1.08 0.54
#> [1] 1.62 1.08 0.54
#> [1] 1.62 1.08 0.54
#> [1] 1.62 1.08 0.54
#> [1] 1.62 1.08 0.54
#> [1] 1.62 1.08 0.54
#> [1] 1.62 1.08 0.54
#> [1] 1.62 1.08 0.54
#> [1] 1.62 1.08 0.54
for (e in seq(-0.4, .4, by = 0.1)) {
print(round(power_centrality(g.e, exp = e)[c(1, 2, 5)], 2))
}
#> [1] -1.00 1.67 -0.33
#> [1] 0.36 1.81 0.12
#> [1] 1.00 1.67 0.33
#> [1] 1.30 1.55 0.43
#> [1] 1.46 1.46 0.49
#> [1] 1.57 1.40 0.52
#> [1] 1.63 1.36 0.54
#> [1] 1.68 1.33 0.56
#> [1] 1.72 1.30 0.57
for (e in seq(-0.4, .4, by = 0.1)) {
print(round(power_centrality(g.f, exp = e)[c(1, 2, 5)], 2))
}
#> [1] -1.72 1.53 -0.57
#> [1] -0.55 2.03 -0.18
#> [1] 0.44 2.05 0.15
#> [1] 1.01 1.91 0.34
#> [1] 1.33 1.78 0.44
#> [1] 1.52 1.67 0.51
#> [1] 1.65 1.59 0.55
#> [1] 1.74 1.53 0.58
#> [1] 1.80 1.48 0.60