IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)

R et espace

Traitement de l'information géographique


précédentsommairesuivant

1. CHAPITRE 1 Prise de contact

1-1. R dans une coquille de noix

R est un langage créé en 1993 par Robert Gentleman et Ross Ihaka, de l'Université d'Aukland. Il s'agit d'une nouvelle implémentation d'un langage plus ancien, le langage S créé à la fin des années 1970 dans les laboratoires Bell.

R est un logiciel libre, gratuit et multiplateforme (Linux, Windows, Mac). En pleine expansion, il concurrence avec succès les logiciels commerciaux qui détenaient ce marché : SAS, SPSS et Stata. Robert Muenchen propose sur son site Internet(4) des analyses quantifiées de cette concurrence. Il est aussi l'auteur de manuels facilitant la migration des utilisateurs des grands logiciels commerciaux vers le logiciel R.

R est composé d'un socle commun (r-base) sur lequel se greffe un ensemble de packages. Un package est une bibliothèque de fonctions implémentées par les utilisateurs et mises à disposition de tous par l'intermédiaire de dépôts regroupés dans le cadre du Comprehensive R Archive Network (CRAN). Cette structure modulaire, commune à de nombreux logiciels libres, explique la vaste étendue des applications possibles : l'expansion du logiciel n'est limité que par le travail que les utilisateurs du monde entier mettent à disposition de l'ensemble des autres utilisateurs.

La structure modulaire du logiciel R peut être vue comme un arbre de dépendances : un package dépend de fonctions implémentées dans d'autres packages, qui eux-mêmes dépendent de fonctions implémentées dans d'autres packages, etc. Cet arbre est une structure hiérarchique dans le sens où les packages spécialisés ont tendance à dépendre de packages plus généralistes.

L'un des aspects les plus déroutants de ce logiciel, pour les débutants et pour les utilisateurs de logiciels de statistique classiques, est qu'il existe toujours de multiples façons d'effectuer une tâche. C'est la conséquence de la structure modulaire qui vient d'être décrite : d'abord, des fonctions identiques ou semblables sont implémentées indépendamment dans plusieurs packages ; ensuite, le développement très rapide du logiciel et de ses modules mène souvent à l'amélioration de fonctions préexistantes. Dans ce dernier cas, il y a superposition entre l'ancienne façon de faire, qui se maintient, et la nouvelle façon de faire qui attire de plus en plus d'utilisateurs, surtout si elle est meilleure à tous points de vue (cf. Section 2.5Packages polyvalents).

Le champ extensible de R fait qu'il est possible de manipuler tous types d'objets. Ceci permet d'intégrer dans un même flux de travail des analyses de données statistiques, spatiales et temporelles, de produire des tableaux, des graphiques et des cartes. Ce flux de travail intégré est plus efficace et plus sûr, car il supprime les continuelles importations et exportations pour passer d'un logiciel à l'autre (d'un logiciel de statistique à un logiciel de cartographie par exemple).

1-2. Installation

Le logiciel se compose d'une simple console sous Linux ou bien d'un ensemble de trois fenêtres sous Windows et MacOS. La console regroupe trois fonctions : elle affiche les résultats, elle permet d'écrire du code et elle renvoie les messages d'erreur. Deux types d'interfaces permettent de compléter la console :

  • les interfaces graphiques (GUI - Graphical User Interface) comme R Commander, qui proposent un ensemble de menus et de boutons et permettent de travailler sans connaître la syntaxe ;
  • les environnements de développement (IDE - Integrated Development Environment), dont le plus répandu est RStudio que nous utilisons dans ce manuel. RStudio intègre dans une même interface la console, l'éditeur de script, le contenu de l'espace de travail, l'historique, l'aide, les graphiques et l'accès aux packages.

Pour commencer à travailler sur ce manuel, il faut installer le logiciel R(5) puis le logiciel RStudio(6).

En ce qui concerne l'utilisation des packages, il faut bien distinguer deux choses : installer un package et le charger. On peut installer des centaines de packages sur une machine, mais au lancement R ne les charge pas tous. Il faut donc les charger selon les besoins, ce qui se fait soit en cochant le package voulu dans l'onglet correspondant de RStudio soit en utilisant la fonction library().

1-3. Utilisation de RStudio

