Commencer avec R

Comme détaillé dans l'introduction, R est un langage de programmation open source extrêmement polyvalent pour la statistique et la science des données. Il est largement utilisé dans tous les domaines où il existe des données - entreprises, industrie, gouvernement, médecine, universités, etc.
Dans ce chapitre, vous allez découvrir R-comment l'invoquer, ce qu'il peut faire et quels fichiers il utilise. Nous couvrirons juste assez pour vous donner les bases dont vous avez besoin pour travailler à travers les exemples dans les prochains chapitres, où les détails seront présentés.
R peut déjà être installé sur votre système, si votre employeur ou université l'a mis à la disposition des utilisateurs. Sinon, voir l'annexe A.
pour les instructions d'installation.

Faisons un ensemble de données simple en langage R (un vecteur) composé des nombres 1, 2 et 4, et nommez-le x:

  1. > x <- c (1,2,4)
Source code

L'opérateur d'assignation standard dans R est <-. Vous pouvez également utiliser =, mais cela est déconseillé, car cela ne fonctionne pas dans certaines situations particulières. Notez qu'il n'y a pas de types fixes associés à des variables. Ici, nous avons assigné un vecteur à x, mais plus tard nous pourrions lui assigner quelque chose d'un type différent. Nous examinerons les vecteurs et les autres types dans la section 1.4.
Le c signifie concaténer. Ici, nous concaténons les nombres 1, 2 et 4. Plus précisément, nous concaténons trois vecteurs à un élément composés de ces nombres. En effet, tout nombre est également considéré comme un vecteur à un élément.
Maintenant, nous pouvons également faire ce qui suit:
  1. > q <- c (x, x, 8)
Source code

qui définit q à (1,2,4,1,2,4,8) (oui, y compris les doublons).
Maintenant, confirmons que les données sont vraiment en x. Pour imprimer le vecteur à l'écran, tapez simplement son nom. Si vous tapez un nom de variable (ou, plus génériquement, une expression) en mode interactif, R affichera la valeur de cette variable (ou de cette expression). Les programmeurs familiarisés avec d'autres langages tels que Python trouveront cette fonctionnalité familière. Pour notre exemple, entrez ceci:
  1. > x
  2. [1] 1 2 4
Source code

Oui, bien sûr, x est composé des nombres 1, 2 et 4.
Des éléments individuels d'un vecteur sont accessibles via []. Voici comment nous pouvons imprimer le troisième élément de x:
 
  1. > x[3]
  2. [1] 4
Source code

Comme dans les autres langages, le sélecteur (ici, 3) est appelé index ou sous-script. Ceux qui sont familiers avec les langages de la famille ALGOL, tels que C et C ++, devraient noter que les éléments des vecteurs R sont indexés à partir de 1, et non de 0. La sous-segmentation est une opération très importante sur les vecteurs. Voici un exemple:

  1. > x <- c (1,2,4)
  2. > x [2: 3]
  3. [1] 2 4
Source code

L'expression x [2: 3] fait référence au sous-vecteur de x constitué d'éléments 2 à 3, qui sont 2 et 4 ici.
Nous pouvons facilement trouver la moyenne et l'écart-type de notre ensemble de données, comme suit:
  1. > mean(x)
  2. [1] 2.333333
  3. > sd(x)
  4. [1] 1.527525
Source code

Cela montre de nouveau en tapant une expression à l'invite afin de l'imprimer. Dans la première ligne, notre expression est la fonction appel mean (x). La valeur de retour de cet appel est imprimée automatiquement, sans nécessiter d'appel à la fonction print () de R.
Si nous voulons enregistrer la moyenne calculée dans une variable au lieu de l'imprimer simplement à l'écran, nous pourrions exécuter ce code:
  1. > y <- mean(x)
Source code

Encore une fois, confirmons que y contient vraiment la moyenne de x:
  1. > y
  2. [1] 2,3333333
Source code

