What does biblionetwork do?
biblionetwork turns a table of links between two kinds of items (documents and the references they cite, authors and the documents they sign) into the edges of a network, whose nodes are one of the two kinds of items. You choose the type of network and the way the ties are weighted, depending on what you want to analyse:
| Network | Nodes are linked when they… | Main function |
|---|---|---|
| bibliographic coupling | cite the same references (Kessler 1963) | biblio_coupling() |
| co-citation | are cited together (Small 1973) | biblio_cocitation() |
| coupling or co-citation of entities (authors, journals, institutions) | the documents of the entities cite the same references (or are cited together) (Zhao and Strotmann 2008) | entity_network() |
| co-authorship | co-sign documents | coauth_network() |
The weight of a tie can be computed with several measures: the coupling angle (Sen and Gan 1983), the coupling strength and the idf-weighted similarity (Shen et al. 2019), the Jaccard index, the Vladutz-Cook formula, or full and fractional counting for co-authorship (Perianes-Rodriguez, Waltman, and Van Eck 2016; Leydesdorff and Park 2017-02). compute_couplings() computes several of them at once, and a few functions compare their distributions and rankings (merge_weights() ranks the pairs and measures the rank gap between two measures) on your own corpus.
The package returns plain tables (data.table), ready to be turned into a graph with tidygraph or igraph. It is written for very large corpora: the pairs of nodes are computed with sparse matrices, which keeps time and memory low. Nothing is specific to bibliography, though: any two-mode table (accounts and the accounts they follow, posts and their words…) can be projected the same way (see the vignette). To go further, networkflow builds on biblionetwork to cluster, follow and draw networks over time, and the backbone package (Neal 2026) can filter the ties that are not statistically significant.
The original function, which uses data.table (Dowle and Srinivasan 2020) and allows the user to find edges and calculate weights for large networks, was developed by François Claveau. The different functions in this package have been developed, from Claveau’s original idea, by Alexandre Truc and Aurélien Goutsmedt. The package is maintained by Aurélien Goutsmedt.1
Installation
You can install the release version from CRAN:
install.packages("biblionetwork")or the development version from GitHub:
# install.packages("devtools")
devtools::install_github("agoutsmedt/biblionetwork")You can cite this package as:
citation("biblionetwork")Example
All you need is a table with entities (documents, authors, universities, etc.) citing references. biblio_coupling() calculates the number of references that different articles share together, and a weight for each pair of articles in a bibliographic coupling network. By default, the weight is the coupling angle (Sen and Gan 1983); the method argument selects another measure ("strength", "similarity", "jaccard", "vladutz").2 See the vignette “How to use biblionetwork” for a more in-depth presentation of the package.
This example uses the data included in the package.
library(biblionetwork)
biblio_coupling(Ref_stagflation,
source = "Citing_ItemID_Ref",
ref = "ItemID_Ref",
normalized_weight_only = FALSE,
weight_threshold = 1)#> from to weight nb_shared_references Source
#> <char> <char> <num> <int> <int>
#> 1: 1021902 1184127 0.04622502 1 1021902
#> 2: 214927 2207578 0.14605935 4 214927
#> 3: 1184127 2901822 0.04233338 1 1184127
#> 4: 1184130 2901822 0.05184758 1 1184130
#> 5: 1717556 2901822 0.02804964 1 1717556
#> ---
#> 2712: 1111111122 1111111183 0.05572782 1 1111111122
#> 2713: 1111111134 1111111183 0.04256283 1 1111111134
#> 2714: 1111111146 1111111183 0.05212860 1 1111111146
#> 2715: 1111111161 1111111183 0.04050542 2 1111111161
#> 2716: 1111111182 1111111183 0.27060404 8 1111111182
#> Target
#> <int>
#> 1: 1184127
#> 2: 2207578
#> 3: 2901822
#> 4: 2901822
#> 5: 2901822
#> ---
#> 2712: 1111111183
#> 2713: 1111111183
#> 2714: 1111111183
#> 2715: 1111111183
#> 2716: 1111111183The same pairs of articles, weighted so that sharing a rare reference counts more than sharing a classic (Shen et al. 2019):
biblio_coupling(Ref_stagflation,
source = "Citing_ItemID_Ref",
ref = "ItemID_Ref",
method = "strength",
weight_threshold = 3)#> from to weight Source Target
#> <char> <char> <num> <int> <int>
#> 1: 214927 2207578 0.020008623 214927 2207578
#> 2: 5160307 6714008 0.010611749 5160307 6714008
#> 3: 1717556 7815498 0.035262345 1717556 7815498
#> 4: 214927 8456979 0.011939901 214927 8456979
#> 5: 2207578 8456979 0.012807897 2207578 8456979
#> ---
#> 958: 39858452 1111111180 0.005118578 39858452 1111111180
#> 959: 151268764 1111111180 0.007465000 151268764 1111111180
#> 960: 1021902 1111111183 0.006925280 1021902 1111111183
#> 961: 106566092 1111111183 0.002896722 106566092 1111111183
#> 962: 1111111182 1111111183 0.038292193 1111111182 1111111183Included data
The biblionetwork package contains bibliometric data built by Goutsmedt (2021). These data gather the academic articles and books, published between 1975 and 2013, that endeavoured to explain the United States stagflation of the 1970s. They also gather all the references cited by these articles and books on stagflation. The Nodes_stagflation.rda file contains information about the academic articles and books on stagflation (the stagflation documents), as well as about the references cited at least by two of these stagflation documents. The Ref_stagflation.rda is a data frame of direct citations, with the identifiers of citing documents, and the identifiers of cited documents. The Authors_stagflation.rda is a data frame with the list of documents explaining the US stagflation, and all the authors of these documents (Nodes_stagflation.rda just takes the first author for each document).