RStudio est un environnement de développement dédié à R, il est pratique, complet et en rapide évolution. L'interface graphique de RStudio se compose de quatre fenêtres (cf. Figure 1.1) : l'éditeur de code, la console, l'espace de travail dans lequel s'affichent les objets créés avec une information sur leur nature et leur contenu, et enfin une fenêtre qui permet de gérer les packages (installation, mise à jour, chargement) et d'accéder à l'aide.

Il y a principalement deux façons d'écrire et d'exécuter des lignes de code : dans la console et dans l'éditeur de code. La console est utile pour écrire des commandes courtes qui ne sont pas destinées à être conservées, par exemple installer ou charger un package. L'éditeur, en revanche, est utilisé pour écrire du code pérenne que l'utilisateur souhaite conserver ou partager.

Image non disponible
FIGURE 1.1 - Structure de l'interface graphique de Rstudio

Pour ouvrir un nouveau fichier de code, on utilise le menu Fichier > Nouveau > Script R. Il y a plusieurs options disponibles à la création d'un fichier (C++, Markdown, HTML, etc.) parce qu'il est possible d'utiliser d'autres langages et de les combiner avec du code R. Ce manuel en est un exemple : le corps de texte est écrit avec LATEX et le code avec R.

RStudio propose de nombreuses fonctionnalités intéressantes, à commencer par la gestion de projets. L'onglet Projects, situé en haut à droite de l'interface, permet de créer des projets et d'ouvrir des projets existants. Ceci facilite l'accès à des espaces de travail différenciés correspondant aux différents travaux en cours de l'utilisateur.

Le bouton Importer situé dans la fenêtre Environment est utile pour importer des tableaux en format texte (txt ou csv). Il présente toutes les options nécessaires pour importer correctement ses données : intitulé de colonne, séparateur de colonnes, séparateur décimal.

La fenêtre située en bas à droite permet en premier lieu de gérer l'installation et le chargement des packages, avec les boutons de l'onglet intitulé Packages. Dans cet onglet apparaissent tous les packages installés sur la machine. S'y trouvent également plusieurs boutons pour installer les packages, les mettre à jour ou les charger en cochant les cases correspondantes.

Dans cette même fenêtre, l'onglet Help permet d'accéder à la documentation de toutes les fonctions des packages installés et chargés. L'onglet Plots propose des options de visualisation et d'exportation des graphiques en plusieurs formats courants, par exemple svg, png ou pdf.

