Commit f2d045d2 authored by Ednomesor's avatar Ednomesor

MAJ QUANTI

parent efc23b8a
......@@ -70,6 +70,7 @@ plot(g4, edge.arrow.size=0.5,
vertex.label.dist=0.2,
edge.curved=0.2)
####Avoir des infos sur mon graphe####
#Info générale sur mon objet igraph
g4
......@@ -87,9 +88,10 @@ g4[]
#Donc si je lui demande la liste des noms
V(g4)$name
####Les attributs####
#Ajoutons des attributs à nos sommets
#J'ajoute des données sur le genre
V(g4)$genre <- c("homme", "homme", "homme", "homme", "femme", "femme", "femme", "femme")
V(g4)$genre <- c("homme", "homme", "homme", "homme", "femme", "femme", "femme", "femme", "homme")
# Valuons notre réseau
E(g4)$weight <- c(3,5,1,4,8,4,1)
......@@ -98,8 +100,38 @@ plot(g4,
edge.arrow.size=.5,
vertex.label.color="black",
vertex.label.dist=1.0,
vertex.color=c( "pink", "skyblue")[1+(V(g4)$genre=="homme")] )
vertex.color=ifelse(V(g4)$genre=="homme", "skyblue", "pink")
)
# Avoir l'ensemble des attributs disponibles
list.vertex.attributes(g4)
list.edge.attributes(g4)
####Sélectionner des noeuds####
#selon leur position dans l'objet igraph
V(g4)[1,2:5]
#selon la valeur d'un attribut ou du résultat d'une fonction
V(g4)[V(g4)$genre=="homme"]
V(g4)[degree(g4, mode = "in") >2]
#selon leur nom
x<-V(g4)['Greta']
#selectionner les voisins d'un noeud
V(g4)[nei(x)]
####Sélectionner des liens####
# position dans le graphe
E(g4)[1,5]
# un lien entre 2 noeuds précis
E(g4)["Pierre" %->% "Paul"]
# un lien entrant
E(g4)[from("Pierre")]
# lien sortant
E(g4)[from("Pierre")]
#R. Letricot - Quantilille
# Initiation à l'analyse de réseau
# Initiation à l'analyse de réseau - Séance 2
# 27 juin 2017
#Commencer l'analyse de réseau
#Je nettoie mon espace de travail
rm(list=ls())
......@@ -15,27 +13,39 @@ library(colorRamps)
####POUR DEBUTER : ANALYSES DE BASES SUR PETITS GRAPHES####
#Créer 2 graphes, l'un orienté et l'autre non orienté
net <- make_graph("Krackhardt_Kite")
net
V(net)$name<-c("A","B","C","D","E","F","G","H","I","J")
net2<-graph_from_literal("A"-+"D"+-"G"-+"E"++"B"+-"A"-+"C"-+"F"+-"H"-+"I"-+"J","D"+-"G", "D"-+"E", "D"++"C", "D"++"F", "D"-+"B"-+"G"-+"H", "A"+-"F")
net2
#Fixer les coordonnées du graphe pour la visualisation
l <- layout_with_fr(net)
l <- norm_coords(l, ymin=-1, ymax=1, xmin=-1, xmax=1)
l2 <- layout_with_fr(net2)
l2 <- norm_coords(l2, ymin=-1, ymax=1, xmin=-1, xmax=1)
#Visualisation
plot(net,
vertex.label = V(net)$name,
rescale=F,
layout=l)
plot(net2,
vertex.label = V(net2)$name,
rescale=F,
layout=l2)
####MESURES GLOBALES SUR LE GRAPHE####
#Densité du graphe
graph.density(net)
graph.density(net2)
#Diamètre du graphe
diameter(net)
diameter(net2)
#Transitivité - clustering coefficient
#transitivity(net, type=c("globalundirected"))
......@@ -61,14 +71,28 @@ plot(net,
main="Degré de centralité"
)
#Idem pour le graphe orienté
V(net2)$DC<-degree(net2, mode = c("out"))
#On peut récupérer ces valeurs dans un dataframe
df.mesures<- data.frame(deg.centralite = V(net)$DC,
row.names = V(net)$name)
#Ce qui donne les mesures suivantes
V(net2)$DC
#Visualisation selon cette mesure
#taille des noeuds + ajout du degré à côté du nom du noeud
par(mar = c(2,0,2,0))
plot(net2,
vertex.size=V(net2)$DC*4,
vertex.color="grey",
vertex.label=paste0(V(net2)$name, ":", V(net2)$DC),
vertex.label.color="black",
rescale=F,
layout = l2,
main="Degré de centralité"
)
#On peut enlever les noeuds les moins importants
net2<-delete_vertices(net, V(net)$DC<=1)
net2
net1bis<-delete_vertices(net, V(net)$DC<=1)
net1bis
plot(net2,
vertex.size=V(net2)$DC*4,
......@@ -150,11 +174,34 @@ df.mesures<- data.frame(
####POINT D'ARTICULATION DU RESEAU ####
articulation_points(net)
####Page Rank####
V(net)$PRK<-page_rank(net)$vector
#Visualisation des résultats
plot(net,
vertex.size=V(net)$PRK,
vertex.color="orange",
vertex.label=paste0(V(net)$name, ":", (V(net)$PRK)),
vertex.label.color="grey10",
rescale=F,
layout = l,
main="Page Rank"
)
####MESURES LIENS####
#Edge betweenness
E(net)$EDG.BET<-edge.betweenness(net)
#Visualisation des résultats
plot(net,
vertex.size=10,
vertex.label.color="grey10",
edge.width=E(net)$EDG.BET*0.7,
rescale=F,
layout = l,
main="Centralité en vecteur propre"
)
#Longueur du chemin moyen
average.path.length(net)
......
---
title: "Initiation à l'analyse de réseaux"
title: "Initiation à l'analyse de réseaux avec R - Séance 1"
subtitle: "Quantilille"
author: "R. Letricot"
date: "27 juin 2017 | matin"
......@@ -28,7 +28,7 @@ L'ensemble des données, scripts et présentations que j'ai produit pour la form
## Ressources utiles
Julien Barnier, \textit{Introduction à R}, livret de formation, dernière version disponible sur : <http://alea.fr.eu.org/pages/intro-R>.
Tutoriel sur igraph produit par l'un de ses créateurs <http://igraph.github.io/netuser15/user-2015.html#1>
Tutoriel sur igraph produit par l'un de ses développeurs <http://igraph.github.io/netuser15/user-2015.html#1>
## 1 - Introduction
### Présentation de R
......@@ -529,9 +529,7 @@ for (layout in layouts) {
### Exercices de manipulation n°2
## 5 - Mesures de base du réseau
## 6 - Exporter
## 5 - Exporter
### Mettre un titre et une légende à sa visualisation
......@@ -551,8 +549,6 @@ title(main = "Un réseau fait d'hommes et de femmes", cex.main = 1.0, col.main =
```
### Exporter ses métriques sous forme de tableau
### Exporter les visualisations et les données
```{r, tidy=TRUE, tidy.opts=list(width.cutoff=60), fig.align='center', fig.height=4}
......
---
title: "Mesures et analyses statistiques - Quantilille "
title: "Initiation à l'analyse de réseaux avec R - Séance 2"
subtitle: "Quantilille"
author: "R. Letricot"
date: "27 jui 2017"
date: "27 juin 2017 | après-midi"
output: pdf_document
fontsize: 12pt
geometry: margin=1.2in
toc: true
---
```{r setup, include=FALSE}
knitr::opts_chunk$set(echo = TRUE)
```
## R Markdown
## Avant-propos
Ce document a été conçu en support à la séance *Initiation à l'analyse de réseaux* pour la formation Quantilille 2017. Dans cette séance, nous serons amenés à manipuler les logiciels R et RStudio ainsi que les packages **igraph**, **bipartite**.
Ce document rédigé en R Markdown a l'avantage de mêler texte, commande R et visualisation sur un seul et même document.
L'export PDF et le fichier source Rmd sont disponibles sous licence CC0 (<https://creativecommons.org/publicdomain/zero/1.0/deed.fr>), c'est-à-dire libre de droit, pour la simple et bonne raison qu'ils ne sont pas de ma seule et unique facture mais inspirés de nombreuses ressources disponibles en ligne. Si vous réutilisez le contenu de ce cours, rien ne vous empêche d'avoir la gentillesse de citer ce document, de la même manière que je cite les ressources qui ont inspiré l'écriture de ce travail dans la section **Ressources utiles**. Mais ce n'est en rien une obligation...
Les données que nous allons manipuler peuvent, quant à elles, faire l'objet de licence spécifique.
L'ensemble des données, scripts et présentations que j'ai produit pour la formation Quantilille est disponible sur le dépôt GIT :
## Ressources utiles
Julien Barnier, \textit{Introduction à R}, livret de formation, dernière version disponible sur : <http://alea.fr.eu.org/pages/intro-R>.
Tutoriel sur igraph produit par l'un de ses développeurs <http://igraph.github.io/netuser15/user-2015.html#1>
## Mesures globales d'un réseau
Les mesures globales portent sur l'intégralité du réseau et vont donner une idée générale de sa structure.
Nous allons commencer par créer deux graphes jouets, l'un orienté et l'autre non pour nous aider à comprendre la variation des mesures entre ces deux types de graphe.
Le graphe non orienté est un graphe d'exemple présent dans l'extension `igraph`, nommé Krackhardt Kite du nom de son concepteur David Krackhardt dont les recherches portent sur les réseaux d'organisation et d'information au sein de ces organisations.
Le graphe orienté, de facture maison, tente de reproduire le graphe de Krackhardt avec des liens orientés d'exemple.
```{r, tidy=TRUE, tidy.opts=list(width.cutoff=60), fig.align='center', fig.height=4}
#R. Letricot - Quantilille
# Initiation à l'analyse de réseau - Séance 2
# 27 juin 2017
#Je nettoie mon espace de travail
rm(list=ls())
setwd("~/Documents/framagit/cours_SNA/script_R/")
#J'active mes extensions
library(igraph)
library(colorRamps)
####POUR DEBUTER : ANALYSES DE BASES SUR PETITS GRAPHES####
This is an R Markdown document. Markdown is a simple formatting syntax for authoring HTML, PDF, and MS Word documents. For more details on using R Markdown see <http://rmarkdown.rstudio.com>.
#Créer 2 graphes, l'un orienté et l'autre non orienté
net <- make_graph("Krackhardt_Kite")
net
V(net)$name<-c("A","B","C","D","E","F","G","H","I","J")
When you click the **Knit** button a document will be generated that includes both content as well as the output of any embedded R code chunks within the document. You can embed an R code chunk like this:
net2<-graph_from_literal("A"-+"D"+-"G"-+"E"++"B"+-"A"-+"C"-+"F"+-"H"-+"I"-+"J","D"+-"G", "D"-+"E", "D"++"C", "D"++"F", "D"-+"B"-+"G"-+"H", "A"+-"F")
net2
```{r cars}
summary(cars)
#Fixer les coordonnées du graphe pour la visualisation
l <- layout_with_fr(net)
l <- norm_coords(l, ymin=-1, ymax=1, xmin=-1, xmax=1)
l2 <- layout_with_fr(net2)
l2 <- norm_coords(l2, ymin=-1, ymax=1, xmin=-1, xmax=1)
#Visualisation
plot(net,
vertex.label = V(net)$name,
rescale=F,
layout=l)
plot(net2,
vertex.label = V(net2)$name,
rescale=F,
layout=l2)
```
## Including Plots
### Rappel : taille et ordre d'un réseau
You can also embed plots, for example:
Pour avoir les premières informations sur son réseau, tapez le nom du réseau dans la console ou dans votre script.
Le premier est non orienté (*undirected*), nommé, non valué et non bipartite d'ordre 10 (nbre de sommets) et de taille 18 (nbr de liens).
```{r pressure, echo=FALSE}
plot(pressure)
Le second est orienté (*directed*), nommé, non valué et non bipartite, d'ordre 10 également mais de taille 20.
```{r}
net
net2
```
Note that the `echo = FALSE` parameter was added to the code chunk to prevent printing of the R code that generated the plot.
### Densité et diamètre
La densité d'un graphe est le rapport entre le nombre de liens présents et le nombres de liens possibles. Plus on se rapproche de 1 et plus le graphe est complet.
Le diamètre d'un graphe (plus long des plus courts chemins) donne une idée sur la structure compacte ou lache du réseau.
```{r}
#Densité du graphe
graph.density(net)
graph.density(net2)
#Diamètre du graphe
diameter(net)
diameter(net2)
```
La densité du graphe orienté est plus faible car on compte tous les liens possibles dans un sens et dans l'autre de la relation entre deux noeuds.
Avec l'ajout de l'orientation des liens on a rallongé la longueur du plus court chemin dans le graphe orienté.
## Mesures locales
### Mesures sur les sommets
### Mesures sur les liens
## Réseau bipartite
\ No newline at end of file
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment