Session sur l’extraction de données depuis internet – 1/3 : Utilisation d’API natives

La première session de la 3ème « vague » ElementR s’est tenue le 30 Mars 2016, et avait pour thème le web scraping, soit la collecte/extraction de données depuis Internet.

Le document utilisé en séance est disponible à cette adresse, et les données sont ici.

Le sujet étant assez étendu, j’ai choisi de développer les exemples dans un format plus long de tutoriel, en découpant l’ensemble de la séance en trois parties centrées sur :

  1. L’utilisation d’API natives à R
  2. La récupération d’une page web structurée
  3. Le scraping d’un site web.

La première partie vient d’être mise en ligne et peut être consultée sur le site RPubs : http://rpubs.com/RobinC/web-scraping-1

N.B. :  Si le site affiche une page blanche, pensez à désactiver votre bloqueur de script/addblock.

http://rpubs.com/RobinC/web-scraping-1

[Carto.Flux_3.3.] Le voisinage spatial – les (k) plus proches voisins

Ce billet est issu de l’annexe 3 de Programmes pour RStudio (Bahoken, 2016a et b). Il fait partie d’une série de procédures permettant de sélectionner les flux selon des critères liés à l’espacement des lieux. L’objectif de la construction de ces matrices d’espacement des lieux (éloignement, proximité, voisinage …) est qu’elles servent ensuite à filtrer la matrice de flux (Fij) observés, de manière à ne représenter que les flux répondant au critère (d’éloignement, de distance, …) retenu.

–> Le présent document porte sur la construction d’un graphe de voisinage spatial formé des (k) lieux (j) situés à une distance donnée de lieux (i).  Lire la suite

[Carto.Flux_3-1] Le voisinage spatial binaire (Cij=1)

Ce billet est issu de l’annexe 3 de Programmes pour RStudio annexés (Bahoken, 2016a). Il fait partie d’une série de procédures permettant de sélectionner les flux selon des critères liés à l’espacement des lieux. L’objectif de la construction de ces matrices d’espacement des lieux (éloignement, voisinage …) est qu’elles servent ensuite à filtrer la matrice de flux (Fij) observés, de manière à ne représenter que les flux répondant au critère (d’éloignement, de distance, …) retenu.

–> Le critère utilisé ici est une métrique de proximité binaire, notée (Cij=1). Elle traduit le fait que les couples de lieux (i,j) sont limitrophes (Cij=1) ou non (Cij=0).
Lire la suite

[Carto.Flux_2] Procédure de cartographie d’une matrice de flux

Ce billet est issu de l’annexe 2 de Programmes pour RStudio annexés (voir réf. en note).

Cette procédure est générale, elle permet de cartographier n’importe laquelle des matrices de liens (Lij) ou de flux (Fij), préalablement réduite ou non. Dans ce dernier cas, il est souvent nécessaire d’appliquer une procédure de sélection de l’information à représenter, une version minimale est présentée (sinon consulter les billets dédiés au choix d’un critère de sélection). La préparation des données est supposée avoir été réalisée en amont de cette étape de représentation. On dispose donc d’une matrice (Fij) prête à cartographier.

Données

L’exemple d’application est la matrice de flux domicile-travail de l’Isère, préparée ici.

– La matrice de flux de l’Isère (fermée et carrée) au format liste (.csv) : liste_isere
– Le fond de carte des communes de l’Isère, au format shapefile (.shp) : Isere_com
– La liste des identifiants (code INSEE) des communes (.csv) : CODE_Isere

1- Description de la méthode

Lire la suite

[Carto.Flux_1] Transformation d’une matrice de flux fermée non carrée en une matrice de flux fermée carrée

Ce billet est issu de l’annexe 1 de Programmes pour RStudio (voir réf.). Il décrit une procédure permettant de transformer une matrice de flux non carrée (n*m), formée de (n) lignes et de (m) colonnes d’effectifs différents, en une matrice de flux carrée où le nombre de lignes est égal au nombre de colonnes (n*n). On mobilise pour cela une liste (n) d’identifiants contenant l’ensemble des lieux de la zone d’étude.

