Logiciel/Sytsème | Windows | MacOS | Linux | BSD | Autres Unix |
---|---|---|---|---|---|
R | oui | oui | oui | oui | oui |
Analyse de données avec R
Utilisation d’un langage de programmation Open Source pour les SHS
ICM, Campus Condorcet, novembre 2023
Hugues Pecout (CNRS, UMR Géographie-Cités)
A. Pourquoi utiliser R ?
B. Introduction au langage
C. Exemple appliqué
→ Chaîne de traitement appliquée à des données climatiques
Il existe de nombreux logiciels d’analyse statistique. Mais depuis le début des années 2000, le langage R gagne en importance dans ce domaine et s’impose progressivement comme une référence, au même titre que les trois principaux logiciels d’analyse de données qui dominent le marché.
Plusieurs aspects peuvent nous laisser penser que de nombreux utilisateurs de logiciels statistiques devraient progressivement converger vers R…
Prix licence SPSS Base edition
Intéropérabilité des principaux logiciels :
Logiciel/Système | Windows | MacOS | Linux | BSD | Autres Unix |
---|---|---|---|---|---|
SAS | oui | terminé | oui | non | oui |
SPAD | oui | non | non | non | non |
SPSS | oui | oui | non | non | non |
Stata | oui | oui | oui | non | non |
C’est pour cela que l’on préfère R !
Deux langages très utilisés pour le traitement et l’analyse des données en SHS.
Très souvent comparés pour leurs fonctionnalités semblables…
L’utilisation de R ou de Python dépend surtout de :
Qui suis-je ? Qu’est-ce que je veux faire ?
R a autant de cerveau…
→ Spécialisé dans l’analyse statistique
→ Pour utilisateu·rices moins avancés en progr.
…que Python a du muscle !
→ Spécialisé dans la science de données
→ Pour utilisateu·rices avancés en progr.
En 2008, au MIT, quelques chercheurs se rassemblent et font un point sur les outils disponibles pour le calcul scientifique et statistique. Principal constat, la communauté était éclatée :
il fallait un langage prenant tous les avantages de chaque langage et rajoutant un aspect de plus en plus pointé du doigt : la parallélisation massive (rapidité de calcul)… Voici comment la langage Julia est né !
Bien que la communauté d’utilisateur.rices se soit depuis agrandie, le langage Julia ne s’est toujours pas imposé dans la communauté SHS, où R et Python semble toujours les langages les plus utilisés pour l’analyse de données
R se base sur le langage de programmation S, créé en 1988.
L’objectif était de créer le meilleur environnement d’analyse statistique.
R est le résultat de 30 années de recherche & développement. Aujourd’hui, plusieurs acteurs économiques importants financent le développement de R : Microsoft, Google, Oracle, Esri…
source : https://www.r-consortium.org/members
Logiciel/Sytsème | Windows | MacOS | Linux | BSD | Autres Unix |
---|---|---|---|---|---|
R | oui | oui | oui | oui | oui |
R propose 2982 fonctions statistiques et graphiques standard (primitives)
Sur ce socle commun peut s’ajouter de nombreux packages, mis à disposition sur le Comprehensive R Archive Network (CRAN). Ex :
R a une structure modulaire qui offre toute une gamme d’applications possibles. Son expansion n’est limitée que par les contributions !
Nombre de packages disponibles sur le CRAN
Les packages permettent d’opérer sur l’ensemble de la chaîne de traitement, de la collecte des données à la valorisation des résultats (diaporama, rapport statistique, site web…).
Cette polyvalence permet à R de compléter (et de concurrencer) toute une série de logiciels existants
Peut-on avoir confiance en un langage Open Source ?
L’information circule vite dans les communautés des logiciels OS !
Seulement possible avec un langage Open Source spécialisé dans l’analyse statistique
OUI !
Mais …
RStudio, qui se nomme désormais Posit, est une entreprise qui développe et publie des logiciels et des services basés sur le langage R. C’est l’acteur privé le plus important de la communauté R. Rstudio est à l’origine de nombreux packages de référence. Ex :
La majorité des packages de Rstudio sont regroupés dans un package “parapluie” : tidyverse
Posit propose également un Environnement de Développement Intégré qui facilite énormément la pratique du langage R : l’IDE Rstudio
Interface de R sur Windows
Pas d’interface sur Linux (terminal)
L’IDE Rstudio facilite l’apprentissage de R et son utilisation
Parce que c’est simple, complet, en constante évolution et développé par le principale acteur de la communauté : utilisez l’IDE RStudio!
L’installation de R et de l’IDE Rstudio se fait comme n’importe quel autre logiciel.
Connectez-vous au CRAN pour télécharger R.
Téléchargez la version ‘Desktop’ sur le site de Rstudio
Lancez Rstudio (pas R) pour commencer
Le langage R offre les mêmes fonctionnalités qu’une calculatrice.
Nom | Opérateurs arithmétiques | Exemple | Résultat |
---|---|---|---|
Addition | + | 5 + 3 | 8 |
Soustraction | - | 5 - 1 | 4 |
Multiplication | * | 5*5 | 25 |
Division | / | 5/5 | 1 |
Puissance | ^ | 5^5 | 3125 |
Modulo | %% | 5 %% 5 | 0 |
Quotient Décimal | %/% | 5 %/% 5 | 1 |
Exemples appliqués :
Plusieurs types d’opérateurs sont disponibles :
Conditions | Opérateurs relationnels | Exemple | Résultat |
---|---|---|---|
plus petit que | < | 5 < 5 | FALSE |
plus grand que | > | 5 > 5 | FALSE |
plus petit ou égal à | <= | 5 <= 5 | TRUE |
plus grand ou égal à | >= | 5 >= 5 | TRUE |
égal à | == | 5 == 5 | TRUE |
différent de | != | 5 != 5 | FALSE |
présent dans | %in% | 5 %in% 1:5 | TRUE |
x égale à y ?
x différent de y ?
x présent dans y ?
Condition | Opérateurs logiques |
---|---|
différent de | ! |
et | & |
ou | I |
ou exclusif | xor() |
valeur manquante | is.na() |
valeur nulle | is.null() |
vrai | isTRUE() |
faux | isFALSE() |
Valeur manquante ?
Différent de ‘NA’ ?
Contrôle à deux conditions
Des milliers de fonctions pour manipuler, analyser et représenter ses données. Une fonction contient une série de commandes (code) qui effectuent une tâche prédéfinie. Elle prend des informations (arguments) en entrée et renvoie un résultat. Les fonctions s’utilisent toujours de la même façon : nom_fonction()
→ Fonction round()
pour arrondir un nombre
→ Fonction nchar()
pour calculer un nombre de caractères
→ Fonction strsplit()
pour fractionner une chaine de caractère
[[1]]
[1] "Mali" "Niger" "Lybie" "Italie" "France"
→ Fonction plot()
pour la représentation graphique
Dans la majorité des cas, des arguments doivent être renseignés pour utiliser une fonction.
# Affichage graphique
plot(x = 1:20,
y = 11:30,
type = "p",
pch = 15,
cex = 2,
col= "deepskyblue3",
main = "Mon premier plot avec R",
cex.main = 2,
col.main = "darkgoldenrod4",
col.axis = "red4",
xlab = "Ma première variable",
ylab = "Ma seconde variable")
Les fonctions peuvent être :
Tout ce que l’on crée dans R sont des objets. Mais contrairement au langage Python, il ne s’agit pas d’un langage de POO.
La POO est un paradigme de programmation basé sur le concept d’objets, qui peuvent contenir des données et métadonnées (attributs), et qui sont associés à des procédures, souvent appelées méthodes.
Il est néanmoins possible de faire de la POO avec R !
Pour créer un objet, choisissez un nom et assignez-lui un contenu avec le symbole <-
Un objet peut-être réutilisé pour des calculs :
Le contenu d’un objet peut être modifié :
Un objet peut-être réutilisé dans une fonction
Il est possible de stocker différents types de données à un objet R. Les plus classiques :
Type | définition | Exemple |
---|---|---|
numeric | nombre | 3 ou 4.23 |
integer | nombre entier | 3 |
double | nombre double | 4.23 |
logical | logique ou booléen | TRUE ou FALSE |
string | chaîne de caractères | “Hello” |
factor | string (modalités prédéfinies) | “Hight” |
date | date formatée | 2020-12-14 |
NA | absence de valeur (tout type) | NA |
Exemples :
Différentes fonctions peuvent être appliquées aux différents types de données stockés, et aux différents types d’objets. Exemple :
Il existe plusieurs types d’objets permettant de stocker différents formats et types de données.
De nombreux types d’objets sont également mis à disposition par différents packages. Ex :
Une fonction est un objet qui peut se construire avec la fonction function()
ma_premiere_fonction()
devient est une fonction comme une autre.
Le vecteur est l’objet de base de R. Il permet de stocker plusieurs éléments du même type.
La fonction c()
permet de construire un vecteur de plusieurs éléments
Pour naviguer dans cet objet unidimensionnel, utilisez les crochets.
→ Sélection du premier élément
→ Sélection des éléments 2 et 4
Le data.frame correspond au tableau de données classique. il se compose de plusieurs colonnes pouvant contenir des données de nature différente. Chaque colonne d’un data.frame est un vecteur.
# Construction de plusieurs vecteurs de même longueur
nom <- c("Modibo Keïta", "Moussa Traoré", "Alpha Oumar Konaré")
date_naissance <- c("1915-06-04", "1936-09-25", "1946-02-02")
annee_arrivee_pouvoir <- c(1960, 1968, 1992)
duree_au_pouvoir <- c(8, 23, NA)
parcours_militaire <- c(FALSE, TRUE, FALSE)
Utilisez la fonction data.frame()
pour construire un tableau
mon_tableau <- data.frame(nom,
date_naissance,
annee_arrivee_pouvoir,
duree_au_pouvoir,
parcours_militaire )
mon_tableau
nom date_naissance annee_arrivee_pouvoir duree_au_pouvoir
1 Modibo Keïta 1915-06-04 1960 8
2 Moussa Traoré 1936-09-25 1968 23
3 Alpha Oumar Konaré 1946-02-02 1992 NA
parcours_militaire
1 FALSE
2 TRUE
3 FALSE
Utilisez les crochets pour naviguer dans un tableau : mon_tableau [ ligne , colonne ]
→ Sélection par index : première ligne et toutes les colonnes
nom date_naissance annee_arrivee_pouvoir duree_au_pouvoir
1 Modibo Keïta 1915-06-04 1960 8
parcours_militaire
1 FALSE
→ Sélection par index : toutes les lignes et colonnes 1, 3 et 5
nom annee_arrivee_pouvoir parcours_militaire
1 Modibo Keïta 1960 FALSE
2 Moussa Traoré 1968 TRUE
3 Alpha Oumar Konaré 1992 FALSE
→ Sélection par index : 2e ligne et colonnes 1 et 5
→ Sélection par index : 2e ligne et colonnes “nom” et “parcours_militaire”
Vous pouvez également utiliser le signe $ pour séléctionner une colonne : mon_tableau$date_naissance
→ Sélection colonne ‘date_naissance’
→ Valeur de la seconde ligne dans la colonne ‘date_naissance’
Utilisez les différents opérateurs pour sélectionner par condition
→ Sélection par condition
Une liste permet de stocker plusieurs objets (peu importe le type) en un seul. Une liste est une collection d’objet. Utilisez la fonction list()
pour construire une liste.
C’est un super objet très utile et puissant. Cet objet est utilisé par plusieurs packages de référence. Pour naviguer dans une liste, utilisez des doubles crochets : Ma_list[[ index ]]
→ Sélection du 2nd objet de Ma_list
→ Sélection au sein d’un objet d’une liste (2e ligne et 1ère colonne de mon objet 3)
Le langage R offre 2344 fonctions de base* stockées dans 7 packages standards, installés et chargés par défault.
638 fonctions supplémentaires sont également mises à disposition via 5 autres packages pré-installés (grid, splines, stats4, tcltk, tools), mais pas automatiquement chargés. (*le 2023-11-28)
Ce socle commun de fonctionnalité est couramment nommé le R-base
Les fonctionnalités standards (ou primitives) proposées par le R-base permettent de réaliser beaucoup de choses. Il est cependant nécessaire d’installer des packages pour profiter de certaines fonctionnalités, ex :
20102 packages sont disponibles sur le système officiel de stockage des packages : le Comprehensive R Archive Network.
Installation d’un package du CRAN en ligne de commande
Pour utiliser les fonctions du package, chargez la librairie :
→ Il est nécessaire de charger la librairie à chaque nouvelle session R
Il existe également d’autres sources de stockage :
Pour installer un package stocké sur GitHub, commencez par installer le package remotes
:
Puis utilisez sa fonction install_github()
:
il est nécessaire d’installer Rtools sur Windows pour réaliser cette opération.
rselenium
web scraping (Selenium)
Interfaces d’API et BD
eurostat - rOpenGov package - Interface API Eurostat
insee - Données et métadonnées INSEE (BDM)
wbstats et WDI - Interface API et données Banque mondiale
wpp2017 - Données UN (World Population Prospects 2017)
rnaturalearthdata - rOpenSci package - Données Natural Earth
osmdata - rOpenSci package - Interface API OpenStreetMap
rtweet - rOpenSci package - Interface API Twitter
tuber - Interface API Youtube
spotifyr - Interface API Spotify
googleAuthR, googleAnalyticsR, searchConsoleR… - API’s Google
…
Collection de packages conçues pour fonctionner ensemble et basés sur une philosophie commune. Ils abordent un très grand nombre d’opérations courantes dans R.
Ils sont en grande partie issues du travail d’Hadley Wickham, développeur emblématique qui travaille pour RStudio.
→ explor : interactive exploration of multivariate analysis results
quanteda : Manipulation et analyse de corpus Issue de l’ERC QUANTESS.
tm : Text mining
text2vec : Text mining et TAL
R.temis : Manipulation et analyse de corpus
Package avec interface graphique :
igraph : Analyse de graphe. Disponible en c/c++, python et Mathematica
tnet : Analyse pondérée, bimodale et longitudinale des graphe
bipartite : Analyse de graphe biparti
blockmodeling : Modélisation de réseau valué
Rsiena : Simulation de modèles stochastiques
R base
Représentation graphique standard
esquisse
Interface graphique pour créer des graphiques ggplot2
ggplot2
Représentation graphique avancée basée sur la grammaire graphique
plotly
Graphiques interactifs, adaptation librairie JavaScript
rmarkdown
Literate programming
xaringan
Literate programming - diaporama
pagedown
Literate programming - Créer PDFs avec CSS (comme LaTeX)…
shiny
Application interactive
knitr
Compilation de document (notebook)
bookdown
Literate programming - Format Livre
blogdown
Construction de siteweb statique
flexdashboard
Tableau de bord
Et de nombreux modèles de mise en page… Ex : rmdformats (documents HTML)
Quarto est un nouveau système open-source de publication d’articles scientifiques, plus moderne que le Rmarkdown et facilement adaptable à différents cadres d’utilisation.
Quarto est développé par Posit™️ (Rstudio). Cet outil est ainsi directement accessible depuis l’IDE Rstudio .Il permet d’exploiter différents langages de programmation tels que R, Python, Julia ou JavaScript.
Quarto unifie et étend les fonctionnalités offertes par les différents notebooks existants, plus particulièrement les extensions Rmarkdown.
Ce Diaporama est un notebook Quarto. Pour en savoir plus, cliquez ici
Commencez par lire les messages que renvoie la console !
La fonctionnalité d’auto-complétion proposée par Rstudio peut être très efficace. Utilisez la touche tab.
Les packages (base et CRAN) sont obligatoirement accompagnés d’une documentation. Vous pouvez y accéder en ligne de commande ou en clic-bouton :
La majorité des packages de référence propose de la documentation plus digeste à travers différents formats comme une vignette, une cheatsheet, voire même un site web.
Vignette du package mapsf
Cheatsheet (antisèche) du package mapsf
Site web du package mapsf
La communauté R est très active et prolifique en matière de partage et de documentation. Des milliers de ressources sur la pratique de R sont accessibles sur le web.
Pour vous aider :
Exemples de ressources (en géomatique) référencées sur rzine.fr :
Quelques ressources détectées en une seule recherche sur Google :
Tout est question de mots clefs (et d’historique des recherches)
Pour commencer l’apprentissage de R progressivement, vous pouvez utiliser des logiciels clic-bouton qui reposent sur le langage R et qui permettent de récuperer le code généré. Ex :
R version 4.3.2 (2023-10-31)
→ Présentation Quarto Reveal JS
R version 4.3.2 (2023-10-31)
Platform: x86_64-pc-linux-gnu (64-bit)
Running under: Ubuntu 22.04.3 LTS
Matrix products: default
BLAS: /usr/lib/x86_64-linux-gnu/blas/libblas.so.3.10.0
LAPACK: /usr/lib/x86_64-linux-gnu/lapack/liblapack.so.3.10.0
locale:
[1] LC_CTYPE=fr_FR.UTF-8 LC_NUMERIC=C
[3] LC_TIME=fr_FR.UTF-8 LC_COLLATE=fr_FR.UTF-8
[5] LC_MONETARY=fr_FR.UTF-8 LC_MESSAGES=fr_FR.UTF-8
[7] LC_PAPER=fr_FR.UTF-8 LC_NAME=C
[9] LC_ADDRESS=C LC_TELEPHONE=C
[11] LC_MEASUREMENT=fr_FR.UTF-8 LC_IDENTIFICATION=C
time zone: Europe/Paris
tzcode source: system (glibc)
attached base packages:
[1] tools tcltk stats4 splines grid stats graphics
[8] grDevices utils datasets methods base
other attached packages:
[1] ggplot2_3.4.2 plyr_1.8.8 stringr_1.5.0 rvest_1.0.3
loaded via a namespace (and not attached):
[1] gtable_0.3.3 jsonlite_1.8.7 dplyr_1.1.2 compiler_4.3.2
[5] selectr_0.4-2 tidyselect_1.2.0 Rcpp_1.0.10 xml2_1.3.4
[9] textshaping_0.3.6 systemfonts_1.0.4 scales_1.2.1 yaml_2.3.7
[13] fastmap_1.1.1 R6_2.5.1 labeling_0.4.2 generics_0.1.3
[17] curl_5.0.1 knitr_1.43 tibble_3.2.1 munsell_0.5.0
[21] pillar_1.9.0 rlang_1.1.1 utf8_1.2.3 stringi_1.7.12
[25] xfun_0.39 cli_3.6.1 withr_2.5.0 magrittr_2.0.3
[29] digest_0.6.33 rstudioapi_0.14 lifecycle_1.0.3 vctrs_0.6.3
[33] evaluate_0.21 glue_1.6.2 farver_2.1.1 ragg_1.2.5
[37] fansi_1.0.4 colorspace_2.1-0 rmarkdown_2.23 httr_1.4.6
[41] pkgconfig_2.0.3 htmltools_0.5.5
Diapositives libres (CC BY 4.0) :
Consultation : https://icm-intro-r-hpecout-2f8b698b44c8fcbba51fc31df918c3ac1311a83e670.gitpages.huma-num.fr/
Code source : https://gitlab.huma-num.fr/hpecout/icm_intro_r
Téléchargez ce projet Rstudio
Introduction au langage R - Institut Convergences Migrations, novembre 2023