
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
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")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: 1111111183
The 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 1111111183
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).
Contact: aurelien.goutsmedt@ichec.be.↩︎
If you want to build a coupling network with entities
larger than a document (meaning entities that have published several
documents, and thus can cite a reference several times), we rather
recommend the use of the entity_network() function.↩︎