Computes the Search Path Count (SPC), the Search Path Link Count (SPLC), or the Search Path Node Pair (SPNP) of each arc of a citation network (Hummon and Doreian, 1989; Batagelj, 2003), and the weighted in-degree and out-degree of each node (Kuan, 2020).
Usage
traversal_weights(
A,
method = c("spc", "splc", "spnp"),
years = NULL,
cutoff = NULL,
normalized = FALSE
)Arguments
- A
A square, named, directed adjacency matrix in which
A[i,j] > 0means that knowledge flows from paperito paperj(paperjcites paperi). Only whether each arc is present is used. Seedag.- method
One of
"spc"(default),"splc", or"spnp".- years
Optional named numeric vector of publication years aligned with row/column names of
A. Required whencutoffis supplied.- cutoff
Optional integer year. When provided together with
years, outgoing arcs from papers published aftercutoffare excluded from path counting, as a correction for right censoring: the most recent papers have not had time to be cited. Such papers become sinks and their outgoing arcs get a weight of zero.- normalized
Whether to divide the weights by the total number of search paths of the method, so that the weight of an arc is the proportion of the search paths that go through it. The total is the number of paths from the sources to the sinks (SPC), from any node to the sinks (SPLC), or between any two nodes (SPNP), counting only paths with at least one arc.
Value
A named list:
edge_weightsSquare matrix of the same dimensions as
Acontaining the chosen traversal weight for each arc.weighted_indegreeNamed numeric vector with the sum of the weights of the incoming arcs of each node (WiD).
weighted_outdegreeNamed numeric vector with the sum of the weights of the outgoing arcs of each node (WoD).
log_forward_sourceLog of the number of paths from the sources to each node.
log_forward_allLog of the number of paths from any node to each node, counting the node itself.
log_backward_sinkLog of the number of paths from each node to the sinks.
log_backward_allLog of the number of paths from each node to any node, counting the node itself.
sourcesCharacter vector of source node names.
sinksCharacter vector of sink node names.
total_log_pathsLog of the total number of search paths of the method (see
normalized).methodThe method string used.
Details
The weight of an arc is the number of search paths that go through it. The three weights differ in where the search paths start and end (Liu, Lu and Ho, 2019):
- SPC
Paths from any source to any sink. The weight of the arc \(u \to v\) is the number of paths from the sources to \(u\) times the number of paths from \(v\) to the sinks.
- SPLC
Paths from any node to any sink, so that the intermediate papers are also origins of knowledge. The first factor becomes the number of paths from any node to \(u\), counting \(u\) itself.
- SPNP
Paths from any node to any node, so that the intermediate papers are also origins and destinations of knowledge. The second factor becomes the number of paths from \(v\) to any node, counting \(v\) itself.
The three weights satisfy SPNP \(\ge\) SPLC \(\ge\) SPC. Liu, Lu and Ho (2019) recommend SPLC to trace the diffusion of knowledge, and Kuan (2020) argues for SPLC or SPNP.
The weighted in-degree (WiD) and out-degree (WoD) of a node are the sums of
the weights of its incoming and outgoing arcs. Kuan (2020) recommends the WoD
of SPLC or SPNP as the weight of a paper: it counts the influence of all the
papers that precede it, and of the paper itself, on the papers that follow
it, and it is zero for the sinks, whose importance is yet to be determined.
The average of the two, which Kuan calls WxD, is
(weighted_indegree + weighted_outdegree) / 2.
The numbers of paths grow exponentially with the length of the chains of citations, so they are computed in logs to avoid overflow.
References
Batagelj, V. (2003). Efficient algorithms for citation network analysis. arXiv:cs/0309023.
Hummon, N.P. and Doreian, P. (1989). Connectivity in a citation network: The development of DNA theory. Social Networks. 11(1): 39-63. doi:10.1016/0378-8733(89)90017-8 .
Kuan, C. H. (2020). Regarding weight assignment algorithms of main path analysis and the conversion of arc weights to node weights. Scientometrics, 124(1), 775-782. doi:10.1007/s11192-020-03468-8 .
Liu, J.S. and Lu, L.Y.Y. (2012). An integrated approach for main path analysis: Development of the Hirsch index as an example. Journal of the American Society for Information Science and Technology. 63(3): 528-542. doi:10.1002/asi.21692 .
Liu, J.S., Lu, L.Y.Y. and Ho, M.H.C. (2019). A few notes on main path analysis. Scientometrics. 119(1): 379-391. doi:10.1007/s11192-019-03034-x .
Verspagen, B. (2007). Mapping technological trajectories as patent citation networks: A study on the history of fuel cell research. Advances in Complex Systems. 10(1): 93-115. doi:10.1142/S0219525907000945 .
Examples
# Network of Fig. 2 in Kuan (2020)
A <- matrix(c(
0,0,0,1,0,0,0,0,0,0,0,0,0,
0,0,0,1,0,0,0,0,0,0,0,0,0,
0,0,0,1,0,0,0,0,0,0,0,0,0,
0,0,0,0,1,1,0,0,0,0,0,0,0,
0,0,0,0,0,0,1,0,0,0,0,0,0,
0,0,0,0,0,0,0,1,0,0,0,0,0,
0,0,0,0,0,0,0,1,1,1,1,0,0,
0,0,0,0,0,0,0,0,0,0,0,1,1,
0,0,0,0,0,0,0,0,0,0,0,0,0,
0,0,0,0,0,0,0,0,0,0,0,0,0,
0,0,0,0,0,0,0,0,0,0,0,0,0,
0,0,0,0,0,0,0,0,0,0,0,0,0,
0,0,0,0,0,0,0,0,0,0,0,0,0
), nrow = 13, byrow = TRUE)
rownames(A) <- colnames(A) <- 1:13
spc <- traversal_weights(A, method = "spc")
splc <- traversal_weights(A, method = "splc")
spnp <- traversal_weights(A, method = "spnp")
# Arc 8 -> 12 has SPC 6 and SPLC 12; arc 1 -> 4 has SPNP 13 (Kuan, 2020)
spc$edge_weights["8", "12"]
#> [1] 6
splc$edge_weights["8", "12"]
#> [1] 12
spnp$edge_weights["1", "4"]
#> [1] 13
# Table 4 in Kuan (2020)
cbind(
SPLC_WoD = splc$weighted_outdegree,
SPNP_WoD = spnp$weighted_outdegree,
SPNP_WxD = (spnp$weighted_indegree + spnp$weighted_outdegree) / 2
)
#> SPLC_WoD SPNP_WoD SPNP_WxD
#> 1 7 13 6.5
#> 2 7 13 6.5
#> 3 7 13 6.5
#> 4 28 48 43.5
#> 5 25 35 33.5
#> 6 10 15 15.5
#> 7 30 36 35.5
#> 8 24 24 28.5
#> 9 0 0 3.0
#> 10 0 0 3.0
#> 11 0 0 3.0
#> 12 0 0 6.0
#> 13 0 0 6.0
