Estimate the distance among papers cited by projects using co-citations. The questions are: - how wide/narrow are the research projects? - how similar/interconnected are the projects? can we make group of projects based on their citations? - which are key work that are cited by many projects?
Nodes are all papers cited by the projects, and cited papers that are cited by at least two papers.
The Co-Citation Network maps the intellectual structure of a research field by analyzing patterns in how documents cite the same references. Two references are co-cited when they are both cited by the same document. The more frequently two references are co-cited, the stronger their intellectual relationship. This technique, introduced by Small (1973), is one of the foundational methods of bibliometric analysis.
Co-citation analysis rests on two complementary approaches:
- Co-citation (Small, 1973): Measures how often two references are cited together by subsequent publications. Highly co-cited references are perceived as intellectually related by the citing community. This method identifies the knowledge base of a field. - Bibliographic coupling (Kessler, 1963): Measures the overlap in the reference lists of two documents. Documents that share many cited references are likely working on similar topics. This method identifies current research fronts.
Both approaches build networks where: Nodes represent cited references (co-citation) or citing documents (bibliographic coupling) Edges represent the strength of co-citation or bibliographic coupling between two nodes Clusters represent distinct schools of thought, theoretical frameworks, or research traditions
General overview
Code
devtools::load_all()library(igraph) # for general network analysislibrary(bibliometrix) # to build citation networkslibrary(visNetwork)library(plotly)out_data <- here::here("data", "derived-data")# load reference listref <-read.csv(file.path(out_data, "mte_references_completed.csv"))ref$Project <-firstup(ref$Project)# remove references with no DOIref <- ref[!is.na(ref$DOI), ]ref$Relation <-factor( ref$Relation,levels =c("Proposal", "Top5", "Output"),ordered =TRUE)ref <- ref[order(ref$Project, ref$Relation, ref$DOI, decreasing =TRUE), ]# remove duplicates # sum(duplicated(ref))ref <- ref[!duplicated(ref[, c("Project", "DOI")]), ]meta <- readxl::read_xlsx( here::here("data", "raw-data", "mte", "Projets_FRB-MTECT-OFB.xlsx"))# all(meta$Acronyme %in% ref$Project)# either based on previous script# M <- readRDS(file.path(out_data, "mte_bibliometrix.rds"))# dim(M) # 1035, 57# or from shiny completed referencesload(file.path(out_data, "mte_references_oa_shinycomplete.RData"))# M$CR has short names that can't be linked back to id_oa# how to get the short name# dim(M) # 1047, 57ref$Short <- M$SR[match(ref$DOI, M$DI)]ref$FAut <- M$AU_CORR[match(ref$DOI, M$DI)]
Co-citation network
Code
# get the co-citation network of referencesNetMatrix <- bibliometrix::biblioNetwork( M,analysis ="coupling",network ="references",n =NULL,short =FALSE,sep =";")dim(NetMatrix) # 1035
V(net2)$group <-membership(mod2)V(net2)$color <- col2# check out other layoutvisNetwork::visIgraph( net2,layout ="layout_with_kk",idToLabel =FALSE) |>visOptions(highlightNearest =TRUE,selectedBy =list(variable ="group", multiple = T) )
The network has 990 nodes (one node = one article) and 6.5778\times 10^{4} edges (one edge = shared citation between two articles). The connectance is 0.134 and the modularity 0.28