
Bibliographic coupling edges, weighted by the relative coupling strength (Jaccard)
Source:R/coupling_jaccard.R
coupling_jaccard.RdThe relative bibliographic coupling strength of
(Sen and Gan 1983)
: the number of references shared by
two documents divided by the number of references in the union of their
bibliographies. It is a Jaccard index, as noted by
(Shen et al. 2019)
(who credit Egghe and Rousseau,
1990). It is the other classic normalisation of the number of shared
references, next to the cosine of coupling_angle().
Arguments
- dt
A data frame or a
data.tableof direct citations, one row per link between a citing document and a cited reference. It is not modified.- source
Character scalar. The column of the citing documents: they are the nodes of the coupling network.
- ref
Character scalar. The column of the cited references.
- weight_threshold
Number. The minimum number of shared references for two documents to be linked (1 by default: any shared reference creates a tie). A threshold of 2 or 3 is common in large corpora, where sharing a single reference is weak evidence of proximity and produces very dense networks. It applies to the number of shared references, not to the normalised weight.
- output_in_character
Logical. If
TRUE(default), the identifiers are also returned as character columnsfromandto, to build a tidygraph graph more easily.
Value
A data.table with one row per pair of documents sharing at
least weight_threshold references: from and to (character if
output_in_character = TRUE), the weight (between 0 and 1) and the
original identifiers in Source and Target. Each pair appears once,
with Source < Target.
Details
With \(R(A)\) the references of \(A\) and \(L(A) = |R(A)|\),
$$w_{AB} = \frac{|R(A) \cap R(B)|}{L(A) + L(B) - |R(A) \cap R(B)|} = \frac{|R(A) \cap R(B)|}{|R(A) \cup R(B)|}$$
Computing choices: see coupling_angle(). \(L(A)\) counts all the
references of \(A\), including those cited by no other document.
Why use it in research
Like the coupling angle, it corrects for the length of the bibliographies,
but differently: the cosine divides by the geometric mean of the lengths,
the Jaccard index by the size of the union. The Jaccard index is never
above the cosine, and penalises more strongly the pairs of documents with
bibliographies of very different lengths. Both are bounded between 0 and 1 and give very similar
rankings in practice ((Shen et al. 2019)
report a
Pearson correlation of 0.956 between the two on their corpus): compare
them on yours with correlate_weights().
Intuition
Take all the references cited by at least one of the two documents (their union): the weight is the share of them that both documents cite. It is the answer to "of everything these two documents read, how much did they read in common?". If one document cites 5 references, all cited by the other one, which cites 50, the cosine is \(5/\sqrt{250} \approx 0.32\) and the Jaccard index \(5/50 = 0.1\): the Jaccard index sees that the second document reads much more than the first.
References
Sen SK, Gan SK (1983).
“A Mathematical Extension of the Idea of Bibliographic Coupling and Its Applications.”
Annals of library science and documentation, 30(2).
Shen S, Zhu D, Rousseau R, Su X, Wang D (2019).
“A Refined Method for Computing Bibliographic Coupling Strengths.”
Journal of Informetrics, 13(2), 605–615.
https://linkinghub.elsevier.com/retrieve/pii/S1751157716300244.
See also
Other coupling measures:
biblio_coupling(),
coupling_angle(),
coupling_descriptive(),
coupling_similarity(),
coupling_strength(),
coupling_vladutz(),
descriptive_terms()
Examples
library(biblionetwork)
# d1 = {r1, r2, r3} and d2 = {r1, r2} share 2 references out of 3
toy <- data.frame(doc = c("d1", "d1", "d1", "d2", "d2"),
ref = c("r1", "r2", "r3", "r1", "r2"))
coupling_jaccard(toy, source = "doc", ref = "ref")
#> from to weight Source Target
#> <char> <char> <num> <char> <char>
#> 1: d1 d2 0.6666667 d1 d2