# 加权网络属性的计算方法

三个指标(加权度中心性加权平均路径长度加权聚类系数)在加权网络中的计算方法与传统未加权网络的指标类似,但在计算时引入了边的权重。以下是每个指标的计算方法及其背后的原理:

# 1. 加权度中心性(Weighted Degree Centrality)

加权度中心性考虑了节点与其邻居相互作用的强度,而不仅仅是连接数量。

# 计算公式:

加权度中心性 CD(v)C_D(v) 是某个节点 vv 连接的边的权重之和:

CD(v)=uN(v)wuvC_D(v) = \sum_{u \in N(v)} w_{uv}

其中:

  • N(v)N(v) 是与节点 vv 相连的邻居节点集合。
  • wuvw_{uv} 是节点 vv 与邻居 uu 之间边的权重。

# 计算步骤:

  1. 对每个节点 vv,找到它的所有邻居节点 uu
  2. 对每个邻居节点,取节点 vv 和邻居 uu 之间边的权重 wuvw_{uv}
  3. 计算所有连接的权重之和,得到该节点的加权度中心性。

# 解释:

加权度中心性反映了节点与其邻居的交互强度。权重高的边说明该节点与邻居的关系更紧密。因此,加权度中心性不仅仅关注一个节点与多少个节点相连,还反映了这些连接的强度。

# 2. 加权平均路径长度(Weighted Average Path Length)

加权平均路径长度是指网络中任意两个节点之间的最短路径长度的加权平均值。边的权重可以反映距离、费用或交互强度,因此它直接影响路径长度的计算。

# 计算公式:

加权最短路径长度 L(v,u)L(v,u) 是节点 vvuu 之间的最短路径上的权重之和:

L(v,u)=min((i,j)P(v,u)wij)L(v, u) = \min \left( \sum_{(i,j) \in P(v,u)} w_{ij} \right)

其中:

  • P(v,u)P(v, u) 是节点 vvuu 之间的所有路径集合。
  • wijw_{ij} 是路径上的边 (i,j)(i,j) 的权重。

然后,加权平均路径长度 L\overline{L} 是所有节点对之间最短路径长度的平均值:

L=1n(n1)vuL(v,u)\overline{L} = \frac{1}{n(n-1)} \sum_{v \neq u} L(v, u)

其中:

  • nn 是网络中的节点总数。
  • L(v,u)L(v,u) 是节点 vvuu 之间的加权最短路径长度。

# 计算步骤:

  1. 使用一个最短路径算法(如 Dijkstra 算法或 Floyd-Warshall 算法)计算网络中每对节点之间的加权最短路径。
  2. 对每个节点对,找到它们之间的最短路径长度,并将这些路径长度取平均值,得到网络的加权平均路径长度。

# 解释:

加权平均路径长度反映了网络中代谢物之间的连通性和效率。在加权网络中,路径长度不仅仅是边的数量,还取决于每条边的权重。权重较小的边被认为是较短路径上的首选,因此,平均路径长度会因权重变化而不同。

# 3. 加权聚类系数(Weighted Clustering Coefficient)

加权聚类系数衡量某个节点的邻居之间的连通程度,并且将边的权重纳入考虑。

# 计算公式:

加权聚类系数 C(v)C(v) 是节点 vv 邻居之间的边的加权强度之和与其可能存在的最大强度之比:

C(v)=1kv(kv1)i,jN(v)(wvi+wvj)2aijC(v) = \frac{1}{k_v(k_v - 1)} \sum_{i,j \in N(v)} \frac{(w_{vi} + w_{vj})}{2} a_{ij}

其中:

  • kvk_v 是节点 vv 的度,即它的邻居节点数量。
  • wvi,wvjw_{vi}, w_{vj} 是节点 vv 与其邻居 iijj 之间的边的权重。
  • aija_{ij} 是邻居节点 iijj 之间是否存在边(如果存在,则 aij=1a_{ij} = 1,否则为 00)。

# 计算步骤:

  1. 找到每个节点 vv 的邻居节点集合 N(v)N(v)
  2. 对于节点 vv 的每对邻居 iijj,检查它们是否相连,并取出它们与节点 vv 之间的边权重。
  3. 计算这些连接的权重平均值,并归一化为最大可能的边强度。
  4. 对每个节点计算其加权聚类系数,最终可以取所有节点的平均值,得到网络的整体加权聚类系数。

# 解释:

加权聚类系数反映了节点的邻居之间的集群性和交互强度。高加权聚类系数说明节点的邻居不仅彼此连接紧密,而且这些连接的强度也较高。

# 总结:

  • 加权度中心性:衡量节点的总交互强度,反映节点在网络中的重要性。
  • 加权平均路径长度:衡量网络中任意两点之间的连通性,反映代谢物在不同状态下的转化效率。
  • 加权聚类系数:衡量节点邻居之间的连接强度,反映局部网络结构的紧密程度。

# 在 R 语言中实现

# 加载 igraph 包
library(igraph)
# 创建加权的边列表
edges <- data.frame(
  source = c("A", "A", "B", "B", "C", "D", "E"),
  target = c("B", "C", "C", "D", "E", "E", "F"),
  weight = c(2, 1, 3, 2, 4, 1, 5)
)
# 创建加权无向图
g <- graph_from_data_frame(edges, directed = FALSE)
E(g)$weight <- edges$weight
# 1. 计算加权度中心性
weighted_degree <- strength(g, vids = V(g), weights = E(g)$weight)
print("加权度中心性:")
print(weighted_degree)
# 2. 计算加权平均路径长度
shortest_paths_matrix <- distances(g, weights = E(g)$weight)
average_weighted_path_length <- mean(shortest_paths_matrix[shortest_paths_matrix != 0])
print("加权平均路径长度:")
print(average_weighted_path_length)
# 3. 计算加权聚类系数
weighted_clustering_coeff <- transitivity(g, type = "local", weights = E(g)$weight)
print("加权聚类系数:")
print(weighted_clustering_coeff)
average_weighted_clustering_coeff <- mean(weighted_clustering_coeff, na.rm = TRUE)
print("平均加权聚类系数:")
print(average_weighted_clustering_coeff)