library(glitter)
=spq_init() %>%
hopitauxspq_add("?hopital wdt:P31 wd:Q16917") %>%
spq_add("?hopital wdt:P625 ?coords") %>%
spq_add("?hopital wdt:P17 ?pays") %>%
spq_label(hopital,pays) %>%
spq_perform()%>%
::filter(stringr::str_detect(coords,"Point")) %>%
dplyr::st_as_sf(wkt="coords")
sf
::st_write(hopitaux,"data/hopitaux.shp") sf
DM
L’organisation
Date de rendu
J’attends le rendu le vendredi 22/12/2023 max. Envoyez le moi sur monprénom.monnom@ens-lyon.fr. Il y aura -2 points par semaine de retard (2 jours de retard= -2 points, 10 jours de retard= -4 points)!
Groupes
Vous pouvez me fournir un rendu par groupe (les groupes que vous avez défini pendant le cours rassemblant des GeoNum et des Sentinelles…). Vous pouvez accéder au Discord GeoSentiNum n’importe quand pour travailler sur le DM.
J’attends que chacun investisse sur ce devoir 10h de son temps. Au-delà de cela, vous pouvez vous organiser comme vous le souhaitez.
Indiquez (en quelques lignes) comment vous avez réparti les tâches et de quelle manière vous avez investi tel ou tel aspect Indiquez également si vous souhaitez avoir une note commune pour ce travail ou une note individuelle
Il faudra donc a minima que vous atteigniez un consensus sur cette partie “qui a fait quoi”, et s’il y en a ne serait-ce qu’un seul qui souhaite la notation individualisée dans le groupe alors c’est son avis qui prévaudra! (Oui c’est un peu compliqué: l’idée, comme vous l’aurez sans doute compris, c’est que personne ne se laisse passivement porter par les autres dans les groupes…)
Format du rendu
J’attends que vous me fournissiez à la fois:
- le document comportant les codes utilisés (par exemple, un projet Quarto .qmd). Ce document me permettra de voir l’intégralité des lignes de commande que vous aurez écrites.
- un rendu de type rapport (par exemple le fichier .doc, .html, ou .pdf selon vos préférences que vous aurez tricoté à partir du document .qmd).
De ce fait, vous pouvez, si vous le souhaitez, ne pas me montrer les lignes de commandes dans le rapport pour faire “comme si” j’étais un interlocuteur qui ne connaît pas le langage et s’intéresse juste aux résultats…
Si vous me montrez des tableaux de données intermédiaires, essayez de me montrer seulement quelques lignes, ou leurs dimensions, pas des tableaux énormes qui vont générer 10 pages de rapport pour pas grand chose…
Le sujet
Analysez les données détaillées ci-après, portant sur les hôpitaux dans le monde (coordonnées X-Y, pays) et des données générales sur les pays (population, espérance de vie, indice de développement humain).
Vous pouvez définir vous-mêmes les questions auxquelles vous souhaitez répondre, les méthodes mises en oeuvre (bon, en R quand-même), les graphiques et cartes que vous souhaitez produire. Vous êtes libres de chercher des données complémentaires si vous le souhaitez (et que les 10h imparties vous en laissent le temps).
Au-delà des données de départ que je fixe, le sujet est donc très libre… Emparez-vous en, et surprenez-moi 🙂.
Quelques pistes
Production
Le but de ce DM est que vous soyiez en mesure de produire quelque chose avec R, à partir de données. Il va donc donc vous falloir produire un résultat que je puisse évaluer (par exemple un rapport Quarto…).
✅ Installer R, RStudio
✅ Exécuter du code R
✅ Ecrire et tricoter un rapport
Combinaison de sources de données
Vous disposez de 2 jeux de données, qui ont en commun l’information correspondant au pays. Peut-être souhaiterez-vous réaliser une jointure sur ces deux jeux de données pour pouvoir croiser les informations qu’ils contiennent?
Voir par exemple la fonction dplyr::left_join()
(un article sur les combinaisons et jointures de tables ici)
✅ Réaliser une jointure de tableaux
✅ Croiser des sources de données diverses
Cartographie
Les jeux de données comportent des coordonnées géographiques (points). Peut-être pourriez-vous produire des cartes?
✅ Lire un jeu de données géographiques (sf…)
✅ Produire une carte
✅ Customiser une carte
Graphiques
Au-delà de graphiques très simples décrivant les données (nombres d’hôpitaux par pays par exemple), vous pouvez tenter de croiser graphiquement des informations (nombre d’hôpitaux par pays vs espérance de vie dans ce pays, peut-être en prenant en compte la population ou l’aire du pays…).
✅ Résumer, croiser des données (manipulation de tableaux)
✅ Réaliser une représentation graphique adaptée
Angle d’analyse
J’aimerais que vous me montriez que vous êtes capables de réaliser des choses avec R, mais aussi, idéalement, j’aimerais que ces choses aient un sens. Est-ce que ce que vous avez produit répond à une question? Si c’est le cas cela vous aidera à avoir des idées de choses à faire, au-delà de la simple “démonstration technique”…
✅ Imaginer une question (thématique) à laquelle les jeux de données pourraient répondre
✅ Produire les éléments d’analyse permettant de répondre à cette question
Créativité
Vous pouvez faire le choix de poser une question qui tombe sous le sens ou un peu originale, de n’utiliser qu’une partie des données, ou au contraire de les compléter par d’autres jeux de données que vous avez identifiés/téléchargés par ailleurs.
Les données
Je récupère les deux tables de données initiales à partir d’une requête à Wikidata (formulée à l’aide du package glitter).
Ces jeux de données sont téléchargeables à l’adresse suivante: https://perso.ens-lyon.fr/lise.vaudor/datasets/data_DM_GeoSentiNum.zip.
Vous n’avez pas besoin d’exécuter le code suivant, je vous fournis déjà la sortie dans le zip. Je le mets ici pour que vous puissiez (si vous avez envie) enrichir votre jeu de données ou le compléter par d’autres données Wikidata -ou autre SPARQL endpoint-). Dans ce cas il vous faudra installer glitter depuis son repo github (instructions d’installation en bas du README).
Vous pouvez consulter la documentation de Wikidata pour mieux comprendre la nature des données, notamment les fiches relatives aux hôpitaux (par exemple ici) ou aux pays (par exemple ici).
Le premier jeu de données comprend plus de 22 000 enregistrements d’hôpitaux:
Le deuxième jeu de données procure quelques descripteurs des pays:
=spq_init() %>%
paysspq_add("?pays wdt:P31 wd:Q6256") %>%
spq_label(pays) %>%
spq_add("?pays wdt:P1082 ?population", .required=FALSE) %>%
spq_add("?pays wdt:P2046 ?area", .required=FALSE) %>%
spq_add("?pays wdt:P625 ?coords") %>%
spq_add("?pays wdt:P1081 ?human_dev_index", .required=FALSE) %>%
spq_add("?pays wdt:P2250 ?life_expectancy", .required=FALSE) %>%
spq_add("?pays wdt:P297 ?iso2", .required=FALSE) %>%
spq_add("?pays wdt:P298 ?iso3", .required=FALSE) %>%
spq_perform() %>%
::st_as_sf(wkt="coords")
sf
::st_write(pays,"data/pays.shp") sf
Données complémentaires
Si vous souhaitez faire de la carto avec des pays en géométrie polygone plutôt que point, vous pouvez aller télécharger le shapefile disponible (par exemple) ici.