rzine-reviews / place-rzine

This repository introduces the concept of "places" in network analysis and shows how to use the "Places" R package.
0 stars 0 forks source link

Evaluation article Places #1

Open beauguitte opened 9 months ago

beauguitte commented 9 months ago

La proposition de Cécile Armand correspond tout à fait à la politique éditoriale de RZine et respecte les critères attendus. Les champs demandés sont présents (résumé, citation, etc.), le texte est clair et bien structuré, le script fonctionne sans problème et la démarche proposée peut être intéressante en SHS.

La principale suggestion de modification concerne les parties 2 et 3 de la proposition. En effet, à partir de la 2.3, l'autrice nous propose un tutoriel sur l'analyse de réseau unimodal avec igraph (métriques usuelles, détection de communautés), sujet sur lequel il existe déjà beaucoup de documentation disponible en ligne. Peut-être serait-il plus intéressant d'avoir une comparaison entre les résultats obtenus avec une projection classique (du two-mode au réseaux unimodaux valués) et la projection basée sur Places. En effet, l'apport thématique de cette formalisation de données n'apparaît pas évidente à la lecture.

En ce qui concerne la structure d'ensemble, le Glossary gagnerait à être remonté avant les annexes.

Concernant les données, ajouter le nom de l'autrice, la date et la licence dans le fichier metadata.md.

Je détaille par la suite mes observations et suggestions au fil du texte ; il va de soi que l'autrice est tout à fait libre de ne prendre en compte que les remarques qui lui semblent pertinentes.

NB : le package Places n'est pas disponible sur le CRAN ; l'auteur du package a été contacté pour savoir si un dépôt était envisagé dans un futur proche.

Remarques

L59 : "The first approach, which applies algorithms developed for one-mode networks, disregards the unique characteristics of two-mode data and introduces biases [...]. The second approach involves projecting the original two-mode network into two separate one-mode networks". Une troisième approche, mise en oeuvre notamment dans les travaux sur les interlocks depuis les années 1970 ou en écologie, et plus récemment dans des disciplines autres, conserve la structure bimodale du réseau étudié.

L67 : "it draws inspiration from the concept of structural equivalence in network analysis, originally introduced by sociologist Narciso Pizarro" Reformuler la phrase s'il s'agit de préciser que Pizarro a introduit le concept pour les réseaux bimodaux ; le concept d'équivalence étant utilisé en social network analysis depuis les années 1970 (articles de Lorrain et White notamment).

L70 : la note avec la définition de l'équivalence régulière est également présente L693.

L164: "The input data must be in a two-mode edge list format" : l'expression "two-mode edge list format" ne me paraît pas utile ; il n'existe pas à ma connaissance de format standard pour ce type de données et, de plus, les deux lignes suivantes expliquent ce qui est attendu par le package Places.

L164 et plus généralement, l'ensemble des listes dont les termes définis sont en italiques (L187 et sq, L373 et sq, L709 et sq) L'italique donne un résultat assez médiocre en html, je suggérerais soit de mettre les termes en gras, soit de placer un espace avant et après les ":" pour améliorer le rendu html.

L211 et L219 : il serait bienvenu d'enrichir le code de la fonction hist, au moins pour le label de l'axe des abscisses.

L214 : "most places (179, 80%)" : à reformuler, une lecture rapide donne l'impression d'un 179,80%. Mettre par exemple "179 places, representing 80% of the total".

L214 "These places perfectly identified with the students." Mon anglais n'est pas fluent at all mais je me demande si "are perfectly identified" ne conviendrait pas mieux.

L221 Ajouter un saut de ligne pour assurer un placement correct de "Most"

L221 "This suggests that many students were relatively during their studies" : il semble manquer un adjectif après "relatively"

L232 "kable_styling(bootstrap_options = "striped", " ce n'est pas l'objet du tutoriel mais un mot sur l'intérêt et l'utilisation de la fonction kable serait bienvenu, ne serait-ce que pour expliciter le choix des arguments utilisés dans le script.