Données

1) La matrice est celle des flux domicile-travail du département de l’Isère, intitulée : source. Elle a été extraite du fichier de détail Mobilités Professionnelles des Individus / déplacements commune de résidence / commune de travail (MOBPRO) de l’INSEE, pour l’année 2010. Cette matrice fermée étant non carrée, un certain nombre de traitements que nous proposons ne pourra être réalisé, d’où le présent billet (voir ci-dessous justification).

2) Le FOND de carte est celui des communes du département de l’Isère (38) : Isere_com. Ce fond est extrait du fichier GEOFLA COM de l’IGN.

3) De ce fond de carte, nous en avons extrait une liste des identifiants des communes (des codes INSEE) : CODE_Isere

1- Justification
Lorsqu’une matrice fermée n’est pas carrée, c’est-à-dire que le nombre de lignes et de colonnes diffère, il n’est pas possible de la décomposer selon la procédure présentée dans le Chapitre 3, en utilisant sa propriété générale de symétrie / permutation des valeurs de flux au regard de la diagonale principale de la matrice. La transposition d’une matrice non carrée n’ayant en fait pas de sens

Pour pouvoir transposer une matrice fermée non carrée, il faut donc la rendre carrée (!).

Lire la suite

[Carto.Flux_0] Contribution à la cartographie d’une matrice de flux

« La recherche en visualisation est impossible sans le développement de prototypes de logiciels permettant l’élaboration et la validation des idées ». Natalia et Gennady Andrienko.

Préambule : Cette série de billets [Carto.Flux] correspond aux programmes commentés que j’ai développés pour Rstudio dans le cadre de ma thèse1 en géographie, et qui font l’objet d’une Annexe dédiée.

Comme annoncé dans le manuscrit, et lors de ma soutenance, je livre ces programmes « en l’état » à la communauté. L’objectif est de contribuer au développement de la cartographie de flux de toutes sortes (migrants, migrations, commerciaux, financiers, de télécommunication,…). Aussi d’assurer le caractère reproductible de l’essentiel des traitements et des figures présentés dans mes chapitres 2, 3, 5, 7, 8 et 9. Cela permettra, je l’espère, de rendre mes propositions généralisables et facilement intégrables dans les (ou de futurs) packages. Ces programmes ne sont néanmoins pas toujours optimisés et toutes mes sorties graphiques nécessitent généralement d’être retravaillées dans un logiciel de graphisme. Il est désormais possible de recourir de manière complémentaire à la section Link/Flow Map du package Cartography de Timothée Giraud et Nicolas Lambert sorti entre-temps, il est disponible ici.

LISTE (non exhaustive) DES BILLETS PROPOSES

–> Ces billets seront progressivement renseignés,voire complétés, dans les semaines qui viennent. (dernière MAJ : 20 avril 2016).

Lire la suite

7e SESSION : Raster

Séance sur les rasters (format, manipulations simples, statistiques zonales, masque et visualisation).

A partir d’exemples en climatologie (urbaine) : l’îlot de chaleur urbain de surface et les simulations du changement climatique en Ile-de-France.

Intervenants : Malika Madelin (UMR PRODIG)

Librairies :
ncdf
raster
rasterVis
ggplot2
maptools
sp
rgdal
RColorBrewer

 

Les fichiers :

Raster_Partie1 : fichier zip avec les programmes + une partie des données

Raster_Partie2 : lien vers un fichier zip avec l’autre partie des données (taille importante)

• Pour illustrer le programme 1, un poster présenté à l’EGU en 2012 : PrIllustrerProg1

EGU12_Madelin

Reilly, Huff et Stewart : le package SpatialPosition

