Réseaux bipartites
Initiation à l’analyse de réseaux, 1 au 6 juillet 2019, Nice
Introduction
Les articles sur les réseaux bipartites insistent sur la richesse, pour la compréhension du social, de ce type d’objets mathématiques et regrettent le manque d’algorithmes et métriques permettant de les analyser.
Voici trois phrases extraites de l’introduction de trois articles différents parus au cours des 10 dernières années :
« Many large real-world networks actually have a two-mode nature »
« Some real-world datasets have natural bipartite structure »
« As a new frontier of complex network, multi-mode network has been shown to better represent reality according to its heterogeneous attributes »
Deux éléments posent problème dans ces affirmations :
- la volonté d’analyser des réseaux « multi-mode », de tenir compte des effets de multi-appartenance et de multiplexité n’est pas une volonté nouvelle en analyse de réseaux sociaux.
- le réseau qu’il soit « one-mode », « two-mode », « three-mode » etc. n’est pas quelque chose que l’on trouve tel quel dans la réalité. Les « faits sociaux » n’ont pas « par nature » telle ou telle « structure mathématique » qu’il faudrait que nous expliquions.
À l’appui de cela, considérons un extrait de l’article de Narciso Pizarro «Appartenances, places et réseaux de places : La reproduction des processus sociaux et la génération d’un espace homogène pour la définition des structures sociales», paru en 2000 :
« Nous voulons souligner une caractéristique, à nos yeux, essentielle, des rapports sociaux en tant que faits à expliquer : c’est qu’ils ne sont en aucun cas des faits bruts, des données bêtement livrées en pâture aux chercheurs par une quelconque nature du social. Et donc, que toute construction ultérieure, à partir de ces données, est une construction sur une construction. »
Afin de rediscuter ces affirmations et mieux comprendre les enjeux associés à l’analyse des réseaux bipartites, faisons un petit détour historique dans le champ de l’analyse des réseaux sociaux. Ce détour permettra d’expliquer pourquoi l’analyse de réseaux bipartites est longtemps restée associée, en analyse des réseaux sociaux, à l’analyse des « réseaux d’appartenance », en anglais « membership networks » ou « affiliation networks ».
Ensuite, nous verrons quelques indicateurs et méthodes développées pour analyser des graphes bipartites avec le package R igraph. Nous verrons comment projeter des graphes bipartites en graphe unimode avec le package R tnet et les choix méthodologiques associés à cette étape de projection. Nous finirons en explorant les possibilités du package R bipartite en matière de visualisation, d’indicateurs et de partitionnement. Tout au long de cette intervention, un exemple sera traité, celui d’un réseau de liens professionnels (avoir été collègues dans une même institution) entre spécialistes de l’analyse de réseaux sociaux. Il est tiré d’un travail de Linton Freeman (1980) réalisé à partir d’une enquête assez célèbre sur l’amitié entre spécialistes de l’analyse de réseaux sociaux à la fin des années 1970.
Définition et brève histoire du graphe bipartite
Qu’appelle-t-on graphe bipartite ? Les graphes bipartites permettent de formaliser les relations existantes entre deux populations distinctes (deux ensembles distincts de sommets). On trouve parfois pour les désigner les termes de réseaux two-mode, hypernetworks, et dual networks.
Selon la nature des ensembles de sommets considérés, les sociologues anglophones distinguent les affiliations network (ex. appartenance d’individus à des associations ou des organisations) et les actors-events network (ex. participation d’individus à des événements).
L’exemple classique dans la littérature sociologique porte sur la présence de femmes à des évènements sociaux (Davis et al., 1941). Ronald Breiger s’appuie sur les données de cette étude dans un article paru en 1974 pour proposer une approche qu’il nomme membership network analysis. À partir de là, l’étude des réseaux bipartis reste associée, en sociologie, à la distinction conceptuelle entre relation d’appartenance et relation sociale.
Il s’agit d’interroger l’influence qu’exercent les appartenances et les évènements sur l’activation et la stabilité des relations sociales. Tout un ensemble de travaux se développe autour de ces questions. Ils traitent notamment de la co-présence des dirigeants à des conseils d’administration. L’objectif est d’en déduire la structure des relations sociales entre dirigeants. On parle pour qualifier cette catégorie de réseaux de corporate interlocks.
Intéressé par ces questions, le sociologue Narciso Pizarro insiste sur la nécessité d’analyser non seulement les relations entre individus obtenues à partir du réseau bipartite mais aussi le réseau des relations entre “places” occupées par ces individus, places que l’on peut déduire de leurs positions dans le réseau bipartite. Narciso Pizarro ne considère pas qu’il y ait une différence de nature entre relation d’appartenance et relation inter-individuelle. Pour lui, la relation inter-individuelle est déterminée par la position occupée par les individus dans un réseau de “places”.
Récemment, avec le développement de l’analyse de réseaux appliquée aux grandes bases de données disponibles en ligne, de nouvelles méthodes d’analyse et de nouveaux types de réseaux bipartites sont analysés. Par exemple, à partir du site internet imdb, il est aisé de générer et d’analyser le graphe de co-présence des acteurs dans des films. Les graphes de co-occurences de mots dans des livres et de participation à des forums en ligne font également partie des exemples donnés pour l’analyse de grands graphes bipartites par Mathieu Latapy et al. (2008).
Traditionnellement, les écologues sont également intéressés par l’étude des graphes bipartites. Ils s’intéressent aux relations entre plantes et polinisateurs ainsi qu’aux relations de prédation entre espèces différentes. Des packages R ont été développé spécialement pour analyser ce type de réseau, le package bipartite et le package bmotif. Le premier s’appuie en partie sur les options développées par Tore Opsahl dans le package tnet, mais il propose aussi une série de mesures adaptées aux recherches en écologie. Un moyen de visualisation est aussi proposé que nous testerons dans la partie pratique de la séance. Le second permet de détecter et d’analyser les motifs présents dans le graphe (sous-graphes).
En bibliométrie, l’analyse de réseaux a toujours occupé une place importante. Les corpus documentaires peuvent être analysés sous différents angles : liens entre mots, auteurs, affiliations, revues, disciplines etc. Souvent, l’information bibliographique est structurée de telle sorte que l’on part de la relation entre les articles d’un côté et de l’autre, les mots ou auteurs ou revues qui se rattachent à ces articles.
Caractéristiques du graphe bipartite
Mathématiquement, un graphe bipartite se définit comme un triplet , avec et des ensembles disjoints de sommets, et , l'ensemble des liens entre et .
Si le graphe bipartite décrit les relations entre deux ensembles distincts, il ne prend pas en compte les relations à l’intérieur de ces deux ensembles. Par ailleurs, si les relations au sein d’un graphe bipartite sont généralement non orientées, elles peuvent par contre être valuées.
L’exemple du réseau analysé par Linton Freeman
L’originalité du graphe bipartite tiré de l’article de Linton Freeman est d’avoir été généré à partir d’un réseau one-mode selon une méthode quelque peu oubliée aujourd’hui qu’il est possible de retrouver dans l’article.
Applications sur le logiciel R
Charger les packages
library("igraph")
library("tnet")
Nous chargerons le package bipartite plus tard pour éviter un bug lié à l’incompatibilité entre le package sna, sur lequel s’appuie le package bipartite, et le package igraph.
Charger les données
#ouvrir le fichier contenant la matrice
read.csv(file="freeman_friendship.csv", header=T, sep=";")
mat<-
#remplacer les cases vides par des zéros
as.matrix(mat[,2:20])
mat<-
is.na(mat)] = 0
mat[
#transformer la matrice en objet igraph
graph_from_incidence_matrix(as.matrix(mat), directed = FALSE, multiple = FALSE,
g<-weighted = NULL, add.names = NULL)
g
## IGRAPH c86bb16 U--B 48 45 --
## + attr: type (v/l)
## + edges from c86bb16:
## [1] 2--41 2--42 2--43 3--40 3--42 3--44 3--45 4--32 4--33 5--46
## [11] 6--41 8--45 9--35 9--36 10--44 11--36 11--48 12--47 13--31 13--37
## [21] 13--38 13--48 14--34 15--30 15--37 16--30 17--43 18--46 19--37 19--38
## [31] 19--39 20--31 20--32 20--35 21--37 21--38 21--40 23--47 24--39 25--33
## [41] 25--34 26--38 28--41 28--42 29--45
Paramètres
Les paramètres du graphe créé s’affichent. Ce graphe est “U–B”, U pour “Undirected” et B pour“Bipartite” ce qui veut dire que ce graphe est non dirigé et bipartite.
48 correspond au nombre de sommets et 45 au nombre de liens.
Changer les noms des sommets en fonction de leur type
#l'attribut "type" permet de différencier les deux ensembles de sommets
#numéroter les membres du réseau
V(g)[V(g)$type == 0]$name<-1:29
#numéroter les évènements
V(g)[V(g)$type == 1]$name<-paste("E",1:19, sep="" )
vertex_attr(g, "label") <- V(g)$name
Représenter le réseau bipartite
#symboliser les évènements par des carrés et les individus par des cercles
V(g)[V(g)$type == 1]$shape <- "square"
V(g)[V(g)$type == 0]$shape <- "circle"
#choisir deux gammes de couleur pour bien distinguer les deux ensembles de sommets
c("steelblue", "orange")
col <-
#suppression des isolés
delete.vertices(g, V(g)[degree(g)==0])
g1 <-
plot(g1,
vertex.color = col[as.numeric(V(g1)$type)+1],
vertex.label.cex=0.6,
main= "Réseaux acteurs-évènements",
sub= "Les isolés ne sont pas représentés"
layout=layout.fruchterman.reingold(g1, niter=10000) #layout_as_bipartite
, )
Indicateurs
#mesurer le degré de l'ensemble des sommets
V(g)$degre <- degree(g)
#degré des évènements : combien d'individus ont participé à chaque évènement ?
V(g)[V(g)$type == 1]$degre
## [1] 2 2 2 2 2 2 2 4 4 2 2 3 3 2 2 3 2 2 2
#degré des individus : à combien d'évènements ont participé chaque individu ?
V(g)[V(g)$type == 0]$degre
## [1] 0 3 4 2 1 1 0 1 2 1 2 1 4 1 2 1 1 1 3 3 3 0 1 1 2 1 0 2 1
#extraire la liste des composantes connexes
components(g)
comp <-
#repérer l'identifiant de la composante principale
which(comp$csize %in% max(comp$csize))
cp <-
#associer aux sommets du graphe, le vecteur d'appartenance à une composante
V(g)$membership<-comp$membership
#compter le nombre d'individus dans la composante principale
vcount(induced.subgraph(g,V(g)[V(g)$type == 0 & V(g)$membership == cp]))
## [1] 21
#compter le nombre d'évènements dans la composante principale
vcount(induced.subgraph(g,V(g)[V(g)$type == 1 & V(g)$membership == cp]))
## [1] 17
Le Package tnet
Dans le cadre de sa thèse, Tore Opsahl a mis au point de nombreux
indicateurs pour l’analyse des réseaux bipartites, valués, et
longitudinaux. Les fonctions permettant de calculer ces indicateurs sont
implémentées dans le package tnet qu’il a développé. Pour utiliser ce package, il faut transformer le graphe à analyser en une liste de liens.
#transformer le graphe en liste de liens pour appliquer les fonctions du package tnet
get.edgelist(g,names=F)
net<-
# calculer la matrice des plus courts chemins entre individus
distance_tm(as.tnet(net), projection.method="sum") mat_pcc<-
La matrice obtenue donne la valeur des plus courts chemins entre les
21 individus compris dans la composante principale du graphe bipartite.
De plus amples informations sont disponibles sur son site.
#trouver la longueur du plus long des plus courts chemins
max(mat_pcc[,1:21], na.rm=T)
## [1] 8.467742
Projection vers un réseau one-mode
Dans la majorité des recherches portant sur les réseaux bipartites, tant en sciences sociales qu’en écologie, l’option privilégiée consiste à transformer le réseau bipartite en réseau one-mode, plus aisé à analyser.
Dans le cas d’un réseau “individus-évènement” comme celui que l’on manipule ici, cela revient à s’intéresser uniquement aux relations entre individus, ou uniquement aux relations entre évènements. Ces relations sont déduites du réseau bipartite et il existe plusieurs moyens de les pondérer.
Dans sa thèse Tore Opsahl a réfléchi aux effets des choix de projection. Il en a retenu trois qu’il est possible d’appliquer à l’aide du package tnet. De plus amples informations sont disponibles sur son site.
Il distingue trois méthodes :
- La méthode “binary”
Elle permet de passer d’un réseau bipartite à un réseau one-mode non valué. Dans le cas d’un réseau “individus-évènements”, cela revient à relier les individus ayant participé aux mêmes évènements sans tenir compte du nombre d’évènements partagés. - La méthode “sum”
Elle permet de passer d’un réseau bipartite à un réseau one-mode valué. Dans le cas d’un réseau “individus-évènements” non pondéré, cela revient à relier les individus ayant participé aux mêmes évènements en tenant compte du nombre d’évènements partagés. Dans le réseau que nous prenons ici pour exemple, pratiquement tous les individus n’ont qu’un seul évènement en commun. Seuls les évènements E8 et E9 ont été partagés par les mêmes individus (13, 19 et 21). Dans ce cas, les liens unissant ces trois individus prendront pour valeur 2, soit le nombre d’évènements partagés.
Le réseau bipartite de départ peut-être valué, par exemple si l’on considère un réseau entre acheteurs et produits puisqu’il est possible que les acheteurs achètent plusieurs fois le même produit. Dans ce cas là, le réseau one-mode obtenu est un réseau à liens multiples. Si deux individus A et B ont acheté le même produit mais que A l’a acheté en 4 exemplaires et B en 6 exemplaires alors, dans le réseau unipartite obtenu, le lien dirigé allant de A vers B vaudra 4 et le lien dirigé allant de B vers A vaudra 6.
- La méthode “Newman”
Cette méthode permet de pondérer les relations en fonction du nombre de participants aux évènements. L’idée sousjacente est que la valeur du lien dyadique entre deux individus est d’autant plus forte qu’ils sont peu nombreux à avoir participé au même évènement. Si tous les individus du réseau ont participé au même évènement, l’importance des relations dyadiques que l’on peut déduire de la participation à cet évènement est plus faible.
Ce type de pondération a été proposé par M. Newman (2001) pour étudier des réseaux de collaboration entre chercheurs à partir d’un réseau bipatite de co-signature d’articles (auteurs-articles). L’idée est que l’importance du lien de collaboration entre deux auteurs varie en fonction du nombre d’auteurs ayant participé à l’écriture des articles qu’ils ont co-signés.
Ce type de pondération est volontiers utilisé par les écologues pour étudier des réseaux de type plantes-polinisateurs. Appliqué à ces réseaux, cela revient à dire que deux plantes ayant été visitées par un nombre très important d’espèces de polinisateurs partagent une moins forte relation que deux plantes ayant été visitées par un petit nombre d’espèces de polinisateurs (Padron et al., 2011).
La pondération proposée par M. Newman a été pensée afin que le degré pondéré de chaque sommet dans le réseau one-mode soit égal au nombre de sommets auquel il était relié dans le réseau two-mode.
Il existe une variante de cette pondération que j’utilise dans mon travail sur les réseaux de collaboration scientifique entre villes (Maisonobe et al., 2016). Dans cette variante, ce n’est pas le degré pondéré de chaque sommet qui permet de retrouver le nombre d’articles co-signés, mais c’est la somme de la valeur de l’ensemble des liens du réseau qui permet de retrouver le nombre total d’articles considérés pour obtenir le réseau. Cela permet d’éviter les doubles comptes lorsque l’on somme l’ensemble des relations et qu’on analyse le réseau dans sa globalité.
Plutôt que de fractionner les liens par le nombre de sommets impliqués dans l’évènement moins un (), cette méthode revient à fractionner les liens par le nombre exact de sommets impliqués dans l’évènement ().
#différentes méthodes de projection
#obtenir le réseau des individus non-valué
projecting_tm(net, method="binary")
onemode1<-
#obtenir le réseau des individus valué en fonction du nombre d'évènements partagés
projecting_tm(net, method="sum")
onemode2<-
#obtenir le réseau des individus valué en fonction du nombre d'évènements partagés
#et pondéré en fonction du nombre de participants à chaque évènement
#l'hypothèse sous-jacente étant que moins il y a de monde dans un évènement,
#plus il y a de chance que les participants se soient parlés
projecting_tm(net, method="Newman") onemode3<-
Indices de centralité
- La centralité de degré
Tore Opshal propose une fonction degré appelée degree_tm qui est adaptée aux réseaux 2-mode. Elle donne un vecteur spécifiant le degré de l’un des deux ensembles de sommets du graphe. Appliquée à notre exemple, cette mesure indique pour chaque individu le nombre d’évènements auxquels il s’est connecté et pour chaque évènement, le nombre de participants qu’ils ont accueillis. Nous l’avons déjà calculé avec le package igraph.
- Le clustering coefficient
Calculer le clustering coefficient n’a pas de sens dans un réseau 2-mode puisque par définition, il ne peut pas y avoir de triangles dans un réseau 2-mode. Toutefois, plusieurs variantes ont été imaginées dont celle de Robins et Alexander (2004). Ces derniers ont défini un coefficient de clustering qui fait le ratio entre le nombre de 4-cycles (le plus petit cycle possible dans un réseau 2-mode) et le nombre de chemin de longueur 3. Dans le cas d’un réseau “acteur-évènement”, cela revient à mesurer la tendance pour les couples d’individus ayant participé à un évènement en commun, d’avoir participé à un second évènement en commun. Cette mesure est appelé “reinforcement” dans le package tnet.
Considérant que cette proposition s’éloignait trop du principe initial du clustering coefficient, Tore Opshal a proposé une mesure de clustering coefficient pour les réseaux 2-mode qu’il jugeait plus en adéquation avec celle du clustering coefficient pour les réseaux one-mode
(nombre de triangles fermés/nombre de triangles possibles). Ce
coefficient fait le ratio entre le nombre de chemin de longueur 4 fermés
par des 6-cycles sur le nombre de chemins de longueur 4 possibles. Une
version de ce coefficient a été imaginée pour les réseaux 2-mode valués. Cette mesure permet de mesurer la connectivité du graphe par rapport à une connectivité possible.
#différents indices de centralité
#calcul du degré des individus
degree_tm(net, measure="degree")
degree_tm <-
#calcul du coefficient de reinforcement
reinforcement_tm(net)
## [1] 0.1568627
#calcul du clustering coefficient
clustering_tm(net)
## [1] 0
Le coefficient de reinforcement donne une mesure globale de connectivité du graphe bipartite. Le clustering coefficient adapté aux réseaux 2-mode est nul pour l’exemple présent car il n’y a pas de 6-cycle dans le réseau que nous analysons. - Centralités de proximité et intermédiarité
Les indicateurs de centralité de proximité (closeness) et d’intermédiarité (betweenness) proposés par Tore Opshal pour l’analyse des réseaux 2-mode sont en fait calculés à partir de projections du réseau 2-mode en réseau one-mode. Puisque cela nous ramène à un problème d’analyse de réseau one-mode, nous ne les traitons pas ici.
- Astuce
On aura remarqué que les indices de centralité locaux s’appliquent
par défaut à un seul des deux ensembles du graphe bipartite, en
l’occurrence celui qui correspond aux individus. Si l’on souhaite plutôt
travailler sur le second ensemble, en l’occurence celui qui correspond
aux évènements, il suffira d’inverser les colonnes de la liste de liens.
net[,2:1] net2 <-
Le package bipartite
Charger le package et les données
library("bipartite")
#ouvrir le fichier contenant la matrice
read.csv(file="freeman_friendship.csv", header=T, sep=";")
mat<-
#transformer en objet de type matrice
as.matrix(mat[1:29,2:20])
mat<-
#renommer les colonnes (évènements)
colnames(mat)<- paste("E",1:19, sep="" )
#remplacer les cases vides par des zéros
is.na(mat)] = 0
mat[
#représenter l'information
plotweb(mat)
Indicateurs
Le package bipartite dispose d’une fonction permettant
d’obtenir toute une batterie d’indicateurs adaptés à l’étude des réseaux
bipartites en écologie.
#mesures
networklevel(mat)
## connectance web asymmetry
## 9.473684e-02 -1.363636e-01
## links per species number of compartments
## 1.022727e+00 3.000000e+00
## compartment diversity cluster coefficient
## 1.636938e+00 8.000000e-02
## nestedness NODF
## 2.895399e+01 5.590941e+00
## weighted nestedness weighted NODF
## -5.929449e-02 0.000000e+00
## interaction strength asymmetry specialisation asymmetry
## 0.000000e+00 1.684896e-01
## linkage density weighted connectance
## 2.444444e+00 5.555556e-02
## Fisher alpha Shannon diversity
## 8.589935e+09 3.806662e+00
## interaction evenness Alatalo interaction evenness
## 6.176323e-01 1.000000e+00
## H2 number.of.species.HL
## 0.000000e+00 1.900000e+01
## number.of.species.LL mean.number.of.shared.partners.HL
## 2.500000e+01 1.754386e-01
## mean.number.of.shared.partners.LL cluster.coefficient.HL
## 1.166667e-01 1.022222e-01
## cluster.coefficient.LL weighted.cluster.coefficient.HL
## 1.228070e-01 0.000000e+00
## weighted.cluster.coefficient.LL niche.overlap.HL
## 0.000000e+00 6.812865e-02
## niche.overlap.LL togetherness.HL
## 5.388889e-02 4.358118e-02
## togetherness.LL C.score.HL
## 2.977778e-02 8.903103e-01
## C.score.LL V.ratio.HL
## 9.130093e-01 2.133333e-01
## V.ratio.LL discrepancy.HL
## 5.940594e-01 3.600000e+01
## discrepancy.LL extinction.slope.HL
## 3.300000e+01 1.558035e+00
## extinction.slope.LL robustness.HL
## 2.316145e+00 6.086831e-01
## robustness.LL functional.complementarity.HL
## 6.984789e-01 3.402716e+01
## functional.complementarity.LL partner.diversity.HL
## 3.431452e+01 8.974664e-01
## partner.diversity.LL generality.HL
## 7.242549e-01 2.555556e+00
## vulnerability.LL
## 2.333333e+00
Les 18 premiers indicateurs sont des indicateurs globaux (qui concernent l’ensemble du réseau). Les indicateurs suivants portent sur chacune des deux populations du graphes. “HL”signifie “Higher level” et désigne la population en colonne, en l’occurence les évènements. “LL” signifie “Lower level” et désigne la population en ligne, en l’occurence les individus. On trouve la définition de chaque indicateur dans la documentation du package.
Une fonction du même type permet de mesurer des indicateurs portant non pas sur les sommets mais sur les liens du graphes.
#mesures
linklevel(mat) indices_link<-
Les résultats sont stockés dans des matrices.
La fonction ND permet de calculer le degré normalisé par le nombre d’éléments de chaque population.
#calculer le degré normalisé
ND(mat, normalised = T )
## $lower
## 1 2 3 4 5 6 7
## 0.00000000 0.15789474 0.21052632 0.10526316 0.05263158 0.05263158 0.00000000
## 8 9 10 11 12 13 14
## 0.05263158 0.10526316 0.05263158 0.10526316 0.05263158 0.21052632 0.05263158
## 15 16 17 18 19 20 21
## 0.10526316 0.05263158 0.05263158 0.05263158 0.15789474 0.15789474 0.15789474
## 22 23 24 25 26 27 28
## 0.00000000 0.05263158 0.05263158 0.10526316 0.05263158 0.00000000 0.10526316
## 29
## 0.05263158
##
## $higher
## E1 E2 E3 E4 E5 E6 E7
## 0.06896552 0.06896552 0.06896552 0.06896552 0.06896552 0.06896552 0.06896552
## E8 E9 E10 E11 E12 E13 E14
## 0.13793103 0.13793103 0.06896552 0.06896552 0.10344828 0.10344828 0.06896552
## E15 E16 E17 E18 E19
## 0.06896552 0.10344828 0.06896552 0.06896552 0.06896552
Modélisation
La fonction mgen permet de générer un modèle nul à savoir
une matrice de même taille dans laquelle les liens ont la même
probabilité d’apparition que dans la matrice analysée. On peut aussi
mobiliser cette méthode en utilisant la fonction nullmodel.
#modèle nul
mgen(mat)
modele_nul<-
nullmodel(N=5, mat, method="mgen") modele_nul<-
Partionnement
La fonction computeModules permet de repérer des sous-groupes très connectés dans un réseau two-mode valué en utilisant la valeur de la modularité proposée par Newman. La fonction plotModuleWeb permet de visualiser le résultat de ce partitionnement.
#trouver des partitions
computeModules(mat)
mod_mat<-
plotModuleWeb(mod_mat)
Pour aller plus loin
D’autres fonctionnalités du package bipartite ont été testées par Camille Brisson et Chloé Migayrou dans le cadre d’un cours d’analyse de réseaux dispensé par Laurent Beauguitte à l’ENSAI. Leur travail a donné lieu à un billet dans le carnet de recherche du GDR AR-SHS accessible au lien suivant: http://arshs.hypotheses.org/260
Exercice
Comparer la filmographie des frères Cohen et celle de Scorsese. Les pages Wikipédia de ces deux réalisateurs nous indiquent la liste des acteurs revenant régulièrement dans leurs films. Analyser la structure des réseaux de co-apparition des acteurs dans les films de ces deux réalisateurs en utilisant les packages igraph, tnet et bipartite.
Références
Breiger, R. L. (1974). The Duality of Persons and Groups. Social Forces, 53(2), 181‑190. https://doi.org/https://doi.org/10.2307/2576011
Davis, A., Gardner, B. B., & Gardner, M. R. (1941). Deep South: A Social Anthropological Study of Caste and Class. University of South Carolina Press.
Freeman, L. C. (2003). Finding groups: A Meta-Analysis of the Southern Women Data in Dynamic Social Network Modeling and Analysis (pp. 39-97). National Academies Press.
Freeman, L. C. (1980). Q-analysis and the structure of friendship networks. International Journal of Man-Machine Studies, 12(4), 367‑378. https://doi.org/10.1016/s0020-7373(80)80021-6
Latapy, M., Magnien, C., & Vecchio, N. D. (2008). Basic notions for the analysis of large two-mode networks. Social Networks, 30(1), 31‑48. https://doi.org/10.1016/j.socnet.2007.04.006
Maisonobe, M., Eckert, D., Grossetti, M., Jégou, L., & Milard, B. (2016). The world network of scientific collaborations between cities: domestic or international dynamics? Informetrics, 10, 1025‑1036. https://doi.org/https://doi.org/10.1016/j.joi.2016.06.002
Newman, M. E. J. (2001). Scientific collaboration networks. II. Shortest paths, weighted networks, and centrality. Physical Review E, 64(1). https://doi.org/10.1103/PhysRevE.64.016132
Opsahl, T. (2013). Triadic closure in two-mode networks: Redefining the global and local clustering coefficients. Social Networks, 35(2), 159‑167. https://doi.org/10.1016/j.socnet.2011.07.001
Padrón, B., Nogales, M., & Traveset, A. (2011). Alternative approaches of transforming bimodal into unimodal mutualistic networks. The usefulness of preserving weighted information. Basic and Applied Ecology, 12(8), 713‑721. https://doi.org/10.1016/j.baae.2011.09.004
Pizarro, N. (1999). Appartenances, places et réseaux de places. Sociologie et sociétés, 31(1), 143‑161. https://doi.org/10.7202/001568ar
Robins, G., & Alexander, M. (2004). Small Worlds Among Interlocking Directors: Network Structure and Distance in Bipartite Graphs. Computational & Mathematical Organization Theory, 10(1), 69‑94. https://doi.org/10.1023/B:CMOT.0000032580.12184.c0
Tutoriels disponibles en ligne (liens cliquables)
- Working with Bipartite/Affiliation Network Data in R. Tutoriel de Solomon Messing
- Manuel du groupe d’analyse de réseaux sociaux sous R de l’Université de Stanford
- Représenter les réseaux bipartis sous R. 1
- Représenter les réseaux bipartis sous R. 2
- Représenter les réseaux bipartis sous R. 3
- Documentation du package R bipartite
- Tutoriel pour le package R bipartite par Laurent Beauguitte
- Documentation du package R tnet de Tore Opsahl
- Tutoriel de Tore Opsahl. Package R tnet
- Tutoriel de Tore Opsahl. Définir un réseau biparti
- Tutoriel de Tore Opsahl. Les données d’un réseau biparti
- Tutoriel de Tore Opsahl. Mesurer le plus court chemin dans un réseau biparti
- Tutoriel de Tore Opsahl. La projection d’un réseau biparti en réseau one-mode
- Visualisation de réseaux bipartis sous Gephi. Tutoriel de Martin Grandjean
- Article de Stephen P. Borgatti et Martin G. Everett. Concepteurs de Ucinet
- Analyser des grands réseaux avec SNAP. Tutoriel de Jure Leskovec
- Analyser et visualiser des réseaux avec Neo4j
Jeux de données disponibles en ligne (liens cliquables)
- Southern Women Data Set. L’exemple canonique !
- Autres jeux de données de l’Université de Californie à Irvine. The UCI Network Data Repository
- Jeux de données stockés par Jure Leskovec, Université de Stanford
- Grand répertoire de jeux de données réseaux de référence
- La localisation des institutions de l’ONU. GaWC datasets
- Legislative Cosponsorship Networks in the U.S. House and Senate
- Neo4j datasets
- Neo4j datasets. L’exemple des Panama Papers
- Données de citations d’articles
- Jeux de données Pajek
- Encore plus de réseaux ! Les liens repérés par Mark Newman
- Boards and gender, un exemple de Tore Opshal et Cathrine Seierstad