L305 et sq : "To build a network of places linked by universities, we begin by creating an adjacency matrix from the edgelist:" Commenter les lignes du chunk (L309-L311) serait utile, histoire de rappeler comment on passe du bimodal à l'unimodal (multiplication par la transposée et donc définition du terme, diagonale à 0). La matrice d'adjacence est carrée pour un réseau unimodal, il est fréquent qu'elle soit rectangulaire pour un réseau bimodal ("an adjacency matrix is a square matrix used to represent a finite graph"). La précision disciplinaire ("In graph theory and computer science") ne paraît pas indispensable ; à ma connaissance, toutes les disciplines mobilisant l'analyse de réseau utilisent les matrices d'adjacence.

L335 : Je suis dubitatif sur l'intérêt d'utiliser des " network analysis softwares" comme Gephi et Cytoscape, sauf s'il s'agit d'explorer visuellement le réseau. Tout ce qui est analyse est plus rapide et plus complet dans igraph. Je remplacerais donc "At this stage, it is suggested" par "If you aim to inspect visualy your network, using Gephi or Cytiscape might help. In this case, you have to etc. etc.". Pourquoi ne pas prendre l'ordre l'alphabétique (Cytoscape or Gephi) ?

L282 : "In this document, we interchangeably use the terms “vertex” (plural: “vertices”) and “node(s)” to refer to the network’s nodes. We alternatively employ the terms “edge(s)” and “tie(s)” to designate the network’s edges." A remonter à la première occurrence du terme node (L57)

Partie 2.3 et 3 : il me semble qu'on a affaire ici à un tutoriel (bien fait, bien présenté et bien construit) sur de l'analyse de réseau unimodal classique (valué) et que la dimension bimodale de l'analyse n'apparaît plus. Comme je l'ai écrit dans les premières lignes, il existe déjà beaucoup de tutoriaux sur ces aspects. Peut-être serait-il plus intéressant ici d'avoir une comparaison entre ce qu'on obtient avec une projection classique en unimodal et la projection créée avec Places. Si l'autrice ne souhaite pas modifier sa proposition dans ce sens, je me permets quelques remarques sur ces deux sections.

L404: "The results indicate that the two networks are undirected, weighted networks" : ce sont les options choisies lors de la transformation, il ne s'agit pas tout à fait d'un résultat inattendu. Par ailleurs, le N renvoie à Namned (les sommets ont un attribut Name) et non à Network.

L411 "Graph density is useful mostly when comparing different networks." Oui s'ils sont d'ordre similaire (nombre de sommets proche), sinon ce n'est pas le cas, la densité ayant tendance à diminuer quand le nombre de sommets augmente.

L418 : "The two networks comprise 39 components each. This property illustrates the duality of two-mode networks." Je ne comprends pas la deuxième phrase. Selon le type de réseau bimodal étudié, on peut obtenir un réseau connexe ou non.

L447: "Degree" : les réseaux projetés étant valués, pourquoi ne pas indiquer qu'il est possible de calculer un degré pondéré par l'intensité des liens ?

L449 : La mesure de la betweenness est courante ; dans le cas de la projection d'un réseau bimodal, je ne sais pas comment elle est interprétée ou interprétable et peut-être faut-il le préciser.

L502 "finding communities in large networks" : la taille du réseau ici ne plaide pas nécessairement pour le choix du Louvain. le résultat est d'ailleurs peu concluant si l'on examine la figure ensuite. Si l'autrice souhaite conserver cette partie, peut-être présenter les résultats obtenus avec un ou deux algorithmes de détection de communautés.

L523: Quelle est la source pour la limite inférieure de la modularité (-0.5) ? L'intensité des liens est-elle prise en compte ? Il serait utile d'indiquer le code correspondant.

L538 et 539 : il me semble que l'utilisation de la fonction plot.communities d'igraph permet de se passer de cette étape. Idem pour les lignes 559 et 560.

L687 à 690 : harmoniser la mise en forme avec ce qui a été utilisé dans les sections précédentes (italiques, ou passer au gras).

L709 à 112 : harmoniser la mise en forme (les : sont utilisés dans les sections précédentes et dans le premier item)

