SlideShare une entreprise Scribd logo
1  sur  17
Analyse de réseaux avec R 
Analyse de réseaux avec R 
Une courte introduction 
Laurent Beauguitte (CNRS, UMR IDEES) 
http://groupefmr.hypotheses.org/ 
Août 2014 - École thématique Ferney-Voltaire
Analyse de réseaux avec R 
Questions & principes de base 
I Pourquoi R ? 
I Interface de RStudio 
I Principes généraux 
I Obtenir de l'aide. . . 
I Créer des objets 
I Importer des chiers (read.table) 
I Contrôler l'import (str)
Analyse de réseaux avec R 
Deux packages généralistes (statnet et igraph) non compatibles : 
utiliser l'un ou l'autre 
Pour démarrer une session : 
rm(list=ls()) # vider l'espace de travail 
library(statnet) # charger le package 
ou 
rm(list=ls()) # vider l'espace de travail 
library(igraph) # charger le package
Analyse de réseaux avec R 
Visualiser un jeu de données 
rm(list=ls()) 
library(statnet) 
gplot(rgraph(10, tprob=0.2)) #random graph, 10 sommets 
#proba 20% 
library(igraph) 
plot(erdos.renyi.game(10, 1/5))
Analyse de réseaux avec R 
Mesures de base 
statnet igraph 
densité gden graph.density 
comp. connexes components clusters 
degré degree degree 
betweenness betweenness betweenness 
closeness closeness closeness 
PCC* geodist shortest.paths 
cliques clique.census cliques 
k-cores kcores graph.coreness 
*PCC : plus court chemin
Analyse de réseaux avec R 
Saisir les données : éditeur de texte (Notepad++), format .txt ou 
.csv 
Importer des données 
#liste de liens : origine, destination, attributs 
library(statnet) 
d - read.table(data.csv, header=TRUE, sep=;) 
g - as.network(as.matrix(d)) 
g 
library(igraph) 
g - graph.data.frame(d) 
g
Analyse de réseaux avec R 
Importer des attributs pour les sommets (avec igraph) 
Une liste de liens origine - destination - attribut 1 - attribut 2, etc. 
Une liste de sommets - attribut 1 - attribut 2, etc 
rm(list=ls()) 
liens - read.table(liens.csv, header=TRUE, sep=;) 
g - graph.data.frame(liens) 
sommets - read.table(sommets.csv, header=TRUE, sep=;) 
V(g)$Att=sommets$A[match(V(g)$name,sommets$S)] 
# S = code des sommets, A = attribut des sommes 
#variation taille selon attribut 
plot(g, vertex.size = as.numeric(V(g)$Att)*10)
Analyse de réseaux avec R 
Idem avec statnet 
rm(list=ls()) 
library(statnet) 
d - read.table(liens.csv, header=TRUE, sep=;) 
str(d) 
da - read.table(sommets.csv, header=TRUE, sep=;) 
str(d) 
g - as.network(as.matrix(d[,-3])) 
g 
g %v% AGE - da$A 
gplot(g, gmode=graph, displaylabels=TRUE, 
vertex.cex= da$A)
Analyse de réseaux avec R 
Graphe biparti (pas de mesure possible - statnet - ou résultats 
faux - igraph) 
rm(list=ls()) 
library(igraph) 
d - read.table(biparti.csv, sep=;, header=FALSE) 
g - graph.data.frame(d, directed = FALSE) 
g 
library(statnet) 
g - as.network(as.matrix(d), bipartite = TRUE) 
g
Analyse de réseaux avec R 
Extraire et visualiser les ego-networks 
library(statnet) 
ego - ego.extract(g) 
gplot(ego$a, displaylabels=TRUE, labels=colnames(ego$a), 
gmode=graph)
Analyse de réseaux avec R 
Soit le graphe suivant : 
I quel est le diamètre du graphe ? 
I combien y-a-t'il de cliques avec 3 sommets ? avec 4 ? 
I quels sont les sommets les plus centraux ? en terme de degré ? 
en terme d'intermédiarité ?
Exercice 1 
I créer le chier de liens correspondant à cette gure (format 
conseillé .csv) ; 
I l'importer dans R ; 
I le transformer en objet igraph ou network ; 
I chercher les cliques ; 
I mesurer le diamètre, le degré, l'intermédiarité.
Analyse de réseaux avec R 
Avec statnet et/ou igraph, visualiser en faisant apparaître les 
attributs des sommets (couleur), le degré (taille) et l'intensité des 
liens (épaisseur). 
Exemples 
statnet igraph
Analyse de réseaux avec R 
Structure des données 
exoliens.csv exosommets.csv 
O;D;I code;attribut 
a;b;3 a;1 
a;c;2 b;1 
a;d;1 c;1 
... d;2 
... 
Si vous changez les noms de colonnes, il faudra adapter le code 
donné ensuite 
Et il y aura la solution ensuite. . .
rm(list=ls()) 
library(igraph) 
#import des fichiers liens et sommets 
lien - read.table(exoliens.csv, sep=;, header=TRUE) 
somm - read.table(exosommets.csv, sep=;, header=TRUE) 
#transformation en objet igraph 
#import de l'attribut des sommets 
g - graph.data.frame(lien, directed= FALSE) 
V(g)$Att -somm$attribut[match(V(g)$name,somm$code)] 
#mesures 
graph.density(g) 
degree(g) 
betweenness(g) 
max(shortest.paths(g)) 
cliques(g, min = 3)
#visualisation 
colors = c(Red,Yellow) 
V(g)$Att[V(g)$Att == 1] = colors[1] 
V(g)$Att[V(g)$Att == 2] = colors[2] 
edgeW - get.edge.attribute(g, I) 
#ouverture fenetre graphique 
X11() 
plot(g, vertex.size = degree(g)*10, vertex.color= V(g)$Att, 
edge.width = edgeW*2, edge.color = Black)
detach(package:igraph) 
library(statnet) 
g - as.network(as.matrix(lien[,-3]), directed = FALSE) 
g 
gden(g) 
betweenness(g) 
geodist(g) 
clique.census(g, mode=graph) 
X11() 
gplot(g, gmode = graph, displaylabels=TRUE, 
vertex.cex= sqrt(degree(g)), 
vertex.col = somm$attribut, 
edge.lwd = lien$I)

