Initiation à R (1/3)

L'objectif est de vous familiariser avec R, un environnement libre pour le calcul statistique.

Lancer R et le quitter

Lancer R

Lancez R depuis le menu Démarrer. Deux fenêtres 'ouvrent ; l'une indique quelque chose qui ressemble à cela :

message d'accueil dans R

Les commandes essentielles sont indiquées dans ce message, en particulier comment quitter R. La dernière ligne qui commence par un > est une invite pour que vous tapiez une commande : c'est ce que l'on appelle un « prompt », c'est-à-dire, un signe qui vous indique que le logiciel attend que tapiez quelque chose.

Remarque : attention, minuscules et majuscules ne sont pas équivalentes.

Quitter R

La dernière ligne du message d'accueil vous informe que pour quitter R, il faut taper la commande q() suivie d'un retour-chariot (= touche Entrée). Faites-le ; vous obtenez le résultat suivant :

message de départ de R

Vous avez la possibilité de sauvegarder votre travail en tapant y (comme 'y'es) suivi d'un retour-chariot, ou de quitter R sans sauvegarder votre travail en tapant n (comme 'n'o), ou encore de revenir dans R en tapant c (comme 'c'ontinue).
Si vous quitter R en sauvegardant votre travail, vous avez aussi la possibilité de récupérer votre travail et de le mettre soit sur votre clé USB, soit vous l'envoyer par email pour travailler chez vous (par exemple). Cela sera expliqué à la fin du TP.

Pour l'heure, le TP ne fait que commencer, donc restez sous R en tapant c (suivi de retour-chariot : il faut toujours taper un retour-chariot après une commande pour la valider et que R la prenne en compte ; on ne le dira donc plus).

R : une calculatrice

Calculs élémentaires

L'utilisation la plus simple de R est de l'utiliser comme une « simple » calculatrice. On verra que c'est en fait une calculatrice très sophistiquée.

Par exemple, tapez la commande suivante (tous les exemples doivent être tapés ; le symbole > indique qu'il s'agît d'une commande R : vous ne devez pas le taper, il est déjà affiché à l'écran) :

> 2+3

R vous répond immédiatement :

[1] 5

Si on laisse de côté le [1] qui sera expliqué plus loin, on obtient bien le résultat attendu : 5, la somme de 2 et 3.

Naturellement, tous les opérateurs habituels sont disponibles, ainsi que les fonctions logarithmiques, trigonométriques, et bien d'autres.

On peut affecter le résultat d'un calcul à une variable. Une variable est une entité qui porte un nom et qui contient une valeur. Par exemple, si on tape :

> a <- 2 * sqrt (5) + pi

R n'affiche rien, mais il a :

L'affectation se fait donc par l'opérateur <-. À sa gauche, on indique le nom de la variable à laquelle il faut affecter la valeur qui se trouve à sa droite. En passant, vous aurez noter l'utilisation de pi pour obtenir la valeur de π. pi est une variable pré-définie dans R dont la valeur est celle de π.

On peut afficher la valeur d'une variable en tapant simplement son nom :

a
[1] 7.613729

Naturellement, on peut utiliser la valeur d'une variable pour effectuer des calculs, par exemple :

> b <- (a - 1) * (a + 1)

Pour simplifier la saisie des commandes, vous pouvez utiliser la touche flêchée ↑ pour retrouvez les commandes que vous avez déjà tapées et pour les modifier. Ainsi, R garde l'historique des commandes que vous tapez. Vous pouvez remonter dans l'historique avec la touche ↑ et redescendre avec la touche ↓. Quand vous remontez dans l'historique, vous pouvez ensuite utiliser les touches flêchées ← et → pour éditer la commande. Ainsi, utilisez ces touches pour taper la commande suivante, qui diffère peu d'une commande que vous avez tapée plus haut :

> 3 * sqrt (5 + pi)

Prenez l'habitude d'utiliser ces touches flêchées : elles permettent d'accélérer très sensiblement la saisie des commandes, et ceci, même si l'on est déjà habile avec le clavier de son ordinateur.

La table suivante indique des opérateurs et des fonctions de R :

notation en Rvaleur mathématique
a + b somme de a et b
a - b b soustrait de a
a * b produit de a par b
a / b division réelle de a par b
a %/% b division euclidienne (entière) de a par b
a %% b a mod b
a ^ b a à la puissance b
sqrt (a) racine carrée de a
abs (a) valeur absolue de a
log (a) logarithme naturel de de a
exp (a) exponentielle de a
sin (a) sinus de a (en radians)
cos (a) cosinus de a (en radians)
tan (a) tangente de a (en radians)

Cette liste est loin d'être exhaustive !

L'aide en ligne

À tout moment une aide en ligne est accessible avec la commande ?topic, où topic peut être remplacé par n'importe-quelle commande. Essayez, par exemple ?log. Il est très important d'apprendre à lire l'aide. L'aide en-ligne contient énormément d'information : elle est là, disponible, c'est à vous d'apprendre à l'utiliser. Les pages d'aide ont toutes la même structure :

Vecteurs

Après les simples nombres, un deuxième type fondamental d'entités dans R est le vecteur. Un vecteur peut-être créé de différentes manières. Par exemple, créons un vecteur dont les éléments sont -1, 2, 4, 2, 0 et mettons-le dans une variable dont le nom est v :

> v <- c (-1, 2, 4, 2, 0)

La fonction c assemble et construit un vecteur avec ces valeurs. On peut ensuite consulter la valeur des composantes du vecteur :