L'ensemble des boutons de l'interface RStudio exécute des commandes visibles dans la console, commandes qui peuvent bien sûr être écrites (dans la console ou dans l'éditeur de code) et exécutées directement. Par exemple, le bouton d'installation de packages exécute la fonction install.packages(), le bouton d'importation de données exécute la fonction read.table().

RStudio présente aussi la capacité de compléter automatiquement les termes en cours d'écriture (capacité qualifiée par la suite d'autocomplétion). L'autocomplétion fonctionne avec la touche Tab du clavier, qui complète automatiquement les noms des objets chargés dans l'espace de travail ou le nom des fonctions et arguments à utiliser. On l'utilise dans plusieurs cas :

  • saisir les premières lettres d'un objet créé par l'utilisateur (ou d'une fonction) et appuyer sur la touche Tab pour finir d'écrire le nom de l'objet (ou de la fonction) ;
  • saisir le nom d'un data.frame ou d'une liste (list), le $ permettant de charger les éléments stockés dans ces objets, puis appuyer sur Tab. L'interface propose alors l'ensemble des variables dans une liste déroulante ;
  • saisir le nom d'une fonction, ouvrir la parenthèse et appuyer sur Tab. L'interface propose alors la liste des arguments que la fonction prend en entrée ainsi que la description correspondant à chaque argument.

Enfin, RStudio propose de nombreux raccourcis clavier intéressants : le raccourci Alt+- renvoie l'opérateur d'assignation accompagné d'un espace avant et un espace après (<-). Le raccourci Ctrl+Entrée exécute le code écrit dans la fenêtre d'édition (script) : si une partie du code est sélectionnée, c'est cette partie qui est exécutée ; si le curseur est placé sur une ligne donnée, c'est seulement cette ligne qui est exécutée. Enfin, les raccourcis Ctrl+1 et Ctrl+2 permettent de passer de la console à l'éditeur de code et vice versa.

1-4. Conventions d'écriture

La lisibilité d'un programme est un impératif majeur à respecter : lisibilité pour le programmeur lui-même mais aussi pour les autres utilisateurs qui seraient amenés à l'utiliser. Dans ce cadre il est crucial de documenter son programme, c'est-à-dire d'en commenter les principales étapes. Un programme non commenté devient rapidement incompréhensible, y compris pour la personne qui en est l'auteur. Pour cela, on utilise le croisillon (#) : tout ce qui vient après ce symbole n'est pas considéré comme des commandes à exécuter.

Même si les conventions d'écriture ne semblent pas cruciales, surtout pour un utilisateur débutant ou isolé, il faut savoir que tous les langages de programmation ont des conventions qui facilitent l'échange et la coopération. Il existe plusieurs guides de style ou recueils de bonnes pratiques à ce sujet. Ils diffèrent essentiellement sur la façon de nommer les objets : doit-on écrire MonObjet, monObjet, mon.objet ? Pour le reste tous les guides de style sont d'accord sur les notations suivantes :

  • Espaces : toujours placer un espace avant et après un opérateur (+, -, =, etc.). Toujours placer un espace après une virgule, mais pas avant.
  • Mise en forme du code : l'écriture de commandes longues, souvent des fonctions ou des ensembles de conditions devraient aussi respecter certaines conventions pour faciliter leur lecture, en particulier en termes de saut de ligne et d'alinéa (indentation).

Dans ce manuel, deux conventions d'écriture sont utilisés : les fonctions sont notées avec des séparations en majuscules (MonObjet, convention dite camel case) et les variables sont notées avec une minuscule sur la première lettre (monObjet, convention dite lower camel case).

Une autre question se pose dans l'écriture du code, celle de la langue utilisée pour désigner les objets. Comme le logiciel, ses packages et ses fonctions sont en anglais, les objets créés seront également notés en anglais et myObject sera préféré à monObjet.

1-5. Versions et mises à jour

R est un logiciel à structure modulaire dont la base (r-base) et les différents packages sont mis à jour au rythme du travail des contributeurs, c'est-à-dire à un rythme variable. L'ensemble composé de la base (r-base) et d'un certain choix de packages est donc un ensemble mouvant, dont la dynamique est propre à chaque utilisateur et à ses pratiques de mise à jour. Il arrive que la version la plus récente d'un package ne puisse être installée que sur la version la plus récente de r-base.

D'une façon générale, au vu de la dynamique qui porte ce logiciel, il est conseillable de rester le plus à la page possible et de mettre à jour les composants du logiciel régulièrement. Le journal des modifications, de la base et des packages, peut être suivi sur le site du CRAN cité plus haut. Le présent manuel a été rédigé et testé sur une base logicielle mise à jour en juillet 2014 qui comprend : la version 3.1 de R, la version 0.98 de RStudio et les dernières mises à jour de tous les packages utilisés.

1-6. L'exemple et les données

Ce manuel présente des manipulations sur plusieurs jeux de données qui sont téléchargeables sur le site Internet de Framabook(7). Presque toutes les applications sont faites sur le même jeu de données caractérisant le même espace d'étude : Paris et la petite couronne, espace décrit au niveau communal (143 communes pour 4 départements 75, 92, 93, 94). On propose trois jeux de données statistiques mis à disposition par l'Insee :

  • données socioéconomiques des recensements de 1999 et de 2007,
  • série temporelle des populations communales depuis 1936,
  • données de mobilité résidentielle (changements de domicile) en 2008.

Certaines données cartographiques sont également utilisées, données vectorielles et raster en accès libre sur le site de l'IGN correspondant au même espace d'étude : Paris et la petite couronne.

Vecteur et raster : la distinction entre format vecteur et format raster est essentielle pour le traitement informatique d'images. Le format raster, ou bitmap, représente l'image par une matrice de pixels dont les valeurs se traduisent par des couleurs. Les photographies en sont l'exemple le plus courant. Le format vecteur représente des objets géométriques par leurs caractéristiques (points, segments, polygones) et leurs coordonnées.

À côté de ce jeu de données principal, dans certains exercices, des jeux de données d'exemple contenus dans R sont utilisés. Parmi ces jeux de données, ceux contenus dans le package HistData sont particulièrement intéressants. Il s'agit de données issues de l'histoire de la statistique et de la visualisation de données, comme ceux de Galton sur la régression, ceux de Minard sur la campagne de Russie de Napoléon ou ceux de Snow sur le choléra.

1-6-1. Description du fichier SocEco9907.csv

Ensemble de variables socio-économiques renseignées au recensement de la population de 1999 et de 2007. Le nom de ces variables indique leur contenu et la date du recensement, par exemple PCAD99 et PCAD07 pour la proportion de cadres en 1999 et en 2007. Pour les variables indiquant une proportion nous signalons entre parenthèses la population de référence, qui peut être soit la population totale, soit la population de plus de 15 ans, soit la population active, soit la population active occupée.

  • CODGEO Code communal
  • LIBGEO Nom de la commune (arrondissement pour Paris)
  • X, Y Coordonnées géographiques en Lambert 2 étendu (hectomètres)
  • SURF Superficie en hectares
  • EMPLOI Nombre d'emplois
  • ACTOCC Nombre d'actifs occupés
  • P20ANS Proportion de moins de 20 ans (population totale)
  • PNDIP Proportion de non diplômés (population > 15 ans)
  • TXCHOM Proportion de chômeurs (population active)
  • INTAO Proportion d'intérimaires (population active occupée)
  • PART Proportion d'artisans (population active occupée)
  • PCAD Proportion de cadres (population active occupée)
  • PINT Proportion de professions intermédiaires (population active occupée)
  • PEMP Proportion d'employés (population active occupée)
  • POUV Proportion d'ouvriers (population active occupée)
  • PRET Proportion de retraités (population active occupée)
  • PMONO Proportion des familles monoparentales (familles)
  • PREFETR Proportion des ménages dont la personne de référence est étrangère (ménages)
  • RFUCQ Revenu médian (euro courant)
  • REFEROUI Pourcentage de votes pour le OUI au référendum européen (DATE)

1-6-2. Description du fichier PopCom3608.csv

Série temporelle des populations communales depuis 1936 produites par les éditions successives du Recensement de la Population (RP).

  • CODGEO Code communal
  • LIBGEO Nom de la commune (arrondissement pour Paris)
  • SURF Superficie en hectares
  • POP1936 Population sans double compte au RP 1936
  • POP1954 Population sans double compte au RP 1954
  • POP1962 Population sans double compte au RP 1962
  • POP1968 Population sans double compte au RP 1968
  • POP1975 Population sans double compte au RP 1975
  • POP1982 Population sans double compte au RP 1982
  • POP1990 Population sans double compte au RP 1990
  • POP1999 Population sans double compte au RP 1999
  • POP2008 Population sans double compte au RP 2008

1-6-3. Description du fichier MobResid08.txt

Données de mobilité résidentielle en 2008. Ce fichier retrace les changements de domicile : il donne le nombre d'individus de 5 ans et plus ayant changé de commune de résidence entre la date du recensement (2008) et 5 ans auparavant, soit 2003 dans ce fichier. La variable CODGEO doit donc être lue comme la commune de destination et DCRAN comme la commune d'origine.

  • CODGEO Code de la commune de résidence
  • LIBGEO Nom de la commune de résidence (arrondissement pour Paris)
  • DCRAN Code de la commune de résidence antérieure
  • L_DCRAN Nom de la commune de résidence antérieure (arrondissement pour Paris)
  • NBFLUX Nombre d'individus ayant changé de commune de résidence

1-6-4. Description des données cartographiques

Trois types de données cartographiques sont utilisées : des données zonales (vectorielles) constituées des limites des 143 communes étudiées, des données ponctuelles (vectorielles) qui renseignent sur la localisation des hôpitaux et leur capacité, et des données raster qui renseignent sur la densité du bâti.

Le fichier des limites communales ne contient que les codes permettant de faire des jointures entre les données de l'Insee et le fond cartographique. Le fichier des hôpitaux contient plusieurs champs renseignant leur capacité exprimée en nombres de lits. Enfin, le fichier raster est une matrice de pixels dont la valeur représente la densité du bâti.


précédentsommairesuivant

Vous avez aimé ce tutoriel ? Alors partagez-le en cliquant sur les boutons suivants : Viadeo Twitter Facebook Share on Google+   

Copyright 2014 : Groupe ElementR, Framasoft (coll. Framabook). R et espace est placé sous licence CC By-SA 3.0.