Les modèles d’interaction spatiale sont utilisés pour décrire-expliquer-prévoir les interactions entre les lieux. On distingue deux grandes familles de modèles selon le produit de l’interaction auquel on s’intéresse : l’interaction peut être saisie à travers des flux entre les lieux (flux de personnes, de marchandises, de richesse, d’information , etc.) ; l’interaction peut aussi être saisie à travers l’influence exercée par un lieu sur tous les autres (aire de marché d’un commerce, aire d’influence d’une ville, etc.). Ce second type est désigné par le terme de modèle de position. Le nouveau package SpatialPosition permet de calculer et de visualiser les résultats de ces modèles de positions : modèle de Reilly, modèle de Huff et modèle de Stewart (potentiels de population).

Le package SpatialPosition est développé par Timothée Giraud (UMS RIATE), Hadrien Commenges (UMR Géographie-cités) et Joël Boulier (UMR Géographie-cités). Il est disponible sur le CRAN. Pour plus d’information et de ressources sur ce type de modèles, voir la vignette associée au package.

RStudio : sa vie, son oeuvre, ses ressources

RStudio est un environnement de développement (IDE) conçu spécialement pour R, à ne pas confondre avec les interfaces graphiques (GUI) de type R commander qui proposent de travailler en cliquant et non en codant. C’est un logiciel récent – la première version date de 2011 – qui a progressivement transformé la façon d’utiliser R. De nombreux utilisateurs ont du mal à imaginer le travail sur R sans cet IDE. L’équipe de RStudio s’est étoffée au cours du temps en intégrant des poids lourds de la communauté R, Hadley Wickham en particulier.

Fonctionnalités de RStudio

RStudio se développe à un rythme soutenu, intégrant sans cesse de nouvelles fonctionnalités. Actuellement (version 98.1103), on peut souligner les fonctionnalités suivantes :

  • intégration du code et du texte (dynamic documents) avec knitr : documents de type RMarkdown ou RSweave. Le document dynamique permet de faire un document tout-en-un incluant des contenus textuels, des blocs de code, des résultats numériques et des résultats graphiques. Plusieurs formats sont possibles : HTML, pdf ou docx. Ces développements récents sont liés à l’arrivée de Yihui Xie, créateur du package knitr, dans l’équipe de RStudio.
  • développement et appel de fonctions écrites en C++ dans R.
  • ensemble de raccourcis claviers très utiles pour cliquer le moins possible. La liste des raccourcis s’affiche en tapant Alt + Shift + k, ces raccourcis ne sont pas personnalisables pour le moment.
  • l’autocomplétion des noms d’objets avec la touche Tab, qui s’affine au cours du temps.
  • ensemble de fonctionnalités pour se repérer dans le code, pour y naviguer, pour rechercher, remplacer, sourcer, etc.
  • création et gestion de projets (RProj) permettant de sauver et de récupérer à chaque session l’espace de travail corespondant au projet. La gestion des répertoires avec setwd() et getwd()n’est plus nécessaire lorsqu’on travaille avec un projet, le chemin (path) vers les fichiers commence là où se trouve le fichier RProj.
  • création de packages : RStudio inclut maintenant plusieurs aides à la création de packages. Lorsqu’on crée un fichier projet (RProj), il faut déclarer qu’il s’agit d’un projet de package.
  • intégration de Git dans l’interface RStudio, pour travailler en contrôle de version avec Git et GitHub. Justement, le logiciel RStudio a été développé de façon collaborative sur la plateforme GitHub.

Autres produits développés par l’équipe RStudio

Le premier produit de l’équipe RStudio est l’IDE du même nom (RStudio Desktop). D’autres produits et services existent maintenant, en particulier RStudio Server à installer sur un serveur pour profiter des capacités de calcul et de mémoire supérieures aux ordinateurs de bureau ; et plusieurs projets liés au package shiny pour la conception d’applications interactives avec R, HTML et JavaScript (shiny server et shinyapps.io).

Ressources pour l’apprentissage

Enfin, RStudio propose un ensemble de ressources pour l’apprentissage :

Le logiciel RStudio est-il indispensable pour les utilisateurs de R ?