> v
[1]  -1  2  4  2  0

On retrouve bien les valeurs avec lesquelles on a initialisé le vecteur.



De nombreuses fonctions s'appliquent aux vecteurs. La table ci-dessous en contient un certain nombre ; essayez-les toutes :

notation en Rvaleur résultat sur l'exemple
length (v) nombre d'éléments de v 5
min (v) valeur de l'élément minimal de v -1
max (v) valeur de l'élément maximal de v 4
range (v) vecteur composé des deux valeurs précédentes (le min et le max de v) -1 4
sum (v) valeur de la somme des éléments de v : Σivi 7
prod (v) valeur du produit des éléments de v : Πivi 0
which.min (v) indice de l'élément minimal de v (arg mini vi) 1
which.max (v) indice de l'élément maximal de v (arg maxi vi) 3

Opérations mathématiques sur les vecteurs

Comme on a commencé à le voir plus haut, R peut naturellement effectuer toutes les opérations habituelles sur les vecteurs. Les opérateurs vues plus haut sur les nombres (+, -, ...) et les fonctions (abs, log, ...) s'appliquent sur les vecteurs comme on s'y attend. Toutes ces opérations se font terme à terme : aussi, quand il y a deux vecteurs (comme pour une addition), il faut que les deux vecteurs aient le même nombre d'éléments.

On peut aussi ajouter un scalaire aux éléments d'un vecteur, la soustraire, la multiplier, ... par les opérateurs habituels (+, -, *, ...) en combinant un vecteur et un scalaire. Ainsi,

v + 3

produit un vecteur dont les composantes sont celles de v augmentées de 3.

Quelques fonctions statistiques sur les vecteurs

En statistique et fouille de données, un vecteur va typiquement contenir des données sur lesquelles on voudra effectuer des traitements statistiques. Les plus simples sont résumés dans la table ci-dessous :

notation en Rvaleur résultat sur l'exemple
mean (v) la moyenne des éléments de v 1.4
var (v) la variance des éléments de v 3.8
sd (v) l'écart-type des éléments de v 1.949359
summary (v) fournit plusieurs statistiques sur les éléments de v Min. 1st Qu. Median Mean 3rd Qu. Max.
-1.0 0.0 2.0 1.4 2.0 4.0

Indexation des éléments d'un vecteur

On peut aussi demander la valeur du troisième élément du vecteur par la notation  :

v [3]
[1] 4

On peut aussi demander la valeur des éléments 1 et 3 du vecteur en fournissant plusieurs indices, comme suit :

v [c (1, 3)]
[1] -1 4

On voit que pour cela, on a spécifié un vecteur dont les composantes sont les indices qui nous intéressent (c (1, 3) est un vecteur de deux éléments, le premier vaut 1, le second vaut 3).

On vient donc de présenter une opération très utile et très importante en R : accéder aux élements d'un vecteur en utilisant un autre vecteur (dénommé « vecteur d'index ») qui contient le numéro des composantes que l'on veut sélectionner.

Il existe d'autres possibilités dans ce genre.

Indexation par un vecteur de booléens

On peut aussi vouloir s'intéresser aux éléments de v positifs, c'est-à-dire, ceux qui sont plus grands que 0. On écrira par exemple :

> v [v > 0]

ce qui donne :

[1] 2 4 2

notation en Rvaleur
== égalité entre deux valeurs
!= différence entre deux valeurs
< c'est clair, non !
<= ça aussi
> ça aussi
>= ça aussi

Étude d'un jeu de données

Un jeu de données (data frame en R) est un tableau dans lequel chaque ligne correspond à un individu, chaque colonne à un caractère (ou attribut, ou ... selon la terminologie préférée). Les caractères peuvent être qualitatifs/nominaux ou quantitatifs.
En R, chaque colonne d'un jeu de données est un vecteur.

Création d'un jeu de données

Il y a plusieurs manières de créer un jeu de données en R :

Création directe

Supposons que l'on veuille créer un data frame qui portera le nom toto. On fait :

toto <- edit (data.frame())

Chargement à partir d'une feuille Excel ou Open Office

La démarche la plus simple dans ce cas est :

Le fichier peut être sur votre ordinateur, ou accéder directement sur internet via son url.

Exemple : avec ce jeu de données sleep au format open office (ods) [aussi au format xl et au format texte/csv].

On le charge dans R par la commande :

sommeil <- read.csv ("http://www.grappa.univ-lille3.fr/~ppreux/ensg/ed/R/sleep.csv", dec=",", sep="")

Explication des attributs :

Fonctions sur les data frames

Quelques fonctions utiles sur les data.frames (tapez-les et voyez le résultat) :

Accès aux éléments d'un data frame

On peut accéder à certains individus comme aux éléments d'un vecteur par indexation de la forme data frame [ligne(s), colonne(s)].

Statistiques descriptives

Les fonctions statistiques vues plus haut s'appliquent aux colonnes d'un data frame (puisque ce sont des vecteurs !).

Coefficient de corrélation linéaire entre deux caractères :

cor (sommeil$Body.Weight, sommeil$Brain.Weight)
[1] 0.9341638

Quelques graphiques

Faire les graphiques que l'on a vu ensemble dans la présentation.

Plus difficile : faire un graphe de la durée de sommeil paradoxal en fonction de la durée de sommeil où chaque point est coloré en fonction de son indice de prédation (par exemple : jaune si 1, orange si 2, rose si 3, rouge si 4, noir si 5).