L739 "This tutorial has demonstrated the significant potential of a place-based approach to two-mode networks." Le tutoriel montre comment utiliser ce package ; sa lecture ne m'apparait pas totalement convaincante à ce stade pour justifier l'approche proposée par Places. " it can be extended to multimodal networks involving more than two different types of nodes." indiquer une référence ou développer ce point, l'analyse de réseau 3 mode ou plus restant très marginale à ma connaissance.

L774 : year = "2023" ?

Les références suivantes sont présentes dans la bibliographie mais non appelées dans le texte :

Remarque finale

Comme très souvent dans la littérature sur le sujet, two-mode et bipartite sont considérés comme des termes synonymes (cf le titre et le sous-titre et la note 1). Or, on a bien affaire ici à un réseau bimodal. Je propose de remplacer bipartite par two-mode dans l'ensemble du texte. En théorie des graphes, les sommets d'un graphe biparti peuvent être divisés en deux ensembles tels que les liens soient présents uniquement entre ces deux ensembles et tout arbre, par exemple, est un graphe biparti. Les graphes bimodaux sont tous bipartis mais l'inverse n'est pas vrai.

beauguitte commented 23 hours ago

Merci Cécile pour la version révisée qui me paraît très claire, intéressante et bien structurée. Il reste une poignée de bricoles ortho-typo à corriger mais en ce qui me concerne, c'est bon à publier.

Liste des remarques de détail

Ligne 97 : "Note that visualization is not igraph's main strength" Pourquoi igraph en italique alors que tidygraph ne l'est pas dans la phrase suivante. networkD3 n'a pas été mis à jour depuis 2017, est-ce utile de le signaler ? Sachant que ça fait 5 ans qu'il n'y pas d'activités sur le github du package (https://github.com/christophergandrud/networkD3).

Très léger travail d'harmonisation de la ponctuation à fournir concernant les listes. Lignes 121-127. Il manque un point après Japanese) Il serait aussi possible de les supprimer dans les autres items (comme dans la liste suivante) (lignes 139-143). Lignes 196-199 : soit mettre des points à chaque fois, soit ne pas en mettre. Idem ligne 511.

Même travail d'harmonisation à fournir concernant les packages et les noms de fonction (parfois en italique, parfois en gras, une fois entre guillemets ligne 364). Le gras me paraît plus lisible en html mais c'est peut-être un biais personnel.

Figure 2 : interactive version à ouvrir de préférence dans un nouvel onglet par défaut (lignes 146-147)

Ligne 195: "PlaceNumber:contains" manque un espace

Ligne 272: "This suggests that many students were relatively during their studies and transferred to a different institution to complete their training." : il semble manquer un verbe après were

Ligne 835 "k:a natural number" : manque un espace

Lignes 854-857 : soit deux points après chaque élément en gras et la description ensuite - comme les listes précédentes et la ligne 854. Soit des phrases sans les deux points mais dans ce cas, harmoniser.

Dans le Glossary Ligne 381: "an adjacency matrix is a square matrix used to represent a finite graph". Supprimer square permettrait de gagner en généralité et d'inclure les matrices d'adjacence le plus souvent rectangulaires des réseaux bimodaux.

Le terme "Regular equivalence" apparait deux fois

J'ai testé les chunks, tout fonctionne, mais igraph renvoie quelques warnings que je signale ici

lignes 525-526 Avis : graph.density() was deprecated in igraph 2.0.0. Please use edge_density() instead

lignes 523-533 Avis : no.clusters() was deprecated in igraph 2.0.0. Please use count_components() instead

lignes 576-577 Avis : induced.subgraph() was deprecated in igraph 2.0.0. Please use induced_subgraph() instead. Avis : clusters() was deprecated in igraph 2.0.0. Please use components() instead.

ligne 583 Avis : evcent() was deprecated in igraph 2.0.0. Please use eigen_centrality() instead.

Si l'autrice modifie les chunks pour que ces warnings n'apparaissent plus, attention à modifier également le texte précédent les chunks.