The Yale Institute for Global Health (YIGH) which was established on July 2019 aiming to to speed the translation of new scientific discoveries into better health for all. YIGH fosters interdisciplinary research collaboration among Yale faculty and across international partners.
At this project we are mapping the change in research collaboration between YIGH members since establishing YIGH and ten years before. 1-We will visualize co-authorship collaboration across years. 2-We will measure the cohesion of YIGH network over years by calculating the density of the network over years.
Density is the proportion of direct ties in a network relative to the total number possible. This measurement helps to get sense of the amount of the interaction between dyads at the network.
We have collected authors’ data from Scopus database and YIGH website https://medicine.yale.edu/yigh/about/
We have prepared dynamic and static edgelists and nodelists. Static edgelist and nodelist will be used for static attribute visualization.
#Dynamic data
ed <- read.csv("~/dynamicedges.csv", header = TRUE)
nd <- read.csv("~/dynamic_nodelist.csv", header=TRUE)
#Static data
library(readxl)
## Warning: package 'readxl' was built under R version 3.6.2
e <- read.csv("edges2.csv", header = TRUE)
n <- read_excel("net3.xlsx")
#Dynamic edgelist
head(ed)
## onset terminus tail.vertex.id head.vertex.id onset.censored terminus.censored
## 1 2009 2010 1 45 FALSE FALSE
## 2 2010 2011 1 27 FALSE FALSE
## 3 2012 2013 1 27 FALSE FALSE
## 4 2014 2015 1 27 FALSE FALSE
## 5 2015 2016 1 27 FALSE FALSE
## 6 2018 2019 1 27 FALSE FALSE
## duration edge.id weight
## 1 1 1 1
## 2 1 2 2
## 3 1 2 2
## 4 1 2 1
## 5 1 2 1
## 6 1 2 1
Dynamic edgelist consists of onset(co-authorship start time), terminus(co-authorship endtime), tail.vertex.id(author1), head.vertex.id(author2). The first 4 columns should have this order to display with networkDynamic package. Other columns are onset.censored, terminus.censored, duration (the difference between terminus and onset), edge.id to identify the same collaborating authors and weight of co-authorship.
#Dynamic node list
head(nd)
## onset terminus vertex.id
## 1 2008 2019 1
## 2 2008 2019 2
## 3 2008 2019 3
## 4 2008 2019 4
## 5 2008 2019 5
## 6 2008 2019 6
Dynamic nodelist consists of 3 essential columns, onset, terminus and vertix.id with keeping order. If you have any dynamic atrributes you can add by time order.
#static edgelist
head(e)
## source target weight
## 1 1 45 1
## 2 1 27 2
## 3 1 27 2
## 4 1 27 1
## 5 1 27 1
## 6 1 27 1
Our static edgelist consists of source, target and weight.
#static nodelist
head(n)
## # A tibble: 6 x 7
## id name Documentation status color2 Department color
## <dbl> <chr> <dbl> <chr> <chr> <chr> <chr>
## 1 1 Aksoy, S. 201 new forestgre~ Epidemiology antiquew~
## 2 2 Alfaro-Murillo~ 9 new forestgre~ Epidemiology antiquew~
## 3 3 Altice, F.L. 353 old gold Infectious di~ aquamari~
## 4 4 Annamalai, A. 11 old gold Psychiatry coral4
## 5 5 Arnold, L. 9 old gold Pediatrics darksalm~
## 6 6 Bell, M.L. 28 new forestgre~ Environment deeppink4
Our static nodelist consists of author’s name, total documentation number, status (old: before YIGH establishment, new: after YIGH establishment), color2 (status color), author’s department and color (department color).
library(sna)
## Warning: package 'sna' was built under R version 3.6.2
## Loading required package: statnet.common
## Warning: package 'statnet.common' was built under R version 3.6.2
##
## Attaching package: 'statnet.common'
## The following object is masked from 'package:base':
##
## order
## Loading required package: network
## Warning: package 'network' was built under R version 3.6.2
## network: Classes for Relational Data
## Version 1.16.0 created on 2019-11-30.
## copyright (c) 2005, Carter T. Butts, University of California-Irvine
## Mark S. Handcock, University of California -- Los Angeles
## David R. Hunter, Penn State University
## Martina Morris, University of Washington
## Skye Bender-deMoll, University of Washington
## For citation information, type citation("network").
## Type help("network-package") to get started.
## sna: Tools for Social Network Analysis
## Version 2.5 created on 2019-12-09.
## copyright (c) 2005, Carter T. Butts, University of California-Irvine
## For citation information, type citation("sna").
## Type help(package="sna") to get started.
library(statnet)
## Warning: package 'statnet' was built under R version 3.6.2
## Loading required package: tergm
## Warning: package 'tergm' was built under R version 3.6.2
## Loading required package: ergm
## Warning: package 'ergm' was built under R version 3.6.2
##
## ergm: version 3.10.4, created on 2019-06-10
## Copyright (c) 2019, Mark S. Handcock, University of California -- Los Angeles
## David R. Hunter, Penn State University
## Carter T. Butts, University of California -- Irvine
## Steven M. Goodreau, University of Washington
## Pavel N. Krivitsky, University of Wollongong
## Martina Morris, University of Washington
## with contributions from
## Li Wang
## Kirk Li, University of Washington
## Skye Bender-deMoll, University of Washington
## Chad Klumb
## Based on "statnet" project software (statnet.org).
## For license and citation information see statnet.org/attribution
## or type citation("ergm").
## NOTE: Versions before 3.6.1 had a bug in the implementation of the bd()
## constriant which distorted the sampled distribution somewhat. In
## addition, Sampson's Monks datasets had mislabeled vertices. See the
## NEWS and the documentation for more details.
## NOTE: Some common term arguments pertaining to vertex attribute and
## level selection have changed in 3.10.0. See terms help for more
## details. Use 'options(ergm.term=list(version="3.9.4"))' to use old
## behavior.
## Loading required package: networkDynamic
## Warning: package 'networkDynamic' was built under R version 3.6.2
##
## networkDynamic: version 0.10.1, created on 2020-01-16
## Copyright (c) 2020, Carter T. Butts, University of California -- Irvine
## Ayn Leslie-Cook, University of Washington
## Pavel N. Krivitsky, University of Wollongong
## Skye Bender-deMoll, University of Washington
## with contributions from
## Zack Almquist, University of California -- Irvine
## David R. Hunter, Penn State University
## Li Wang
## Kirk Li, University of Washington
## Steven M. Goodreau, University of Washington
## Jeffrey Horner
## Martina Morris, University of Washington
## Based on "statnet" project software (statnet.org).
## For license and citation information see statnet.org/attribution
## or type citation("networkDynamic").
##
## tergm: version 3.6.1, created on 2019-06-12
## Copyright (c) 2019, Pavel N. Krivitsky, University of Wollongong
## Mark S. Handcock, University of California -- Los Angeles
## with contributions from
## David R. Hunter, Penn State University
## Steven M. Goodreau, University of Washington
## Martina Morris, University of Washington
## Nicole Bohme Carnegie, New York University
## Carter T. Butts, University of California -- Irvine
## Ayn Leslie-Cook, University of Washington
## Skye Bender-deMoll
## Li Wang
## Kirk Li, University of Washington
## Based on "statnet" project software (statnet.org).
## For license and citation information see statnet.org/attribution
## or type citation("tergm").
## Loading required package: ergm.count
## Warning: package 'ergm.count' was built under R version 3.6.2
##
## ergm.count: version 3.4.0, created on 2019-05-15
## Copyright (c) 2019, Pavel N. Krivitsky, University of Wollongong
## with contributions from
## Mark S. Handcock, University of California -- Los Angeles
## David R. Hunter, Penn State University
## Based on "statnet" project software (statnet.org).
## For license and citation information see statnet.org/attribution
## or type citation("ergm.count").
## NOTE: The form of the term 'CMP' has been changed in version 3.2 of
## 'ergm.count'. See the news or help('CMP') for more information.
## Loading required package: tsna
## Warning: package 'tsna' was built under R version 3.6.2
##
## statnet: version 2019.6, created on 2019-06-13
## Copyright (c) 2019, Mark S. Handcock, University of California -- Los Angeles
## David R. Hunter, Penn State University
## Carter T. Butts, University of California -- Irvine
## Steven M. Goodreau, University of Washington
## Pavel N. Krivitsky, University of Wollongong
## Skye Bender-deMoll
## Martina Morris, University of Washington
## Based on "statnet" project software (statnet.org).
## For license and citation information see statnet.org/attribution
## or type citation("statnet").
## unable to reach CRAN
library(network)
library(ndtv)
## Warning: package 'ndtv' was built under R version 3.6.2
## Loading required package: animation
## Warning: package 'animation' was built under R version 3.6.2
##
## ndtv: version 0.13.0, created on 2019-05-21
## Copyright (c) 2019, Skye Bender-deMoll, University of Washington
## with contributions from
## Martina Morris, University of Washington
## Based on "statnet" project software (statnet.org).
## For license and citation information see statnet.org/attribution
## or type citation("ndtv").
1- we will create network object from static edgelist and nodelist:
net <- network(e, vertex.attr=n, matrix.type="edgelist",
loops=F, multiple=F, ignore.eval = F, directed = FALSE)
2- Then we will create dynamic network object from dynamic node list and edgelist with coercing static network object.
#converting columns to numeric
ed$onset <- as.numeric(ed$onset)
ed$terminus <- as.numeric(ed$terminus)
ed$tail.vertex.id <- as.numeric(ed$tail.vertex.id)
ed$head.vertex.id <- as.numeric(ed$head.vertex.id)
ed$weight <- as.numeric(ed$weight)
nd$onset <- as.numeric(nd$onset)
nd$terminus <- as.numeric(nd$terminus)
nd$vertex.id <- as.numeric(nd$vertex.id)
#Creating dynamic network object
net.dyn <- networkDynamic(base.net=net, edge.spells=ed, vertex.spells=nd)
## Edge activity in base.net was ignored
## Created net.obs.period to describe network
## Network observation period info:
## Number of observation spells: 1
## Maximal time range observed: 2008 until 2019
## Temporal mode: continuous
## Time unit: unknown
## Suggested time increment: NA
Let’s make a quick 3D animation from our dynamic network object.
render.d3movie(net.dyn, displaylabels = TRUE, label = net %v% "name", output.mode = "html", label.cex = 0.5)
## No slice.par found, using
## slice parameters:
## start:2008
## end:2019
## interval:1
## aggregate.dur:1
## rule:latest
## Calculating layout for network slice from time 2008 to 2009
## Calculating layout for network slice from time 2009 to 2010
## Calculating layout for network slice from time 2010 to 2011
## Calculating layout for network slice from time 2011 to 2012
## Calculating layout for network slice from time 2012 to 2013
## Calculating layout for network slice from time 2013 to 2014
## Calculating layout for network slice from time 2014 to 2015
## Calculating layout for network slice from time 2015 to 2016
## Calculating layout for network slice from time 2016 to 2017
## Calculating layout for network slice from time 2017 to 2018
## Calculating layout for network slice from time 2018 to 2019
## Calculating layout for network slice from time 2019 to 2020
## caching 10 properties for slice 0
## caching 10 properties for slice 1
## caching 10 properties for slice 2
## caching 10 properties for slice 3
## caching 10 properties for slice 4
## caching 10 properties for slice 5
## caching 10 properties for slice 6
## caching 10 properties for slice 7
## caching 10 properties for slice 8
## caching 10 properties for slice 9
## caching 10 properties for slice 10
## caching 10 properties for slice 11
## Loading required namespace: htmlwidgets
## loading ndtv-d3 animation widget...
Now we will customize node size by total documentation number of authors and node color by status, green are new YIGH members and yello are old members present at the global program before YIGH.
compute.animation(net.dyn, animation.mode = "kamadakawai",
slice.par=list(start=2008, end=2019, interval=1,
aggregate.dur=1, rule='any'))
## Calculating layout for network slice from time 2008 to 2009
## Calculating layout for network slice from time 2009 to 2010
## Calculating layout for network slice from time 2010 to 2011
## Calculating layout for network slice from time 2011 to 2012
## Calculating layout for network slice from time 2012 to 2013
## Calculating layout for network slice from time 2013 to 2014
## Calculating layout for network slice from time 2014 to 2015
## Calculating layout for network slice from time 2015 to 2016
## Calculating layout for network slice from time 2016 to 2017
## Calculating layout for network slice from time 2017 to 2018
## Calculating layout for network slice from time 2018 to 2019
## Calculating layout for network slice from time 2019 to 2020
render.d3movie(net.dyn, usearrows = F,
displaylabels = TRUE, label = net %v% "name", label.cex = 0.5,
bg="#ffffff", vertex.border="#333333",
vertex.cex= net %v% "Documentation"/ 150,
vertex.col= (net %v% "color2"),
edge.lwd = (net.dyn %e% "weight")/3,
edge.col = '#55555599',
launchBrowser=T, filename="YIGH.html",
render.par=list(tween.frames = 30, show.time = F),
plot.par=list(mar=c(0,0,0,0)), output.mode='html' )
## caching 30 properties for slice 0
## caching 30 properties for slice 1
## caching 30 properties for slice 2
## caching 30 properties for slice 3
## caching 30 properties for slice 4
## caching 30 properties for slice 5
## caching 30 properties for slice 6
## caching 30 properties for slice 7
## caching 30 properties for slice 8
## caching 30 properties for slice 9
## caching 30 properties for slice 10
## caching 30 properties for slice 11
## loading ndtv-d3 animation widget...
Let’s make a film strip for the network
filmstrip(net.dyn, displaylabels=F, mfrow=c(1, 6),
slice.par=list(start= 2008, end= 2018, interval=1,
aggregate.dur=1, rule='all'))
## frames argument has been overridden by slice.par
Now let’s calculate the density over years.
classNets <- get.networks(net.dyn,start=2008,end=2019,time.increment=1,rule='latest')
classDensity <- sapply(classNets, network.density)
plot(classDensity,type='l',xlab='network slice #',ylab='density')
As we can see from the graph that the highest density or cohesion between YIGH members at slice 8 or 2015-2016. Also it is starting to increase at slice 11 or 2018-2019(after YIGH establishment)
Let’s plot the network for slice 8:
plot(network.extract(net.dyn, onset=2015, terminus=2016, rule="all"), vertex.cex=(net %v% "Documentation")/150, vertex.col= (net %v% "color2"))
We can see new members who were added at 2019 were already interacting with old members who were at the previous program.
No we will plot slice 11:
plot(network.extract(net.dyn, onset=2018, terminus=2019, rule="all"), vertex.cex=(net %v% "Documentation")/150, vertex.col= (net %v% "color2"))
The interaction between new and old members are the same.
No we will compare with slice 10 (just before YIGH establishment)
plot(network.extract(net.dyn, onset=2017, terminus=2018, rule="all"), vertex.cex=(net %v% "Documentation")/150, vertex.col= (net %v% "color2"))
The interaction between old and new members was lower.
YIGH was succesful to foster interdisciplinary research collaboration in comparison to the global program.