Certains utilisateurs viennent à R avec d’autres pratiques et d’autres éditeurs de code. Certains éditeurs de code sont très intéressants pour qui sait en tirer parti : Emacs, Sublime Text ou VIM (à noter : RStudio dispose d’un mode VIM à configurer dans les options). Ces utilisateurs ne verront pas forcément d’intérêt à changer d’éditeur de code s’ils sont expérimentés sur un éditeur performant.

En revanche, utiliser R dans son interface par défaut (sur Windows et sur Mac, sur Linux il n’y a pas d’interface par défaut) est inadmissible dans le sens de la notion d’admissibilité statistique : cette interface est plus mauvaise en tous points que l’IDE RStudio.

Pour répondre à la question : non, RStudio n’est pas indispensable mais en revanche il est indispensable de cesser d’utiliser l’interface par défaut de R.

6e SESSION : Créer des applications interactives avec R et shiny

Titre : Créer des applications interactives avec R et shiny

Intervenants : Hadrien Commenges (LEESU) & Robin Cura (UMR Géographie-cités)

Résumé :

Utilisation du package shiny pour créer des applications interactives.

Prérequis :

Connaissances de base sur la création de fonctions dans R.

Matériel et software nécessaire :

  • un ordinateur portable
  • une version récente de R et de RStudio
  • les packages shiny, manipulate, reshape2 et ggplot2

Informations pratiques :

Vendredi 10 avril de 14 à 16h

Université Paris Diderot – Paris 7

Bâtiment Olympe de Gouges – Salle 204

PlanDAccesOlympeDeGouges

Données et code utilisés pour la séance :

introShiny

4e SESSION : Analyse de données spatio-temporelles

La séance aura lieu le vendredi 6 février de 14h à 16h à Paris 7, site Olympe de Gouges. salle 204 et sera animée par Hélène Mathian (UMR 5600 Environnement, Ville et Société, ENS Lyon), assistée de Marion Le Texier (Institut Universitaire Européen de Florence).

PlanDAccesOlympeDeGouges

Le thème est l’analyse des données spatio-temporelles :

« Etudier des phénomènes inscrits dans le temps et dans l’espace. Intégrant une réflexion sur les données à mobiliser et les indicateurs à constituer, il s’agira d’exploiter les potentialités des méthodes d’analyses des données et des modèles d’analyse spatiale pour évaluer l’évolution  des entités spatiales ou des organisations spatiales. L’environnement R permettra de le faire dans le cadre d’une démarche exploratoire intégrant représentations graphiques et cartographiques. »

Les packages à installer sont sp, rgdal, reshape2, ggplot2, aspace, ade4, FactoClass, grid, maptools, et RColorBrewer (avec leurs dépendances respectives éventuelles).

Les données sont disponibles ici. Une partie d’entre elles renseigne sur la construction de bâtiments d’une hauteur de plus de 50 mètres à Londres (sources : Emporis, ANR Skyline, M. Appert, EVS & Lyon 2). L’autre partie rend compte de l’évolution des caractéristiques démographiques des communes de la petite couronne parisienne (source : Insee, IGN-Geofla).

Télécharger le Code

D’autres packages pourront être demandés dans le cadre d’un exercice « bonus » visant à réaliser des représentations animées et interactives dans l’espace-temps des données. Il s’agit des librairies suivantes : rgl, GeoXp, plot3D, mapdata, mapproj, OpenStreetMap, animation, ggmap. Une version récente de Java est aussi recommandée.

Couplage R – GRASS : appeler des fonctions GRASS dans R

GRASS est un logiciel SIG libre qui dispose de nombreuses fonctions de traitement d’objets spatiaux, aussi bien raster que vectoriel. Le tutoriel suivant montre un exemple de couplage entre R et GRASS, plus précisément il montre comment appeler une fonction de GRASS dans R. La fonction utilisée est v.generalize qui permet de simplifier la géométrie d’un objet vectoriel.

Le tutoriel au format html et pdf ainsi que les données nécessaires sont disponibles avec ce lien de téléchargement : CouplageRGRASS

 