Contenu connexe

Tendances

Gestion et Suivi des Projets informatique
Gestion et Suivi des Projets informatiqueGestion et Suivi des Projets informatique
Gestion et Suivi des Projets informatique
Jihed Kaouech
 
RapportPFE_IngenieurInformatique_ESPRIT
RapportPFE_IngenieurInformatique_ESPRITRapportPFE_IngenieurInformatique_ESPRIT
RapportPFE_IngenieurInformatique_ESPRIT
Lina Meddeb
 

Tendances (20)

Réseaux de neurones récurrents et LSTM
Réseaux de neurones récurrents et LSTMRéseaux de neurones récurrents et LSTM
Réseaux de neurones récurrents et LSTM
 
Cours 2 les architectures reparties
Cours 2 les architectures repartiesCours 2 les architectures reparties
Cours 2 les architectures reparties
 
Pfe conception et réalisation d'une application de gestion des processus d'ac...
Pfe conception et réalisation d'une application de gestion des processus d'ac...Pfe conception et réalisation d'une application de gestion des processus d'ac...
Pfe conception et réalisation d'une application de gestion des processus d'ac...
 
Conception et réalisation d'une plateforme social learning
Conception et réalisation d'une plateforme social learningConception et réalisation d'une plateforme social learning
Conception et réalisation d'une plateforme social learning
 
Algorithme knn
Algorithme knnAlgorithme knn
Algorithme knn
 
Le passage du diagramme de classe vers le model objet relationnel
Le passage du diagramme de classe vers le model objet relationnelLe passage du diagramme de classe vers le model objet relationnel
Le passage du diagramme de classe vers le model objet relationnel
 
cours-dns TRI.pdf
cours-dns TRI.pdfcours-dns TRI.pdf
cours-dns TRI.pdf
 
Clustering: Méthode hiérarchique
Clustering: Méthode hiérarchiqueClustering: Méthode hiérarchique
Clustering: Méthode hiérarchique
 
Rapport PFE "Conception et développement d'un Portail web pour le Smart Met...
Rapport  PFE  "Conception et développement d'un Portail web pour le Smart Met...Rapport  PFE  "Conception et développement d'un Portail web pour le Smart Met...
Rapport PFE "Conception et développement d'un Portail web pour le Smart Met...
 
Outpatient Department System (OPD)
Outpatient Department System (OPD) Outpatient Department System (OPD)
Outpatient Department System (OPD)
 
Big data
Big dataBig data
Big data
 
Knn
KnnKnn
Knn
 
Gestion et Suivi des Projets informatique
Gestion et Suivi des Projets informatiqueGestion et Suivi des Projets informatique
Gestion et Suivi des Projets informatique
 