Comme indiqué précédemment, nous utilisons # pour écrire des commentaires, comme ceci:
  1. > y # imprime y
  2.  
  3. [1] 2.333333
Source code

Les commentaires sont particulièrement utiles pour la documentation du code de programme, mais ils sont également utiles dans les sessions interactives, puisque R enregistre l'historique des commandes (comme indiqué dans la section 1.6). Si vous enregistrez votre session et la reprenez plus tard, les commentaires peuvent vous aider à vous souvenir de ce que vous faisiez.
Enfin, faisons quelque chose avec l'un des ensembles de données internes de R (ceux-ci sont utilisés pour les démos). Vous pouvez obtenir une liste de ces ensembles de données en tapant ce qui suit:

  1. > data()
Source code

L'un des ensembles de données s'appelle Nile et contient des données sur le débit du Nil. Trouvons la moyenne et l'écart-type de cet ensemble de données:
  1. [1] 919.35
  2. > sd(Nile)
  3. [1] 169.2275
Source code

Une fenêtre apparaît avec l'histogramme, comme illustré dans la Figure 1-1. Ce graphique est simple, mais R a toutes sortes de cloches et de sifflets facultatifs pour le traçage. Par exemple, vous pouvez changer le nombre de cases en spécifiant la variable breaks. L'appel hist (z, breaks = 12) dessinerait un histogramme de l'ensemble de données z avec 12 cases. Vous pouvez également créer des étiquettes plus agréables, utiliser des couleurs et apporter de nombreux autres changements pour créer un graphique plus informatif et attrayant. Lorsque vous vous familiariserez avec R, vous pourrez construire des graphismes complexes et riches en couleurs d'une beauté saisissante.
Eh bien, c'est la fin de notre première introduction de cinq minutes à R. Quit R en appelant la fonction q () (ou en appuyant sur CTRL-D sous Linux ou CMD-D sur un Mac):
  1. > q ()
Source code

Cette dernière invite vous demande si vous souhaitez enregistrer vos variables afin de pouvoir reprendre le travail plus tard. Si vous répondez y, alors tous ces objets seront automatiquement chargés la prochaine fois que vous exécuterez R. Ceci est une fonction très importante, en particulier lorsque vous travaillez avec des ensembles de données volumineux ou nombreux. Répondre ici enregistre également l'historique des commandes de la session. Nous parlerons plus de sauvegarder votre espace de travail et l'historique des commandes dans la section 1.6.

R fonctionne en deux modes: interactif et batch. Celui généralement utilisé est le mode interactif. Dans ce mode, vous tapez des commandes, R affiche les résultats, vous tapez plus de commandes, etc. D'un autre côté, le mode batch ne nécessite pas d'interaction avec l'utilisateur. C'est utile pour les tâches de production, par exemple lorsqu'un programme doit être exécuté périodiquement, disons une fois par jour, car vous pouvez automatiser le processus.


1.1 Mode interactif
Sur un système Linux ou Mac, démarrez une session R en tapant R sur la ligne de commande dans une fenêtre de terminal. Sur un ordinateur Windows, démarrez R en cliquant sur l'icône R.
Le résultat est un message d'accueil et l'invite R, qui est le signe>. L'écran ressemblera à ceci:

  1. R version 2.10.0 (2009-10-26)
  2. Copyright (C) 2009 The R Foundation for Statistical Computing
  3. ISBN 3-900051-07-0
  4. ...
  5. Type 'demo()' for some demos, 'help()' for on-line help, or
  6. 'help.start()' for an HTML browser interface to help.
  7. Type 'q()' to quit R.
  8. >
Source code


