如果您从 R 中使用 igraph,请使用此选项
power_centrality {igraph} | R 文档 |
power_centrality
接受一个图(dat
)并返回位置的 Boncich 权力中心性(由 nodes
选择)。权力贡献的衰减率由 exponent
指定(默认为 1)。
power_centrality(
graph,
nodes = V(graph),
loops = FALSE,
exponent = 1,
rescale = FALSE,
tol = 1e-07,
sparse = TRUE
)
图 |
输入图。 |
节点 |
顶点序列,指示要包含在计算中的顶点。 默认情况下,包括所有顶点。 |
循环 |
布尔值,指示是否应将对角线视为有效数据。 当且仅当数据可以包含循环时,才将此设置为 true。 |
指数 |
Bonacich 权力中心性得分的指数(衰减率); 可以为负 |
重新缩放 |
如果为 true,则将中心性得分重新缩放,使其总和为 1。 |
tol |
矩阵求逆期间接近奇异性的容差(请参阅 |
稀疏 |
逻辑标量,是否使用稀疏矩阵进行计算。 支持稀疏矩阵需要“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 权力度量对应于顶点权力由其改变的权力和递归定义的概念。 所涉及的递归的性质然后由权力指数控制:正值意味着顶点随着其改变变得更强大而变得更强大(如合作关系中发生的),而负值意味着顶点仅随着其改变变得更弱而变得更强大(如竞争或对抗关系中发生的)。 指数的大小表示效应在长步中衰减的趋势; 幅度越大表示衰减速度越慢。 此度量的一个有趣的特征是它对指数幅度变化的相对不稳定(尤其是在负数情况下)。 如果您的理论促使使用此度量,您应该非常小心地选择一个非临时性的衰减参数。
一个向量,包含中心性得分。
奇异邻接矩阵给该算法带来了无穷无尽的麻烦; 因此,该例程可能在某些情况下失败。 当我得到更好的算法时,这将得到修复。 power_centrality
不会在提取特征向量之前对称化您的数据; 除非您真的打算这样做,否则不要向该例程发送非对称矩阵。
此函数是从 SNA 包移植(即复制)的。
Carter T. Butts (http://www.faculty.uci.edu/profile.cfm?faculty_id=5057),由 Gabor Csardi 移植到 igraph csardi.gabor@gmail.com
Bonacich, P. (1972)。 “状态分数和派系识别的分解和加权方法。” 数学社会学杂志, 2, 113-120。
Bonacich, P. (1987)。 “权力和中心性:一系列措施。” 美国社会学杂志, 92, 1170-1182。
eigen_centrality
和 alpha_centrality
# Generate some test data from Bonacich, 1987:
g.c <- graph( c(1,2,1,3,2,4,3,5), dir=FALSE)
g.d <- graph( c(1,2,1,3,1,4,2,5,3,6,4,7), dir=FALSE)
g.e <- graph( c(1,2,1,3,1,4,2,5,2,6,3,7,3,8,4,9,4,10), dir=FALSE)
g.f <- 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))
}
for (e in seq(-0.4,.4, by=0.1)) {
print(round(power_centrality(g.d, exp=e)[c(1,2,5)], 2))
}
for (e in seq(-0.4,.4, by=0.1)) {
print(round(power_centrality(g.e, exp=e)[c(1,2,5)], 2))
}
for (e in seq(-0.4,.4, by=0.1)) {
print(round(power_centrality(g.f, exp=e)[c(1,2,5)], 2))
}