Map Reduce
Map ReduceMap Reduce
Map Reduce
 
Tp1 - WS avec JAXWS
Tp1 - WS avec JAXWSTp1 - WS avec JAXWS
Tp1 - WS avec JAXWS
 
RapportPFE_IngenieurInformatique_ESPRIT
RapportPFE_IngenieurInformatique_ESPRITRapportPFE_IngenieurInformatique_ESPRIT
RapportPFE_IngenieurInformatique_ESPRIT
 
Business Intelligence Reporting Solution
Business Intelligence Reporting Solution Business Intelligence Reporting Solution
Business Intelligence Reporting Solution
 
J'ai fait une app native en React Native
J'ai fait une app native en React NativeJ'ai fait une app native en React Native
J'ai fait une app native en React Native
 
Presentation sql
Presentation sqlPresentation sql
Presentation sql
 
BigData_TP2: Design Patterns dans Hadoop
BigData_TP2: Design Patterns dans HadoopBigData_TP2: Design Patterns dans Hadoop
BigData_TP2: Design Patterns dans Hadoop
 

Similaire à Introduction à l'analyse de réseaux avec R

Data Mining (Partie 2).pdf
Data Mining (Partie 2).pdfData Mining (Partie 2).pdf
Data Mining (Partie 2).pdf
OuailChoukhairi
 
Beyond F5 - windbg et .Net
Beyond F5 - windbg et .NetBeyond F5 - windbg et .Net
Beyond F5 - windbg et .Net
Yann Schwartz
 

Similaire à Introduction à l'analyse de réseaux avec R (20)

Présentation Logiciel R.pptx
Présentation Logiciel R.pptxPrésentation Logiciel R.pptx
Présentation Logiciel R.pptx
 
R fait du la tex
R fait du la texR fait du la tex
R fait du la tex
 
Data Mining (Partie 2).pdf
Data Mining (Partie 2).pdfData Mining (Partie 2).pdf
Data Mining (Partie 2).pdf
 
Développement informatique : Chaines de caractères et expressions regulières
Développement informatique : Chaines de caractères et expressions regulièresDéveloppement informatique : Chaines de caractères et expressions regulières
Développement informatique : Chaines de caractères et expressions regulières
 
Initiation r
Initiation rInitiation r
Initiation r
 
Base NoSql et Python
Base NoSql et PythonBase NoSql et Python
Base NoSql et Python
 
Java 8-streams-collectors-patterns
Java 8-streams-collectors-patternsJava 8-streams-collectors-patterns
Java 8-streams-collectors-patterns
 
.php1 : les fondamentaux du PHP
.php1 : les fondamentaux du PHP.php1 : les fondamentaux du PHP
.php1 : les fondamentaux du PHP
 
Spark - Ippevent 19-02-2015
Spark - Ippevent 19-02-2015Spark - Ippevent 19-02-2015
Spark - Ippevent 19-02-2015
 
ALF 3 - Expressions régulières et Lexer
ALF 3 - Expressions régulières et Lexer ALF 3 - Expressions régulières et Lexer
ALF 3 - Expressions régulières et Lexer
 
R-Lab-1-ppt.pdf
R-Lab-1-ppt.pdfR-Lab-1-ppt.pdf
R-Lab-1-ppt.pdf
 
Une Introduction à R
Une Introduction à RUne Introduction à R
Une Introduction à R
 
Fork / Join, Parallel Arrays, Lambdas : la programmation parallèle (trop ?) f...
Fork / Join, Parallel Arrays, Lambdas : la programmation parallèle (trop ?) f...Fork / Join, Parallel Arrays, Lambdas : la programmation parallèle (trop ?) f...
Fork / Join, Parallel Arrays, Lambdas : la programmation parallèle (trop ?) f...
 
Analyse_desDonnées_sousR.pptx
Analyse_desDonnées_sousR.pptxAnalyse_desDonnées_sousR.pptx
Analyse_desDonnées_sousR.pptx
 
Dijkstra kshortest
Dijkstra kshortestDijkstra kshortest
Dijkstra kshortest
 
De java à swift en 2 temps trois mouvements
De java à swift en 2 temps trois mouvementsDe java à swift en 2 temps trois mouvements
De java à swift en 2 temps trois mouvements
 
SSL 2011 : Présentation de 2 bases noSQL
SSL 2011 : Présentation de 2 bases noSQLSSL 2011 : Présentation de 2 bases noSQL
SSL 2011 : Présentation de 2 bases noSQL
 