Vous pouvez ensuite exécuter des commandes R. La fenêtre dans laquelle tout cela apparaît s'appelle la console R.
En guise d'exemple rapide, considérons une distribution normale standard, c'est-à-dire avec la moyenne 0 et la variance 1. Si une variable aléatoire X a cette distribution, alors ses valeurs sont centrées sur 0, certaines négatives, d'autres positives, moyennées à la fin à 0. Maintenant, formez une nouvelle variable aléatoire Y = | X |. Puisque nous avons pris la valeur absolue, les valeurs de Y ne seront pas centrées autour de 0, et la moyenne de Y sera positive.
Trouvons la moyenne de Y. Notre approche est basée sur un exemple simulé de N (0,1) variables.
 

  1. > mean(abs(rnorm(100)))
  2. [1] 0.7194236
Source code

Ce code génère les 100 variables aléatoires, trouve leurs valeurs absolues, puis trouve la moyenne des valeurs absolues.
Le [1] que vous voyez signifie que le premier élément de cette ligne de sortie est l'élément 1. Dans ce cas, notre sortie se compose d'une seule ligne (et d'un seul élément), donc c'est redundant. Cette notation devient utile lorsque vous avez besoin de lire une sortie volumineuse composée d'un grand nombre d'éléments répartis sur plusieurs lignes. Par exemple, s'il y avait deux rangées de sortie avec six éléments par rangée, la deuxième rangée serait étiquetée [7].

  1. > rnorm(10)
  2. [1] -0.6427784 -1.0416696 -1.4020476 -0.6718250 -0.9590894 -0.8684650
  3. [7] -0.5974668 0.6877001 1.3577618 -2.2794378
Source code

Ici, il y a 10 valeurs dans la sortie, et l'étiquette [7] dans la deuxième rangée vous permet de voir rapidement que 0.6877001, par exemple, est le huitième élément de sortie.
Vous pouvez également stocker des commandes R dans un fichier. Par convention, les fichiers de code R ont le suffixe .R ou .r. Si vous créez un fichier de code appelé z.R, vous pouvez exécuter le contenu de ce fichier en exécutant la commande suivante:
  1. > source("z.R")
Source code


1.2 Mode de traitement par lots
Parfois, il est pratique d'automatiser les sessions R. Par exemple, vous pouvez exécuter un script R qui génère un graphique sans avoir à vous soucier de lancer manuellement R et d'exécuter le script vous-même. Ici vous exécuteriez R en mode batch.
Par exemple, mettons notre code de création de graphes dans un fichier nommé z.R avec le contenu suivant:

  1. pdf("xh.pdf") # définir le fichier de sortie graphiquee
  2. hist(rnorm(100)) # génère 100 N (0,1) variables et trace leur histogramme
  3. dev.off() # ferme le fichier de sortie graphique file
Source code

Les éléments marqués d'un # sont des commentaires. Ils sont ignorés par l'interprète R. Les commentaires servent de notes pour nous rappeler, ainsi qu'à d'autres, ce que fait le code, dans un format lisible par l'homme.
Voici une analyse étape par étape de ce que nous faisons dans le code précédent:
• Nous appelons la fonction pdf () pour informer R que nous voulons que le graphique que nous créons soit enregistré dans le fichier PDF xh.pdf
• Nous appelons rnorm () (pour random normal) pour générer 100 N (0,1) variables aléatoires.
• Nous appelons hist () sur ces variables pour dessiner un histogramme de ces valeurs.
• Nous appelons dev.off () pour fermer le "périphérique" graphique que nous utilisons, qui est le fichier xh.pdf dans ce cas. C'est le mécanisme qui provoque l'écriture du fichier sur le disque.
Nous pourrions exécuter ce code automatiquement, sans entrer dans le mode interactif de R, en invoquant R avec une commande shell du système d'exploitation (comme à l'invite $ couramment utilisée dans les systèmes Linux):

  1. $ R CMD BATCH z.R
Source code

Vous pouvez confirmer que cela a fonctionné en utilisant votre visionneuse PDF pour afficher l'histogramme enregistré. (Ce sera juste un histogramme de plaine-vanille, mais R est capable de produire des variations assez sophistiquées.)