Flux RSS

jeudi 23 juin 2016

graphe avec gephi & igraph avec R

soit un graphe réalisé par les étudiants du master ERPUR 2015-16 lors de leur analyse de 5 entretiens avec les acteurs de la TVB d'une commune périurbaine d'où sont extraits un indice des relations entre ces acteurs de 0 à 3 et dont l'importance (degré) est illustrée par la taille des nœuds, des polices et des liens

voici le fichier des acteurs

Id    Label
1    Syndicat mixte
2    Conseil Regional
3    DREAL Bretagne
4    Communaute de Communes
5    Elus
6    Chambre dagriculture
7    Camp militaire
8    Cabinet specialise
9    Conseil departemental
10    Habitants
11    Agriculteurs
12    Agence de l'eau
13    Associations naturalistes
14    Monde scientifique

et voici le fichier de leurs relations (source-target) établi à travers le traitement des différents entretiens
 (labels) avec les poids de celles-ci

Source    Target    Type    Id    Label    Weight
1    8    Undirected    1    ent_Syndicat mixte    1.0
1    9    Undirected    1    ent_Syndicat mixte    1.0
1    10    Undirected    1    ent_Syndicat mixte    1.0
1    5    Undirected    1    ent_Syndicat mixte    3.0
1    11    Undirected    1    ent_Syndicat mixte    3.0
2    3    Undirected    2    ent_Conseil Regional    3.0
2    11    Undirected    2    ent_Conseil Regional    1.0
2    9    Undirected    2    ent_Conseil Regional    1.0
2    5    Undirected    2    ent_Conseil Regional    1.0
2    6    Undirected    2    ent_Conseil Regional    1.0
2    12    Undirected    2    ent_Conseil Regional    1.0
2    1    Undirected    2    ent_Conseil Regional    1.0
2    13    Undirected    2    ent_Conseil Regional    1.0
5    10    Undirected    4    ent_Maire    3.0
5    11    Undirected    4    ent_Maire    3.0
5    1    Undirected    4    ent_Maire    1.0
5    9    Undirected    4    ent_Maire    1.0
5    8    Undirected    4    ent_Maire   3.0
5    4    Undirected    4    ent_Maire   1.0
5    10    Undirected    5    ent_Adjoint Mairie   3.0
5    11    Undirected    5    ent_Adjoint Mairie     3.0
5    12    Undirected    5    ent_Adjoint Mairie    3.0
5    5    Undirected    5    ent_Adjoint Mairie    3.0
5    4    Undirected    5    ent_Adjoint Mairie    1.0
3    13    Undirected    3    ent_DREAL Bretagne    3.0
3    14    Undirected    3    ent_DREAL Bretagne    1.0
3    11    Undirected    3    ent_DREAL Bretagne    3.0
3    5    Undirected    3    ent_DREAL Bretagne    3.0
3    4    Undirected    3    ent_DREAL Bretagne    3.0
3    12    Undirected    3    ent_DREAL Bretagne    3.0

il est possible depuis Gephi d'exporter le réseau ainsi réalisé sous deux formats importables ensuite dans R : le format .net (pajek) et le format .gml

dans R,
#ouvrir igraph
> library(igraph)

#ouvrir un graphe exporté en pajek par gephi
> g <- read.graph("TVB.net", format="pajek")
> plot(g)

ou bien

#ouvrir un graphe exporté en gml par gephi
> g <- read.graph("TVB.gml", format="gml")
> plot(g)

#selon les besoins, il est possible de masquer les labels des liens de manière définitive
> E(g)$label <- NA
> plot(g)

# fixer la taille des nœuds en fonction des liens
> deg <- degree(g, mode="all")
> V(g)$size <- deg*2
> plot(g)



#pour afficher les id
>plot(g,vertex.label=V(g)$id,)




# détection des communautés sur la base de la centralité d'intermédiarité (Newman-Girvan) : la centralité d'intermédiarité (« betweenness centrality ») compte le nombre de fois où un nœud agit comme un point de passage le long du plus court chemin entre deux autres nœuds (= intermédiaire)
> ceb <- cluster_edge_betweenness(g)
> dendPlot(ceb, mode="hclust")

#représentation des résultats du cluster d'intermédiarité
> plot(ceb,g)




#pour représenter les subdivisions denses du graphe : optimisation de la modularité qui mesure la qualité d'un partitionnement des nœuds d'un réseau en communautés (parties du graphe les plus connectées entre elles, les ensembles qui ont une forte densité interne et une faible densité externe)
>cfg <- cluster_fast_greedy(as.undirected(g))
> dendPlot(cfg, mode="hclust")


