https://edutechwiki.unige.ch/fmediawiki/index.php?title=Analyse_de_r%C3%A9seaux_avec_R&feed=atom&action=historyAnalyse de réseaux avec R - Historique des versions2024-03-29T00:06:33ZHistorique des versions pour cette page sur le wikiMediaWiki 1.39.6https://edutechwiki.unige.ch/fmediawiki/index.php?title=Analyse_de_r%C3%A9seaux_avec_R&diff=161077&oldid=prevKenneth Rioja : modification des balises <source> en <source lang="R">2022-03-28T08:24:31Z<p>modification des balises <source> en <source lang="R"></p>
<a href="https://edutechwiki.unige.ch/fmediawiki/index.php?title=Analyse_de_r%C3%A9seaux_avec_R&diff=161077&oldid=161074">Voir les modifications</a>Kenneth Riojahttps://edutechwiki.unige.ch/fmediawiki/index.php?title=Analyse_de_r%C3%A9seaux_avec_R&diff=161074&oldid=prevKenneth Rioja : finished!2022-03-27T21:27:05Z<p>finished!</p>
<a href="https://edutechwiki.unige.ch/fmediawiki/index.php?title=Analyse_de_r%C3%A9seaux_avec_R&diff=161074&oldid=161073">Voir les modifications</a>Kenneth Riojahttps://edutechwiki.unige.ch/fmediawiki/index.php?title=Analyse_de_r%C3%A9seaux_avec_R&diff=161073&oldid=prevKenneth Rioja : critiques à finir2022-03-27T09:03:23Z<p>critiques à finir</p>
<table style="background-color: #fff; color: #202122;" data-mw="interface">
<col class="diff-marker" />
<col class="diff-content" />
<col class="diff-marker" />
<col class="diff-content" />
<tr class="diff-title" lang="fr">
<td colspan="2" style="background-color: #fff; color: #202122; text-align: center;">← Version précédente</td>
<td colspan="2" style="background-color: #fff; color: #202122; text-align: center;">Version du 27 mars 2022 à 10:03</td>
</tr><tr><td colspan="2" class="diff-lineno" id="mw-diff-left-l201">Ligne 201 :</td>
<td colspan="2" class="diff-lineno">Ligne 201 :</td></tr>
<tr><td class="diff-marker"></td><td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><div>[[Image:networkana_graph5.jpeg]]</div></td><td class="diff-marker"></td><td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><div>[[Image:networkana_graph5.jpeg]]</div></td></tr>
<tr><td class="diff-marker"></td><td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><br/></td><td class="diff-marker"></td><td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><br/></td></tr>
<tr><td class="diff-marker" data-marker="−"></td><td style="color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;"><div>Nous pouvons maintenant voir les interactions entre étudiant·e·s et exercices assez clairement. </div></td><td class="diff-marker" data-marker="+"></td><td style="color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;"><div>Nous pouvons maintenant voir les interactions entre étudiant·e·s et exercices assez clairement. <ins style="font-weight: bold; text-decoration: none;">En effet, les exercices p23, p6 et p54 semblent être les trois exercices les plus visualisés. Si nous partons de l'hypothèse que plus un exercice est visualisé, plus il suscite de la difficulté chez l'étudiant·e, alors un conseil pour l'enseignant·e serait de revoir soit la façon dont ces exercices sont présentés, soit le cours associé à ces exercices.</ins></div></td></tr>
<tr><td colspan="2" class="diff-side-deleted"></td><td class="diff-marker" data-marker="+"></td><td style="color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;"><div> </div></td></tr>
<tr><td colspan="2" class="diff-side-deleted"></td><td class="diff-marker" data-marker="+"></td><td style="color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;"><div><ins style="font-weight: bold; text-decoration: none;">De plus, certains étudiant·e·s sont pointé·e·s (s69, s90, s100, s422), montrant alors que ces dernier·ère·s ont un peu plus de difficultés (ou un autre problème) que leurs camarades. Il serait donc conseillé pour l'enseignant·e de faire attention à ces étudiant·e·s afin de les aider au mieux.</ins></div></td></tr>
<tr><td colspan="2" class="diff-side-deleted"></td><td class="diff-marker" data-marker="+"></td><td style="color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;"><div> </div></td></tr>
<tr><td colspan="2" class="diff-side-deleted"></td><td class="diff-marker" data-marker="+"></td><td style="color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;"><div><ins style="font-weight: bold; text-decoration: none;">Enfin, la structure générale montre aussi d'autres patterns qu'il serait nécessaire d'approfondir : quels sont les étudiant·e·s qui ont du mal avec plusieurs exercices (ex. entre p114 et p181), quel est le point commun entre les exercices qui sont pointés : même matière? même thème? moment de l'année?</ins></div></td></tr>
<tr><td class="diff-marker"></td><td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><br/></td><td class="diff-marker"></td><td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><br/></td></tr>
<tr><td class="diff-marker"></td><td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><div>==Types de graphiques==</div></td><td class="diff-marker"></td><td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><div>==Types de graphiques==</div></td></tr>
<tr><td colspan="2" class="diff-lineno" id="mw-diff-left-l237">Ligne 237 :</td>
<td colspan="2" class="diff-lineno">Ligne 241 :</td></tr>
<tr><td class="diff-marker"></td><td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><div>Pour d'autres graphiques de ce type, voir https://yunranchen.github.io/intro-net-r/igraph.html#community-detection</div></td><td class="diff-marker"></td><td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><div>Pour d'autres graphiques de ce type, voir https://yunranchen.github.io/intro-net-r/igraph.html#community-detection</div></td></tr>
<tr><td class="diff-marker"></td><td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><br/></td><td class="diff-marker"></td><td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><br/></td></tr>
<tr><td class="diff-marker" data-marker="−"></td><td style="color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;"><div>==Analyse critique de l'outil==</div></td><td class="diff-marker" data-marker="+"></td><td style="color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;"><div>==Analyse critique de l'outil <ins style="font-weight: bold; text-decoration: none;">- Limites</ins>==</div></td></tr>
<tr><td colspan="2" class="diff-side-deleted"></td><td class="diff-marker" data-marker="+"></td><td style="color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;"><div> </div></td></tr>
<tr><td colspan="2" class="diff-side-deleted"></td><td class="diff-marker" data-marker="+"></td><td style="color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;"><div><ins style="font-weight: bold; text-decoration: none;">La première limite à cet outil est l'accessibilité, en outre il faudra être un minimum à l'aise avec la syntaxe de R et savoir comment l'utiliser de manière basique. La page EduTechWiki [Premiers_pas_avec_R] est un bon point de départ pour commencer avec R.</ins></div></td></tr>
<tr><td class="diff-marker"></td><td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><br/></td><td class="diff-marker"></td><td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><br/></td></tr>
<tr><td class="diff-marker" data-marker="−"></td><td style="color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;"><div>Comme le disent [http://ceur-ws.org/Vol-2868/article_7.pdf Poquet et al. (2021)], la construction d'un réseau dépend des choix faits par les chercheur·euse·s, en outre les choix de ce qui est étudié (noeuds), quelles interactions vont être choisies (liens) et la façon dont laquelle la force entre les liens doit être considérée (poids). Ces choix influencent la façon dont le réseau est construit et impactent indirectement l'interprétation du/de la chercheur·euse.</div></td><td class="diff-marker" data-marker="+"></td><td style="color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;"><div><ins style="font-weight: bold; text-decoration: none;">Une autre limite de cet outil est le caractère flou de la façon dont ces graphiques sont créés. Malgré le fait de reproduire les mêmes graphiques (reproducibilité), il reste difficile pour l'utilisateur·trice novice de déterminer ''pourquoi'' certains noeuds sont plus visibles que d'autres. Il faudra donc être prudent quant à l'utilisation et la lecture de vos graphiques. En l'occurence, il sera judicieux de savoir exactement ce que signifient vos noeuds, vos arêtes et le poids que vous leur donnez. </ins>Comme le disent [http://ceur-ws.org/Vol-2868/article_7.pdf Poquet et al. (2021)], la construction d'un réseau dépend des choix faits par les chercheur·euse·s, en outre les choix de ce qui est étudié (noeuds), quelles interactions vont être choisies (liens) et la façon dont laquelle la force entre les liens doit être considérée (poids). Ces choix influencent la façon dont le réseau est construit et impactent indirectement l'interprétation du/de la chercheur·euse.</div></td></tr>
<tr><td class="diff-marker"></td><td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><br/></td><td class="diff-marker"></td><td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><br/></td></tr>
<tr><td class="diff-marker" data-marker="−"></td><td style="color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;"><div>==Recommandations <del style="font-weight: bold; text-decoration: none;">pour les études utilisant </del>cet outil==</div></td><td class="diff-marker" data-marker="+"></td><td style="color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;"><div>==Recommandations <ins style="font-weight: bold; text-decoration: none;">quant à l'utilisation de </ins>cet outil==</div></td></tr>
<tr><td class="diff-marker"></td><td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><br/></td><td class="diff-marker"></td><td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><br/></td></tr>
<tr><td class="diff-marker"></td><td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><div>Voir [http://ceur-ws.org/Vol-2868/article_7.pdf Poquet et al. (2021)] : </div></td><td class="diff-marker"></td><td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><div>Voir [http://ceur-ws.org/Vol-2868/article_7.pdf Poquet et al. (2021)] : </div></td></tr>
<tr><td colspan="2" class="diff-lineno" id="mw-diff-left-l247">Ligne 247 :</td>
<td colspan="2" class="diff-lineno">Ligne 253 :</td></tr>
<tr><td class="diff-marker"></td><td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><div>* Quels sont les noeuds (nodes) et leur pertinence face au contexte, à la théorie, ou la question de recherche?</div></td><td class="diff-marker"></td><td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><div>* Quels sont les noeuds (nodes) et leur pertinence face au contexte, à la théorie, ou la question de recherche?</div></td></tr>
<tr><td class="diff-marker"></td><td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><br/></td><td class="diff-marker"></td><td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><br/></td></tr>
<tr><td class="diff-marker" data-marker="−"></td><td style="color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;"><div>* Quels sont les liens (edges), et que représentent-ils? </div></td><td class="diff-marker" data-marker="+"></td><td style="color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;"><div>* Quels sont les liens (edges), et que représentent-ils<ins style="font-weight: bold; text-decoration: none;">? Quelles sont les hypothèses liées à la définition de vos liens et quelles sont vos justifications</ins>?</div></td></tr>
<tr><td class="diff-marker"></td><td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><br/></td><td class="diff-marker"></td><td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><br/></td></tr>
<tr><td class="diff-marker"></td><td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><div>==Références== </div></td><td class="diff-marker"></td><td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><div>==Références== </div></td></tr>
</table>Kenneth Riojahttps://edutechwiki.unige.ch/fmediawiki/index.php?title=Analyse_de_r%C3%A9seaux_avec_R&diff=161066&oldid=prevKenneth Rioja : grands points finis2022-03-27T08:34:58Z<p>grands points finis</p>
<a href="https://edutechwiki.unige.ch/fmediawiki/index.php?title=Analyse_de_r%C3%A9seaux_avec_R&diff=161066&oldid=161065">Voir les modifications</a>Kenneth Riojahttps://edutechwiki.unige.ch/fmediawiki/index.php?title=Analyse_de_r%C3%A9seaux_avec_R&diff=161065&oldid=prevKenneth Rioja : first!2022-03-25T23:14:08Z<p>first!</p>
<p><b>Nouvelle page</b></p><div>==Introduction==<br />
<br />
L'analyse de réseaux (en anglais, 'network analysis' ou 'NA') est une des approches méthodologiques les plus populaires utilisée en [https://edutechwiki.unige.ch/en/Learning_analytics analytique de l'apprentissage] (Romero & Ventura, 2020). [http://ceur-ws.org/Vol-2868/article_7.pdf Poquet et al. (2021)] indiquent que l'analyse de réseaux permet la modélisation et l'analyse de données relationnelles en éducation. Selon ces auteurs, un réseau est composé d'un groupe d'entités ou d'éléments appelés noeuds ('nodes') ou sommets ('vertices') et une relation qui les connecte que l'on appelle arêtes ('edge') ou lien ('link'). Ainsi, la visualisation créée via l'analyse de réseau peut être utile pour cartographier les relations et les interactions, identifier des schémas/patterns d'interaction, identifier les étudiant·e·s actif·ve·s et inactif·ve·s et détecter le rôle de certain·e·s étudiant·e·s ou enseignant·e·s. <br />
<br />
Cette page vous montrera un exemple d'analyse de réseaux entre des étudiant·e·s et leur nombre de visualisation à un exercice. Nous verrons donc quels sont les exercices qui sont le plus visualisés et les liens entre les exercices les plus fréquemment visualisés. De plus, nous aurons aussi une cartographie des étudiant·e·s qui ont besoin de visualiser certains exercices plus que d'autres. <br />
<br />
Nous allons utiliser la librairie <code>igraph</code>, librairie la plus accessible pour certain·e·s et la plus téléchargée (voir Figure 1.2 dans https://robwiederstein.github.io/network_analysis/intro.html).<br />
<br />
==Préparation des données==<br />
<br />
===Téléchargement des données sur votre ordinateur===<br />
<br />
Les données utilisées proviennent du set 'Data Files for KDD Cup 2010' en accès libre sur DataShop (https://pslcdatashop.web.cmu.edu/Files?datasetId=4524)). Une fois connecté·e à DataShop, téléchargez les données "Algebra I 2005-2006, A development data set; 575 students, 813,661 steps". Décompressez le zip et créez un fichier .R dans le dossier fraichement décompressé 'algebra_2005_2006'.<br />
<br />
===Importer les données dans RStudio===<br />
<br />
Ouvrez RStudio et exécutez le code ci-dessous :<br />
<br />
<source><br />
## effacer l'environnement<br />
rm(list=ls())<br />
<br />
## librairies utilisées<br />
# install.packages("pacman") # à exécuter si pas déjà installé<br />
library(pacman)<br />
pacman::p_load(igraph,<br />
dplyr<br />
)<br />
<br />
## définir le répertoire de travail au répertoire actuel (./algebra_2005_2006/)<br />
setwd(dirname(rstudioapi::getSourceEditorContext()$path))<br />
<br />
## importer les données<br />
data <- read.table("algebra_2005_2006_master.txt", sep="\t", header = T)<br />
</source><br />
<br />
Vous devez maintenant avoir dans votre environnement le data frame 'data' avec 3967 obs. de 19 variables<br />
<br />
> str(data)<br />
'data.frame': 3967 obs. of 19 variables:<br />
<br />
===Préparation des 'egdes' et 'nodes'===<br />
<br />
Les colonnes/variables qui vont nous intéresser sont :<br />
<br />
* <code>Anon.Student.Id</code> : Identifiant (id) de l'étudiant·e, qui servira de noeud (node) = la ''source''<br />
* <code>Problem.Name</code> : Nom de l'exercice, qui servira de noeud (node) = la ''cible''<br />
* <code>Problem.View</code> : Nombre de fois où l'exercice a été visualisé, qui servira de ''poids'' (weight) dans les liens entre les différents noeuds (étudiant·e - exercice).<br />
<br />
Afin de limiter notre visualisation à un nombre restreint de noeuds et ne pas voir TOUS les exercices visualisés par les 575 étudiant·e·s de notre jeu de données, nous allons nous intéresser seulement aux exercices qui ont été visualisés plus de 5 fois.<br />
<br />
> table(data$Problem.View)<br />
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 28 (nombre de visualisation d'un exercice)<br />
2930 582 165 103 61 41 19 14 8 12 14 5 2 3 2 1 1 1 1 1 1 (occurence)<br />
<br />
Nous allons maintenant créer les data frames <code>edges</code> et <code>nodes</code> qui contiendront les données nécessaires à la création du réseau.<br />
<br />
Le data frame <code>edges</code> contiendra obligatoirement en première colonne les noeuds 'sources' en deuxième colonne les noeuds 'cibles' (ce qui formera les arêtes/liens). '''Toutes les colonnes supplémentaires seront considérées comme des attributs (voir plus bas)'''. Ici, on extraira de nos données l'attribut de 'poids' qui est le nombre de fois où l'étudiant·e a visualisé l'exercice.<br />
<br />
<source><br />
edges <- data.frame(data$Anon.Student.Id, data$Problem.Name, data$Problem.View) %>%<br />
rename(source = data.Anon.Student.Id,<br />
target = data.Problem.Name,<br />
weight = data.Problem.View) %>%<br />
filter(weight > 5)<br />
</source><br />
<br />
Le data frame <code>nodes_s</code> contiendra la liste de tous les étudiant·e·s. De même, le data frame <code>nodes_p</code> contiendra la liste de tous les exercices. La première colonne contiendra donc obligatoirement les noeuds et ''toute colonne supplémentaire sera considérée comme un attribut.'' Ici, on y ajoutera en deuxième colonne le 'nom court' des noeuds qui sera montré dans le réseau. <br />
<br />
<source><br />
nodes_s <- data.frame(unique(data$Anon.Student.Id)) %>%<br />
mutate("name" = paste0("s", row.names(.))) %>%<br />
rename(id = unique.data.Anon.Student.Id.)<br />
<br />
nodes_p <- data.frame(unique(data$Problem.Name)) %>%<br />
mutate("name" = paste0("p", row.names(.))) %>%<br />
rename(id = unique.data.Problem.Name.)<br />
</source><br />
<br />
Le data frame <code>nodes</code> réunit les deux data frames créés précédemment tout en gardant les noeuds filtrés dans le data frame <code>edges</code>. <br />
<br />
<source><br />
nodes <- rbind(nodes_s, nodes_p) %>%<br />
filter(id %in% edges$source | id %in% edges$target)<br />
</source><br />
<br />
===Création du graphique===<br />
<br />
Maintenant que les data frames des noeuds et des arêtes ont été créés, nous allons dresser le graphique correspondant grace à la fonction <code>graph_from_data_frame(d =..., vertices = ..., directed = FALSE</code> qui prend en arguments <code>d = ...</code> le data frame des noeuds (''nodes''), <code>vertices = ...</code> le data frame des arêtes (''edges'') et <code>directed = FALSE</code> pour signifier qu'il n'y a pas de direction entre les noeuds. L'exécution du code suivant donnera le graphique ci-après :<br />
<br />
g <- graph_from_data_frame(d = edges, vertices = nodes, directed = FALSE)<br />
set.seed(42)<br />
plot(g)<br />
<br />
[[Image:networkana_graph1.jpeg]]<br />
<br />
'''"Pas très joli", vous allez me dire.''' En effet, faisons en sorte de le rendre plus lisible grace aux fameux ''attributs''.<br />
<br />
===Visualisation des attributs===<br />
<br />
Les attributs seront tous les paramètres des noeuds et arêtes qui peuvent être modifiés afin de rendre le réseau plus lisible. Quasiment tout peut être modifié : la taille, la couleur, les labels, etc. On peut aussi les changer selon une condition (par exemple montrer les noms des noeuds seulement lorsqu'ils sont reliés à d'autres noeuds de façon forte). Avant de modifier, voyons quels attributs sont déjà présents dans notre graphique <code>g</code>.<br />
<br />
* <code>E(g)</code> : permet de voir les arêtes/liens (''''E'''dges') du graphique créé <code>g</code>. On peut lui assigner des attributs directement avec <code>$</code> (voir plus bas).<br />
<br />
* <code>edges_attr(g)</code> : permet de voir les ''attributs'' des arêtes (''''E'''dges) du graphique créé <code>g</code>. Si vous exécutez cette commande et avez suivi le tutoriel, vous verrez que <code>$weight</code> est montré :<br />
<br />
> edge_attr(g)<br />
$weight<br />
[1] 10 6 7 6 6 9 (...)<br />
<br />
:> il s'agit du nom de la troisième colonne de notre data frame <code>edges</code> ! Voyez-vous le lien ? Je vous explique : la fonction <code>graph_from_data_frame()</code> a traduit la troisième colonne de le data frame <code>edges</code> comme étant un attribut ''weight''.<br />
<br />
* <code>V(g)</code> : permet de voir les noeuds (''''V'''ertices') du graphique créé <code>g</code>. On peut lui assigner des attributs directement avec <code>$</code> (voir plus bas).<br />
<br />
* <code>vertex_attr(g)</code> : permet de voir les ''attributs'' des noeuds (''''V'''ertices) du graphique créé <code>g</code>. Si vous exécutez cette commande et avez suivi le tutoriel, vous verrez que <code>$name</code> est montré :<br />
<br />
> vertex_attr(g)<br />
$name<br />
[1] "s3" "s4" "s5" "s9" "s23" (...)<br />
<br />
:> il s'agit du nom de la deuxième colonne de notre data frame <code>nodes</code> ! Voyez-vous le lien (bis) ? La fonction <code>graph_from_data_frame()</code> a traduit la deuxième colonne de le data frame <code>nodes</code> comme étant un attribut ''name''.<br />
<br />
===Modification des attributs===<br />
<br />
Je ne présente ici que quelques exemples de modifications d'attributs, il bien d'autres façons de modifier son graphique et là est la force de R !<br />
<br />
====$width====<br />
<br />
Vous pouvez ajouter un attribut à <code>E(g)</code> comme si c'était un data frame. Ici, <code>$weight</code> est un attribut que l'on avait déjà avant et on crée à présent <code>width</code> comme étant le log()+1 de la weight (rappel : nombre de visualisation d'un exercice pour chaque étudiant·e - exercice)<br />
<br />
E(g)$width <- log(E(g)$weight) + 1<br />
set.seed(42)<br />
plot(g)<br />
<br />
[[Image:networkana_graph2.jpeg]]<br />
<br />
====$size====<br />
<br />
Pour les noeuds, pensez bien à la commande <code>V(g)</code>. <code>strength(g)</code> est la somme des visualisations (weight) par node. <br />
<br />
V(g)$size <- log(strength(g)) * 4<br />
set.seed(42)<br />
plot(g)<br />
<br />
[[Image:networkana_graph3.jpeg]]<br />
<br />
====$label + ifelse====<br />
<br />
Nous allons émettre une condition <code>ifelse</code> et l'attribuer au <code>$label</code> des noeuds. Si la somme des visualisations par noeud est supérieure à 25 alors on garde le nom du noeud, sinon on ne l'affiche pas.<br />
<br />
V(g)$label <- ifelse(strength(g) >= 25, V(g)$name, NA) # show name only when strength >= 75<br />
set.seed(42)<br />
plot(g)<br />
<br />
[[Image:networkana_graph4.jpeg]]<br />
<br />
Ça commence a être mieux, voyez l'utilité d'assigner un nom court aux noeuds.<br />
<br />
====$color + %in%====<br />
<br />
Nous allons attribuer la couleur rouge aux noeuds montrant les étudiant·e·s et la couleur dorée aux noeuds des exercices. En créant la liste des étudiant·e·s et la liste des exercices, il suffit d'assigner à <code>V(g)$color</code> la couleur correspondante, suivant si le nom se trouve dans la liste etudiant ou exercice.<br />
<br />
etudiant <- nodes_s$name<br />
exercice <- nodes_p$name<br />
V(g)$color <- NA<br />
V(g)$color[V(g)$name %in% etudiant] <- "red"<br />
V(g)$color[V(g)$name %in% exercice] <- "gold"<br />
set.seed(42)<br />
plot(g)<br />
<br />
[[Image:networkana_graph5.jpeg]]<br />
<br />
==Types de graphiques==<br />
<br />
==Analyse critique de l'outil==<br />
<br />
Comme le disent [http://ceur-ws.org/Vol-2868/article_7.pdf Poquet et al. (2021)], la construction d'un réseau dépend des choix faits par les chercheur·euse·s, en outre les choix de ce qui est étudié (noeuds), quelles interactions vont être choisies (liens) et la façon dont laquelle la force entre les liens doit être considérée (poids). Ces choix influencent la façon dont le réseau est construit et impactent indirectement l'interprétation du/de la chercheur·euse.<br />
<br />
==Recommandations pour les études utilisant cet outil==<br />
<br />
Voir [http://ceur-ws.org/Vol-2868/article_7.pdf Poquet et al. (2021)] : <br />
<br />
* Quels sont les noeuds (nodes) et leur pertinence face au contexte, à la théorie, ou la question de recherche?<br />
<br />
* Quels sont les liens (edges), et que représentent-ils? <br />
<br />
==Références== <br />
<br />
Koedinger, K.R., Baker, R.S.J.d., Cunningham, K., Skogsholm, A., Leber, B., Stamper, J. (2010) A Data Repository for the EDM community: The PSLC DataShop. In Romero, C., Ventura, S., Pechenizkiy, M., Baker, R.S.J.d. (Eds.) ''Handbook of Educational Data Mining.'' Boca Raton, FL: CRC Press.<br />
<br />
Poquet, O., Saqr, M., & Chen, B. (2021). Recommendations for network research in learning analytics: 2021 NetSciLA Workshop “Using Network Science in Learning Analytics: Building Bridges towards a Common Agenda”, NetSciLA 2021. ''CEUR Workshop Proceedings, 2868'', 34–41.<br />
<br />
Romero, C., & Ventura, S. (2020). Educational data mining and learning analytics: An updated survey. ''Wiley Interdisciplinary Reviews-Data Mining and Knowledge Discovery, 10''(3). https://doi.org/10.1002/widm.1355<br />
<br />
Saqr, M., & Alamro, A. (2019). The role of social network analysis as a learning analytics tool in online problem based learning. ''BMC medical education, 19''(1), 160. https://doi.org/10.1186/s12909-019-1599-6<br />
<br />
==Liens==<br />
<br />
* https://robwiederstein.github.io/network_analysis/intro.html (Tutoriel analyse de réseau - anglais)<br />
<br />
* http://pablobarbera.com/big-data-upf/html/02a-networks-intro-visualization.html (Tutoriel analyse de réseaux sociaux)<br />
<br />
* https://www.r-bloggers.com/2021/04/social-network-analysis-in-r/ (Tutoriel analyse de réseaux sociaux)<br />
<br />
* https://www.geeksforgeeks.org/social-network-analysis-using-r-programming/ (Tutoriel analyse de réseaux sociaux)<br />
<br />
* https://pslcdatashop.web.cmu.edu/Files?datasetId=4524 (Base de donnée 'Data Files for KDD Cup 2010' via DataShop)<br />
<br />
<br />
-----<br />
<br />
[[Utilisateur:Kenneth Rioja|Kenneth Rioja]] ([[Discussion utilisateur:Kenneth Rioja|discussion]]) 26 mars 2022 à 00:14 (CET)<br />
<br />
[[Catégorie:Analytique et exploration de données]]<br />
[[Catégorie:R]]</div>Kenneth Rioja