Flux RSS

mardi 19 juillet 2016

que faire d'Iramuteq ?

soient nos entretiens avec 7 acteurs de la gestion effective des continuums de végétation et de milieux que l'on regroupe sous le terme de Trame Verte et Bleue (TVB)

il est possible de traiter ceux- ci avec Iramuteq (Interface de R pour les Analyses Multidimensionnelles de Textes et de Questionnaires)

une première analyse proposée par Iramuteq nous donne une afc que l'on peut exporter vers R à partir du fichier tableafcm.csv et permettre son édition avec la superposition des sources d'entretiens sur le plan de distribution des formes actives (les mots qui comptent dans la différentiation de ces entretiens), ce qui n'est pas proposé par Iramuteq


> table<-read.table("tab_tvb.txt",header=T)
> table[1:5,]
         CR_BZH Camp Chambagri_56 DREAL Grand_Bassin_Oust Maire Adjoint
accord        2    0            5     0                 1     1       2
acteur       35    3            3     9                 3     0       0
action       27    2            8    12                 1     4       3
activite      3    6            3     0                 0     3       0
adjoint       0    0            0     0                 0     1       9
> afct<-ca(table)
> plot(afct)

#il est ensuite possible de transformer le tableau initial qui présente les formes actives (mots qui comptent) en lignes et entretiens en colonnes en collant avec transposition sous excel dans un nouveau fichier

> tabt<-read.table("tab_tvb_trsp.txt",header=T)
> tabt

# à partir de cette nouvele table, la librairie {vegan} de R permet de faire un calcul de distance

> dist <- vegdist(tabt,method="jaccard")
> dist
                     CR_BZH      Camp Chambagri_56     DREAL Grand_Bassin_Oust     Maire
Camp              0.6946032                                                            
Chambagri_56      0.6481013 0.7336924                                                  
DREAL             0.8084147 0.8205714    0.8441011                                     
Grand_Bassin_Oust 0.7487981 0.6655022    0.6745050 0.8449782                           
Maire             0.6911847 0.6768429    0.7138246 0.8713299         0.6810534         
Adjoint           0.7885215 0.7529200    0.7807552 0.8736196         0.6943675 0.6490658

cette matrice de distance peut ensuite être présentée de manière appropriée pour Trex

7
CR_BZH 0 0.6946032 0.6481013 0.8205714 0.7487981 0.6911847 0.7885215
Camp 0.6946032 0 0.7336924 0.8205714 0.6655022 0.6768429 0.7529200
Chambagri_56 0.6481013 0.7336924 0 0.8441011 0.6745050 0.7138246 0.7807552
DREAL 0.8084147 0.8205714 0.8441011 0 0.8449782 0.8713299 0.8736196                  
Grand_Bassin_Oust 0.7487981 0.6655022 0.6745050 0.8449782 0 0.6810534 0.6943675            
Maire 0.6911847 0.6768429 0.7138246 0.8713299 0.6810534 0 0.6490658
Adjoint 0.7885215 0.7529200 0.7807552 0.8736196 0.6943675 0.6490658 0

qui nous édite un arbre de distance lexicale entre les différents entretiens

cependant Iramuteq peut faire un peu mieux, puisqu'il est capable de faire une mesure de la cooccurence de ces formes à partir de la méthode Reinert que l'on trouve aussi dans Alceste
> un découpage des texte en segments de 40 occurrences
> une classification des segments de textes selon la présence de formes communes en leur sein
#le positionnement des entretiens selon ce plan est aussi disponible
#il est possible ensuite de revenir sur le corpus qui peut être colorié selon les différentes classes dans un fichier .html



#et l'identification des classes computées par le logiciel

# à partir du tableau des antiprofils ou formes significativement absentes de la classe, il est possible de représenter un choix de formes selon leur chi2 au sein de chaque classe



# ce sont des classes qui sont donc construites selon les similitudes entre segments de 40 occurrences, que l'on peut qualifier de "mondes lexicaux".  La segmentation, proximité, le mélange ou la distance entre ces "mondes lexicaux" pourrait peut-être nous donner une idée des "mondes sociaux"* au sein desquels évoluent les acteurs.
Nous sommes encore loin d'avoir décrit avec cet outils les nuances de l'interaction de ces acteurs avec les autres actants et acteurs de la TVB, cependant nous bénéficions là d'une première analyse pour identifier les enjeux importants des uns et des autres, et d'une entrée en matière pour l'analyse selon les concepts patrimoniaux de Montgolfier et Natali (1987) afin de définir les richesses, menaces, sources d’adaptabilité, cohérence interne et externe de chacun d'entre eux et des convergences et divergences majeures entre acteurs sur ces plans, ainsi que les arènes où l'action collective au sujet de la TVB se met en place.

*«le réseau de tous ceux dont les activités, coordonnées grâce à une connaissance commune des moyens conventionnels de travail, concourent à la production des œuvres de ce monde ». (Howard Becker, 1982 p22)

# une autre possibilité d'exploitation des données réside dans l'analyse de similitude exploitant la librairie igraph de R, et permet de construire un réseau de formes  avec représentation des communautés selon cet indice ; l'exemple ci-dessous est réalisé en effectuant une sélection restreinte des formes à figurer dans le réseau, son interprétation est moins évidente que l'analyse de Reinert, mais elle peut en être complémentaire




De Montgolfier, J., & Natali, J. M. (1987). Le patrimoine du futur. Approches pour une gestion patrimoniale des ressources naturelles.
Becker Howard (1982), Les mondes de l'art, Champs Arts, édition 2010