COURS_PYTHON_22.ppt
COURS_PYTHON_22.pptCOURS_PYTHON_22.ppt
COURS_PYTHON_22.ppt
 
Cours 01.pptx
Cours 01.pptxCours 01.pptx
Cours 01.pptx
 
Beyond F5 - windbg et .Net
Beyond F5 - windbg et .NetBeyond F5 - windbg et .Net
Beyond F5 - windbg et .Net
 

Plus de Laurent Beauguitte

Plus de Laurent Beauguitte (12)

Three NSBM circles. Between local ancrage & global network
Three NSBM circles. Between local ancrage & global networkThree NSBM circles. Between local ancrage & global network
Three NSBM circles. Between local ancrage & global network
 
20170321georeseaux
20170321georeseaux20170321georeseaux
20170321georeseaux
 
20170320logiciels
20170320logiciels20170320logiciels
20170320logiciels
 
Analyse de réseaux en sciences sociales en général... et en histoire en parti...
Analyse de réseaux en sciences sociales en général... et en histoire en parti...Analyse de réseaux en sciences sociales en général... et en histoire en parti...
Analyse de réseaux en sciences sociales en général... et en histoire en parti...
 
Do International News Reflect World Hierarchy? A Network Approach
Do International News Reflect World Hierarchy? A Network ApproachDo International News Reflect World Hierarchy? A Network Approach
Do International News Reflect World Hierarchy? A Network Approach
 
Modéliser l’attractivité des lieux globaux Une enquête internationale auprès ...
Modéliser l’attractivité des lieux globaux Une enquête internationale auprès ...Modéliser l’attractivité des lieux globaux Une enquête internationale auprès ...
Modéliser l’attractivité des lieux globaux Une enquête internationale auprès ...
 
The US and the UK (1970-2010): Ordinary trading partners?
The US and the UK (1970-2010): Ordinary trading partners?The US and the UK (1970-2010): Ordinary trading partners?
The US and the UK (1970-2010): Ordinary trading partners?
 
Spatial Models of Intra-Urban Behaviours
Spatial Models of Intra-Urban BehavioursSpatial Models of Intra-Urban Behaviours
Spatial Models of Intra-Urban Behaviours
 
L'analyse de réseaux avec R. Un état des lieux
L'analyse de réseaux avec R. Un état des lieuxL'analyse de réseaux avec R. Un état des lieux
L'analyse de réseaux avec R. Un état des lieux
 
Les principaux logiciels pour l'analyse de réseau
Les principaux logiciels pour l'analyse de réseauLes principaux logiciels pour l'analyse de réseau
Les principaux logiciels pour l'analyse de réseau
 
Les flux RSS pour les études territoriales
Les flux RSS pour les études territorialesLes flux RSS pour les études territoriales
Les flux RSS pour les études territoriales
 
Régionalisation politique et gouvernance mondiale. L’ONU au prisme des réseaux
Régionalisation politique et gouvernance mondiale. L’ONU au prisme des réseauxRégionalisation politique et gouvernance mondiale. L’ONU au prisme des réseaux
Régionalisation politique et gouvernance mondiale. L’ONU au prisme des réseaux
 