Modèles de régression multiniveaux avec R

 Multiniveaux avec R

 

pic-multilevelLes modèles multiniveaux se basent sur des données dites « hiérarchiques », c’est-à-dire comprenant deux ou plusieurs niveaux (ceux-ci pouvant être sociaux ou géographiques, par exemple : les niveaux de l’élève, de son établissement et de l’académie; les niveaux de la ville, de sa région d’appartenance et du pays concerne). Leur utilisation se base sur le principe que les différents niveaux interagissent dans les deux sens, et s’intègre particulièrement bien au paradigme de la complexité (Byrne, 1998).

L’analyse multiniveaux permet ainsi d’éviter les erreurs d’interprétation écologique (attribuer à des entités individuelles les corrélations statistiques observées à l’échelle agrégée) et atomiste (attribuer aux entités individuelles les facteurs et contraintes contextuels), en intégrant les deux niveaux dans un même modèle (Courgeau, Baccaïni, 1997).

Cette séance est consacrée à leur utilisation en géographie avec R.

 

Tutoriel de la séance elementR du 7 Novembre 2014 :

Format html : Boularan-Cottineau-multilevel-Tuto-corrections2.html

Format Rmd : Boularan-Cottineau-multilevel-Tuto-corrections2.Rmd

 

Ressources pour la séance :

Données communales : data-communes-complete.csv et métadonnées : metadata-communes-complete

Shape files des aires urbaines : Shape-AU

Shape files des unités urbaines : Shape-UU

 

Le téléchargement des shape files des communes est accessible ici via le site de GEOFLA (IGN).

 

Ressources complémentaires :

L’article de Joël Gombin : https://hal.archives-ouvertes.fr/file/index/docid/422081/filename/ST5-13Gombin.pdf

L’article de Daniel Courgeau et Brigitte Baccaïni : http://www.jstor.org/stable/1534616

Un (très) récent article comparant l’apport des modèles multiniveaux par comparaison avec des modèles multi-agents : http://jasss.soc.surrey.ac.uk/17/4/3.html

La documentation du package lme4 par Douglas Bates : http://lme4.r-forge.r-project.org/lMMwR/lrgprt.pdf

Le site du Center for Multilevel Modelling (CMM) : http://www.bristol.ac.uk/cmm/

Recherche reproductible et documents dynamiques

Le terme de recherche reproductible désigne un changement récent dans la production scientifique : c’est l’idée que le produit final de la recherche ne peut plus être un simple article, mais un article accompagné de tous les éléments nécessaires pour le reproduire, c’est-à-dire principalement le code et les données. Pour que d’autres puissent reproduire le résultat à partir du code et des données, il faut qu’ils soient compréhensibles d’où une nécessité de documenter tous les éléments (code et données) acompagnant l’article.

Dans l’attente de la résolution d’un problème technique sur la plateforme hypotheses.org, les documents correspondant ne sont pas affichés sur le blog mais téléchargeables ci-dessous :

RetMarkdown

Plusieurs liens pour approfondir cette question des conditions, des limites et des enjeux de la reproductibilité des résultats scientifiques :

 

Recherche reproductible et création de fonctions

Le terme de recherche reproductible désigne un changement récent dans la production scientifique : c’est l’idée que le produit final de la recherche ne peut plus être un simple article, mais un article accompagné de tous les éléments nécessaires pour le reproduire, c’est-à-dire principalement le code et les données. Pour que d’autres puissent reproduire le résultat à partir du code et des données, il faut qu’ils soient compréhensibles d’où une nécessité de documenter tous les éléments (code et données) acompagnant l’article.

Dans l’attente de la résolution d’un problème technique sur la plateforme hypotheses.org, les documents correspondant ne sont pas affichés sur le blog mais téléchargeables ci-dessous :

LesFonctions

Plusieurs liens pour approfondir cette question des conditions, des limites et des enjeux de la reproductibilité des résultats scientifiques :