This function creates the edges of a network of entities from a direct citations data frame (i.e. documents citing references). Entities could be authors, affiliations, journals, etc. Consequently, coupling links are calculated using the coupling angle measure (like biblio_coupling()) or the coupling strength measure (like coupling_strength(). But it also takes into account the fact that an entity can cite several times a reference, and considers that citing 10 times a ref is more significant that citing it only once (see details).

  weight_threshold = 1,
  output_in_character = FALSE,
  method = c("coupling_strength", "coupling_angle")



The table with citing and cited documents.


The column name of the source identifiers, that is the documents that are citing.


The column name of the cited references identifiers.


The column name of the entity (authors, journals, institutions) that are citing.


Corresponds to the value of the non-normalized weights of edges. The function just keeps the edges that have a non-normalized weight superior to the weight_threshold. In other words, if you set the parameter to 2, the function keeps only the edges between nodes that share at least two references in common in their bibliography. In a large bibliographic coupling network, you can consider for instance that sharing only one reference is not sufficient/significant for two entities (above all when large entities like journals and institutions) to be linked together. This parameter could also be modified to avoid creating intractable networks with too many edges.


If TRUE, the function ends by transforming the from and to columns in character, to make the creation of a tidygraph network easier.


Choose the method you want to use for calculating the edges weights: either "coupling_strength" like in the coupling_strength() function, or "coupling_angle" like in the biblio_coupling() function.


A data.table with the entity identifiers in from and to columns, with the coupling strength or coupling angle measures in another column, as well as the method used. It also keeps a copy of from and to in the Source and Target columns. This is useful is you are using the tidygraph package then, where from and to values are modified when creating a graph.


Coupling links are calculated depending of the number of references two authors (or any entity) share, taking into account the minimum number of times two authors are citing each references. For instance, if two entities share a reference in common, the first one citing it twice (in other words, citing it in two different articles), the second one three times, the function takes two as the minimum value. In addition to the features of the coupling strength measure (see coupling_strength()) or the coupling angle measure (see biblio_coupling()), it means that, if two entities share two reference in common, if the first reference is cited at least four times by the two entities, whereas the second reference is cited at least only once, the first reference contributes more to the edge weight than the second reference. This use of minimum shared reference for entities coupling comes from Zhao and Strotmann (2008) . It looks like this for the coupling strength:

$$\frac{1}{L(A)}.\frac{1}{L(A)}\sum_{j} Min(C_{Aj},C_{Bj}).(log({\frac{N}{freq(R_{j})}}))$$

with \(C_{Aj}\) and \(C_{Bj}\) the number of time documents A and B cite the reference j.


Zhao D, Strotmann A (2008). “Author Bibliographic Coupling: Another Approach to Citation-Based Author Knowledge Network Analysis.” Proceedings of the American Society for Information Science and Technology, 45(1), 1--10.


library(biblionetwork) Ref_stagflation$Citing_ItemID_Ref <- as.character(Ref_stagflation$Citing_ItemID_Ref) # merging the references data with the citing author information in Nodes_stagflation entity_citations <- merge(Ref_stagflation, Nodes_stagflation, by.x = "Citing_ItemID_Ref", by.y = "ItemID_Ref") coupling_entity(entity_citations, source = "Citing_ItemID_Ref", ref = "ItemID_Ref", entity = "Author.y", method = "coupling_angle")
#> from to weight Source Target Weighting_method #> 1: ALBANESI-S BALL-L 0.02429648 ALBANESI-S BALL-L coupling_angle #> 2: ALBANESI-S ROTEMBERG-J 0.03045725 ALBANESI-S ROTEMBERG-J coupling_angle #> 3: ALBANESI-S BARSKY-R 0.02100729 ALBANESI-S BARSKY-R coupling_angle #> 4: ALBANESI-S BEYER-A 0.03458572 ALBANESI-S BEYER-A coupling_angle #> 5: ALBANESI-S CHAPPELL-H 0.04264014 ALBANESI-S CHAPPELL-H coupling_angle #> --- #> 1545: VELDE-F YOUNG-W 0.01601282 VELDE-F YOUNG-W coupling_angle #> 1546: VELDE-F WEISE-C 0.02282177 VELDE-F WEISE-C coupling_angle #> 1547: VELDE-F WACHTER-M 0.01883109 VELDE-F WACHTER-M coupling_angle #> 1548: VELDE-F WEINTRAUB-S 0.12909944 VELDE-F WEINTRAUB-S coupling_angle #> 1549: WACHTER-M WEINTRAUB-S 0.14586499 WACHTER-M WEINTRAUB-S coupling_angle