Introduction à l'analyse de réseaux avec R

  • 1. Analyse de réseaux avec R Analyse de réseaux avec R Une courte introduction Laurent Beauguitte (CNRS, UMR IDEES) http://groupefmr.hypotheses.org/ Août 2014 - École thématique Ferney-Voltaire
  • 2. Analyse de réseaux avec R Questions & principes de base I Pourquoi R ? I Interface de RStudio I Principes généraux I Obtenir de l'aide. . . I Créer des objets I Importer des chiers (read.table) I Contrôler l'import (str)
  • 3. Analyse de réseaux avec R Deux packages généralistes (statnet et igraph) non compatibles : utiliser l'un ou l'autre Pour démarrer une session : rm(list=ls()) # vider l'espace de travail library(statnet) # charger le package ou rm(list=ls()) # vider l'espace de travail library(igraph) # charger le package
  • 4. Analyse de réseaux avec R Visualiser un jeu de données rm(list=ls()) library(statnet) gplot(rgraph(10, tprob=0.2)) #random graph, 10 sommets #proba 20% library(igraph) plot(erdos.renyi.game(10, 1/5))
  • 5. Analyse de réseaux avec R Mesures de base statnet igraph densité gden graph.density comp. connexes components clusters degré degree degree betweenness betweenness betweenness closeness closeness closeness PCC* geodist shortest.paths cliques clique.census cliques k-cores kcores graph.coreness *PCC : plus court chemin
  • 6. Analyse de réseaux avec R Saisir les données : éditeur de texte (Notepad++), format .txt ou .csv Importer des données #liste de liens : origine, destination, attributs library(statnet) d - read.table(data.csv, header=TRUE, sep=;) g - as.network(as.matrix(d)) g library(igraph) g - graph.data.frame(d) g
  • 7. Analyse de réseaux avec R Importer des attributs pour les sommets (avec igraph) Une liste de liens origine - destination - attribut 1 - attribut 2, etc. Une liste de sommets - attribut 1 - attribut 2, etc rm(list=ls()) liens - read.table(liens.csv, header=TRUE, sep=;) g - graph.data.frame(liens) sommets - read.table(sommets.csv, header=TRUE, sep=;) V(g)$Att=sommets$A[match(V(g)$name,sommets$S)] # S = code des sommets, A = attribut des sommes #variation taille selon attribut plot(g, vertex.size = as.numeric(V(g)$Att)*10)
  • 8. Analyse de réseaux avec R Idem avec statnet rm(list=ls()) library(statnet) d - read.table(liens.csv, header=TRUE, sep=;) str(d) da - read.table(sommets.csv, header=TRUE, sep=;) str(d) g - as.network(as.matrix(d[,-3])) g g %v% AGE - da$A gplot(g, gmode=graph, displaylabels=TRUE, vertex.cex= da$A)
  • 9. Analyse de réseaux avec R Graphe biparti (pas de mesure possible - statnet - ou résultats faux - igraph) rm(list=ls()) library(igraph) d - read.table(biparti.csv, sep=;, header=FALSE) g - graph.data.frame(d, directed = FALSE) g library(statnet) g - as.network(as.matrix(d), bipartite = TRUE) g
  • 10. Analyse de réseaux avec R Extraire et visualiser les ego-networks library(statnet) ego - ego.extract(g) gplot(ego$a, displaylabels=TRUE, labels=colnames(ego$a), gmode=graph)
  • 11. Analyse de réseaux avec R Soit le graphe suivant : I quel est le diamètre du graphe ? I combien y-a-t'il de cliques avec 3 sommets ? avec 4 ? I quels sont les sommets les plus centraux ? en terme de degré ? en terme d'intermédiarité ?
  • 12. Exercice 1 I créer le chier de liens correspondant à cette gure (format conseillé .csv) ; I l'importer dans R ; I le transformer en objet igraph ou network ; I chercher les cliques ; I mesurer le diamètre, le degré, l'intermédiarité.
  • 13. Analyse de réseaux avec R Avec statnet et/ou igraph, visualiser en faisant apparaître les attributs des sommets (couleur), le degré (taille) et l'intensité des liens (épaisseur). Exemples statnet igraph
  • 14. Analyse de réseaux avec R Structure des données exoliens.csv exosommets.csv O;D;I code;attribut a;b;3 a;1 a;c;2 b;1 a;d;1 c;1 ... d;2 ... Si vous changez les noms de colonnes, il faudra adapter le code donné ensuite Et il y aura la solution ensuite. . .
  • 15. rm(list=ls()) library(igraph) #import des fichiers liens et sommets lien - read.table(exoliens.csv, sep=;, header=TRUE) somm - read.table(exosommets.csv, sep=;, header=TRUE) #transformation en objet igraph #import de l'attribut des sommets g - graph.data.frame(lien, directed= FALSE) V(g)$Att -somm$attribut[match(V(g)$name,somm$code)] #mesures graph.density(g) degree(g) betweenness(g) max(shortest.paths(g)) cliques(g, min = 3)
  • 16. #visualisation colors = c(Red,Yellow) V(g)$Att[V(g)$Att == 1] = colors[1] V(g)$Att[V(g)$Att == 2] = colors[2] edgeW - get.edge.attribute(g, I) #ouverture fenetre graphique X11() plot(g, vertex.size = degree(g)*10, vertex.color= V(g)$Att, edge.width = edgeW*2, edge.color = Black)
  • 17. detach(package:igraph) library(statnet) g - as.network(as.matrix(lien[,-3]), directed = FALSE) g gden(g) betweenness(g) geodist(g) clique.census(g, mode=graph) X11() gplot(g, gmode = graph, displaylabels=TRUE, vertex.cex= sqrt(degree(g)), vertex.col = somm$attribut, edge.lwd = lien$I)