#représentation des résultats du cluster de modularité
>plot(cfg, as.undirected(g))


il est possible de revenir sur Gephi et d'ouvrir la fenêtre statistiques pour calculer la modularité puis l'employer comme paramètre supplémentaire de représentation du graphe : couleurs des nœuds selon la modularité afin d'identifier les trois communautés, et tailles des nœuds selon le nombre de liens

Parameters:
Randomize: On
Use edge weights: On
Resolution: 1.0
Results:
Modularity: 0,221
Modularity with resolution: 0,221
Number of Communities: 3


#un autre algorithme permet de calculer la modularité, basé sur la méthode de Louvain (1), méthode ascendante et multi-niveau.
> cluster_louvain(g)
IGRAPH clustering multi level, groups: 3, mod: 0.23
+ groups:
  $`1`
  [1] 7
 
  $`2`
  [1]  1  5  8  9 10 11
 
  $`3`
  [1]  2  3  4  6 12 13 14
 
> groups <- membership(cluster_louvain(g))
> communities <- communities(cluster_louvain(g))
> plot.igraph(g, mark.groups = communities)


On voit qu'avec cet algorithme, la position des agriculteurs a changé, il est donc préférable de tester les méthodes et de les choisir en fonction de nos hypothèses de travail.

Par ailleurs, avant de passer à l'interprétation de ces graphes, la question que l'on doit se poser est relative à la qualité de la collecte des informations traitées : le protocole basé sur l'analyse des entretiens, le nombre de ceux-ci, hormis toute autre source de données textuelles ou d'observation, seront-il suffisant pour appuyer notre analyse ?

biblio :
[1] V. Blondel, J.-L. Guillaume, R. Lambiotte, et E. Lefebvre, « Fast unfolding of communities in large networks », Journal of Statistical Mechanics, vol. 2008, no 10, sept. 2008.

sources :
http://kateto.net/
https://fr.wikipedia.org/wiki/Centralité
https://fr.wikipedia.org/wiki/Modularité

mercredi 6 mai 2015

idée élémentaire

"nous pouvons affirmer que tout système fondé d’événements et d’objets qui dispose d’une complexité de circuits causaux et d’une énergie relationnelle adéquate présente à coup sûr des caractéristiques «mentales». Il compare, c’est-à-dire qu’il est sensible et qu’il répond aux différences (ce qui s’ajoute au fait qu’il est affecté par les causes physiques ordinaires telles que l’impulsion et la force). Un tel système «traitera l’information» et sera inévitablement auto-correcteur, soit dans le sens d’un optimum homéostatique, soit dans celui de la maximisation de certaines variables.
Une unité d’information peut se définir comme une différence qui produit une autre différence. Une telle différence qui se déplace et subit des modifications successives dans un circuit constitue une idée élémentaire."

Bateson Grégory, 1977. Vers une écologie de l’esprit, Tome 1, p.272

vendredi 2 juillet 2010

fungal model

[W]hen we come to adress the most fondamental questions about living systems, we need to think of animals, too, not as things in themselves, but as point of emergent growth within a relationnal field. What makes the fungus such a useful model is just that the pathways of relationship are manifestly traced out in its fibers (or hyphae). With animals they are more difficult to see-but they are there nonetheless. And they are there for humans too. Thus with the "fungal model", if I may call it that, being a person is not necessarly different from being an organism. In what follows I want to consider the implications of this view for the way  in wich we might understand the relations-conventionally called "ecological"-between organisms-persons and their environments.

Tim Ingold 2004. Two reflections on ecological knowledge’, in G. Sanga and G. Ortalli (ed), Nature knowledge: ethnoscience, cognition, identity (Oxford : Berghahn), pp 301-311.

jeudi 10 juin 2010

Elementary cybernetic

Consider a tree and a man and an axe. We observe that the axe flies through the air and makes certain sorts of gashes in a pre-existing cut in the side of the tree. If now we want to explain this set of phenomena, we shall be concerned with differences in the cut face of the tree, differences in the retina of the man, differences in his central nervous system, differences in his efferent neural messages, differences in the behavior of his muscles, differences in how the axe flies, to the differences which the axe then makes on the face of the tree. Our explanation (for certain purposes) will go round and round that circuit. In principle, if you want to explain or understand anything in human behavior, you are always dealing with total circuits, completed circuits. This is the elementary cybernetic thought.

Gregory Bateson, Steps to an ecology of mind