mercredi 6 juillet 2016

urbanité nicheuse comparée par les arbres

Soit un inventaire de l'avifaune nicheuse rennaise réalisé en 1988 par Jo Le Lannic [http://ecographe.pagesperso-orange.fr/pab_nav.html ], est-il possible d'employer ces oiseaux comme des descripteurs de la similarité des formes des trames verte, bleues et minérales de cette urbanité ?

Nous avons les 16 carrés de 1x1km comme maille d'échantillonnage sur fond d'image Landsat de 1990 :


Nous avons aussi les carte d'abondance selon les mailles de ce quadrat pour les différentes espèces



Un calcul de distance entre les mailles avec l'indice de similarité de Jaccard  est effectué à partir des données de présence absence des différentes espèces (outil ADE4 de R) :
16
Bellangeraie 0.0000 0.5987 0.6409 0.5951 0.5976 0.5843 0.5436 0.5890 0.5563 0.6742 0.6820 0.5436 0.7559 0.6362 0.6325 0.5000
Tauveraie 0.5987 0.0000 0.5000 0.6325 0.6389 0.6292 0.5941 0.5774 0.6325 0.6547 0.6851 0.6443 0.7874 0.6928 0.7348 0.6143
Gayeulles_O 0.6409 0.5000 0.0000 0.5774 0.7004 0.6934 0.5883 0.5443 0.6262 0.6716 0.6782 0.5883 0.8126 0.7071 0.7276 0.6754
Gayeulles_E 0.5951 0.6325 0.5774 0.0000 0.6667 0.6571 0.5578 0.5053 0.6325 0.7071 0.6647 0.5898 0.8028 0.6470 0.6726 0.6389
Cimetière_N 0.5976 0.6389 0.7004 0.6667 0.0000 0.5145 0.6547 0.6325 0.5270 0.6689 0.6778 0.6247 0.6742 0.6236 0.5303 0.6470
Gros-Chêne 0.5843 0.6292 0.6934 0.6571 0.5145 0.0000 0.5774 0.6216 0.5927 0.5855 0.5941 0.4932 0.6614 0.5222 0.5080 0.5701
Maurepas 0.5436 0.5941 0.5883 0.5578 0.6547 0.5774 0.0000 0.5164 0.5477 0.6439 0.5452 0.4939 0.7583 0.5991 0.6602 0.5641
Long-Champs 0.5890 0.5774 0.5443 0.5053 0.6325 0.6216 0.5164 0.0000 0.5963 0.6498 0.5976 0.5164 0.7746 0.6100 0.6362 0.5774
Hôtel-Dieu 0.5563 0.6325 0.6262 0.6325 0.5270 0.5927 0.5477 0.5963 0.0000 0.5927 0.5606 0.6172 0.6969 0.5774 0.6094 0.6100
Thabor 0.6742 0.6547 0.6716 0.7071 0.6689 0.5855 0.6439 0.6498 0.5927 0.0000 0.4399 0.6124 0.6614 0.5688 0.6761 0.7372
Jeanne_d_Arc 0.6820 0.6851 0.6782 0.6647 0.6778 0.5941 0.5452 0.5976 0.5606 0.4399 0.0000 0.6202 0.6720 0.4752 0.6513 0.6988
Beaulieu 0.5436 0.6443 0.5883 0.5898 0.6247 0.4932 0.4939 0.5164 0.6172 0.6124 0.6202 0.0000 0.7338 0.5620 0.5528 0.5283
Mairie 0.7559 0.7874 0.8126 0.8028 0.6742 0.6614 0.7583 0.7746 0.6969 0.6614 0.6720 0.7338 0.0000 0.6476 0.6831 0.7715
Oberthur 0.6362 0.6928 0.7071 0.6470 0.6236 0.5222 0.5991 0.6100 0.5774 0.5688 0.4752 0.5620 0.6476 0.0000 0.5388 0.6247
Villebois-Mareuil 0.6325 0.7348 0.7276 0.6726 0.5303 0.5080 0.6602 0.6362 0.6094 0.6761 0.6513 0.5528 0.6831 0.5388 0.0000 0.5849
Plaine_de_Baud 0.5000 0.6143 0.6754 0.6389 0.6470 0.5701 0.5641 0.5774 0.6100 0.7372 0.6988 0.5283 0.7715 0.6247 0.5849 0.0000

La méthode des arbres additifs (Sattah et Tversky (1977) permet de représenter les proximités entre mailles sous forme d’un arbre
valué à distance additive composé de sommets correspondant aux mailles à classer et de nœuds internes reliés par des arêtes.
Une interface permettant de faire le calcul (ADDTREE) et de produire le graphe est disponible en ligne à http://www.labunix.uqam.ca/~makarenv/trex.html

L'arbre obtenu permet ensuite de visualiser la proximité des différentes mailles selon leur populations d'oiseaux nicheurs. La particularité de ces similarités est d'intégrer une dimension verticale à travers la structuration de la végétation qui détermine pour une part importante la présence des différentes espèces, ainsi que la dimension des réseaux trophiques qui assurent la nourriture de ces espèces. Ces dimensions sont absentes de l'imagerie satellitaire, il serait donc intéressant de comparer la similarité entre les mailles que peuvent donner les différentes signatures spectrales de l'image satellite....

Il est aussi possible de passer par la librairie {vegan} de R pour obtenir une matrice de distance selon l'indice de Gower puis un arbre de distance minimale



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é