【发布时间】:2021-06-01 16:30:17
【问题描述】:
是否有人熟悉在 R 中使用 igraph 实现主路径分析(Hummon 和 Doreian 1989)的方法?
这是来自原始 Hummon 和 Doreian 文章的示例。它跟踪 40 篇关于 DNA 的期刊文章的引用。箭头随着时间向前移动(旧文章的信息“流向”新文章)。
dna_edges <- data.frame(from=c(1,2,3,3,3,5,6,9,12,12,15,15,10,11,11,13,14,14,14,16,16,17,19,19,19,19,19,20,20,20,20,24,24,21,21,23,22,26,27,29,30,31,31,32,32,32,33,33,35,35,36,36,36),
to=c(8,18,4,5,21,12,9,12,15,29,29,22,17,13,20,20,16,20,31,17,20,34,20,24,25,21,25,31,22,30,22,28,37,22,32,27,27,27,32,32,40,32,40,36,38,33,32,35,38,39,38,39,40))
dna_g <- graph_from_data_frame(dna_edges, directed=T)
plot(dna_g,
layout=layout_with_sugiyama(dna_g,
layers = V(dna_g)$name)$layout)
Liu et al (2019) 解释说,在引文网络中,节点可以是以下三件事之一:
- 来源:被引用但没有人引用
- 汇:引用他人但从未被引用
- 中间体:引用和被引用
所以在这个例子中,我们有 10 篇文章是“来源”,另外 10 篇文章是“汇”:
dna_sources <- V(dna_g)$name[which(degree(dna_g, mode="in")==0)] # sources
[1] "8" "18" "4" "34" "25" "28" "37" "40" "38" "39"
dna_sinks <- V(dna_g)$name[which(degree(dna_g, mode="out")==0)] # sinks
[1] "1" "2" "3" "6" "10" "11" "14" "19" "23" "26"
主路径是将源连接到接收器的最常用路径。搜索路径计数 (SPC) 是其中一种方法。
"一个引用链接的 SPC 是链接被遍历的次数,如果 一个贯穿所有来源的所有可能的引文链 引文网络中的所有汇。查找特定的 SPC 链接,需要枚举所有可能的引用链 源于所有源头并终止于所有汇点”(Liu et al. 2019: 381)
因此看来,为了继续进行,需要 (i) 选择一个源-汇对,(ii) 找到连接这两个节点的所有路径,并在每条边被交叉时添加 +1 权重,(iii ) 对其他源-汇对重复。
关于如何执行 (i) 到 (iii) 的任何想法?
【问题讨论】:
-
请提供有关“主路径分析”的更多信息。那是什么?这个怎么运作?有解释的例子?
-
我根据文献添加了更多细节
-
你是什么意思“当它被交叉时每个边缘的重量”?您的意思是两条路径共享同一条边吗?
-
是的。例如,在图中的示例中,有几条从源 3 到汇 39 的路径(3-21-32-36-39 或 3-21-32-33-35-39 等)[the即不太清楚:原始的 H&D 文章更干净]。目的是如果每条边位于源-汇路径上,它就会得到一个点或其他东西。所以我们看到边 3-21-32 会得到更多的点(“更高的权重”),因为它们出现在更多的路径中;某种“强制路线”。