INITIATION AU
LOGICIEL R
Eric TCHAWALASSOU
Ingénieur Statisticien Economiste
Université de Lomé - Faculté des Sciences - Département de Mathématiques
Références du cours:
1. Le Logiciel R, Maitrisez le langage, Effectuez des analyses statistiques; Pierre Lafaye de Micheaux et all
Plan du cours : Première partie
1. Introduction
1. Présentation de R
2. Philosophie de R
2. Fonctionnement
1. Installation de R
2. La session de travail
3. Les différentes aides
4. Les objets R
5. Les fonctions
Plan du cours : deuxième partie
3. Manipulation des données
1. Importation des données
2. Exportation des résultats
3. Manipulation des variables
4. Manipulation des individus
5. Concaténer des tableaux de données
4. Programmation dans R
1. Structure de contrôle
2. Les fonctions prédéfinies
3. Construire une fonction
1. Introduction
R Logiciel Statistique
Avantages de R
Inconvénients de R
Philosophie de R
R Logiciel Statistique
R est un logiciel de statistique créé par Ross Ihaka & Robert Gentleman dans
les années 90.
Il est à la fois un langage informatique et un environnement de travail : les
commandes sont exécutées grâce a des instructions codées dans un langage
relativement simple, les résultats sont affichés sous forme de texte et les
graphiques sont visualises directement dans une fenêtre qui leur est propre.
Outil bien adapté pour la manipulation des données, les calculs matriciels,
l’analyse de données.
Il est un clone du logiciel S-plus qui est fondé sur le langage orienté objet S.
Avantages de R
Un logiciel multiplateforme
Windows
Linux
Mac OS X
Logiciel libre et gratuit
Il est parfaitement possible d’utiliser R sans spécialement maîtriser cette
langue
Logiciel très puissant à code source ouvert
Logiciel dont le développement est très actif
Logiciel avec d’excellentes capacités graphiques
Il possède, un système de documentation intégré très bien conçu.
Inconvénients de R
La documentation de référence et les principales ressources sont en anglais.
R nécessite des machines relativement puissantes pour travailler sur de grosses
données de plusieurs milliers d’individus.
Il nécessite un apprentissage continu pour maîtriser les syntaxes et les
commandes.
Philosophie de R
En général, on ne voit pas les données sur lesquelles on travaille ;
On ne dispose pas en permanence d’une vue des données sous forme de
tableau .
Dans R, par défaut, l’affichage est réduit au minimum, et c’est l’utilisateur qui
demande à voir des résultats supplémentaires ou plus détaillés.
Installation de R
R distribué par le CRAN (Compréhensive R Archive Network)
Adresse : http://cran.rproject.org/
L’installation varie selon les systèmes d’exploitation
Les fonctionnalités sont exactement les mêmes d’un système à l’autre
La plupart des programmes sont portables d’un système à l’autre
L’installation de R est très facile, il suffit de suivre les instructions.
Session de travail
Pour ouvrir une session R :
Sous Linux
Taper la commande R dans une fenêtre de commandes.
Indiquer le chemin du répertoire de travail.
Sous Windows
On clique sur l’icône R du bureau
Taper R dans l’onglet Office (Rechercher les programmes et fichier)
Sous Mac
On clique sur l’icône R dans Applications , ou
On se positionne dans le répertoire courant et on tape la comme R
Les différentes aides
L’aide en ligne.
Pour l’afficher directement dans l’interface, on tape:
help()
?
Pour l’afficher dans un navigateur au format HTML, on tape:
help.start()
L’aide sur le CRAN.
RsiteSearch(“nom de la commande”)
Création d’objet
La création d’un objet se fait par l’un des trois opérateurs
suivants:
<-
->
= (Pas du tout conseillé de l’utiliser)
Exemple:
1. B <- 41.3 # Attention, le séparateur décimal
doit être un point
2. X <- B
3. Y<- -5*(3.2)
Affichage et Suppression d’objets
On affiche la valeur d’un objet via la commande:
Print("nom de l’objet")
Ou vous tapez simplement le nom de l’objet
Pour connaître les objets de la session:
objects()
ls()
Pour supprimer un ou plusieurs objets:
rm()
Le type d’un objet
Objet vide que nous notons nul :
null
Objet booléen que nous notons logique :
logical
Nombre réel que nous notons numérique :
numeric
Nombre complexe que nous notons complexe :
complex
Chaîne de caractères que nous notons caractère :
character
Les vecteurs I
Le vecteur est un objet atomique, composé d’un ensemble de
valeurs. Différentes méthodes sont disponibles pour construire un
vecteur.
Vecteurs numériques :
1. Construction par la fonction collecteur « c » :
Exemple :
x <- c(5.6, -2, 78, 42.3) #vecteur de numériques
y <- c(x, 3, c(12, 8))
z <- y + 2 #Que remarquez vous?
2. Construction par l’opérateur séquence « : » :
Exemple :
a <- 2:9
Les vecteurs II
3. Construction par la fonction séquence « seq » :
Exemple :
b <- seq(1, 7, by = 0.5)
c <- seq(1, 6, length = 5)
4. Construction par la fonction « rep » :
Exemple :
d <- rep(1, 4)
e <- rep(c(1, 2), each = 4)
5. Construction par la fonction « scan » :
Exemple :
f <- scan(n = 4)
Les vecteurs
Vecteurs de caractères :
Il est possible de créer des vecteurs de caractères de la même façon,
en utilisant les fonctions « c » ou « rep ».
Exemple :
x <- c(‘A’, ‘BB’, ‘C1’)
y <- rep("A",5)
Il est aussi possible de créer des vecteurs de caractères grâce à la
commande « letters » qui contient les lettres de l’alphabet.
La commande « format » permet la mise en forme de données
numériques en chaîne de caractères de même longueur.
Pour la concaténation, on utilise la commande « paste » :
Les vecteurs
Vecteurs logiques :
Les vecteurs de booléens sont en général générés grâce à des
opérateurs logiques. Ils peuvent aussi être générés par les fonctions
seq, rep, c.
Exemple :
x <- c(-1,0,2)
test <- x > 1
(1+x^2)*(x > 1)
Les commandes « all » ou « any » peuvent être également utilisé.
Les vecteurs
Sélection d’une partie d’un vecteur :
Elle s’opère avec l’opérateur « [ ] » et un vecteur de
sélection.
Exemple :
v <- 1:100
v[6]
v[2:10]
v[c(6,6,1:2)]
v[10:1]
Exercices 1
1) Créez un vecteur V contenant les 200 premiers nombres entiers
2) Faites un tirage de 20 éléments dans ce vecteur que vous
nommez Y
3) Créez Z égale à V sans ses 5 premiers éléments
4) Créez W égale à V sans son premier et son dixième élément
5) Faites ressortir A égale aux éléments de Z qui sont supérieurs à
10 et inférieur à 25.
6) Faites ressortir B égale aux éléments de Y qui sont supérieurs à
10 ou inférieur à 25.
7) Faites ressortir C égale aux éléments de Y qui sont supérieurs à
10 et inférieur à 5.
8) Recherchez la coordonnée du plus petit du vecteur de x.
Exercices 2
A. À l’aide des fonctions rep, seq et c seulement, générer les
séquences suivantes :
1) 0 6 0 6 0 6
2) 1 4 7 10
3) 1 1 1 2 2 3
4) 1 5.5 10
5) 1 1 1 1 2 2 2 2 3 3 3 3
B. Générer les suites de nombres suivantes à l’aide des fonctions c
et rep seulement :
1) 1.1 1.2 1.3 1.4 1.5 1.6 1.7 1.8 1.9 2
2) 1 3 5 7 9 11 13 15 17 19
3) -2 -2 -1 -1 0 0 1 1 2 2
4) 10 20 30 40 50 60 70 80 90 100
Correction 1
1) V = 0:199
2) Y = sample(V, 20)
3) Z = V[-(1:5)]
4) W = V[-c(1,10)]
5) A = Z[(Z>10) & (Z<25)]
6) B = Z[(Y>10) | (Y<25)]
7) C = Z[(Y>10) & (Y<5)]
8) X = which(Y==min(Y)) ; which.min(Y) ;
(1:length(Y))[Y==min(Y)]
Les matrices, Création
Les matrices sont des objets atomiques, c’est-à-dire de même mode
ou type pour toutes les valeurs.
La fonction la plus utilisée pour créer une matrice est matrix qui
prend en arguments le vecteur d’éléments et le nombre de lignes ou
de colonnes de la matrice.
Exemple :
M <- matrix(c(1,17,12,3,6,0), ncol=2)
A <- matrix(1:10, nrow=2)
B <- matrix(1:10, nrow=2, byrow=TRUE)
C <- matrix(1:4, nrow=3, ncol=3)
d <- seq(1, 10, by=2)
D <- as.matrix(d)
Les matrices, Sélection
L’emplacement d’un élément dans une matrice est en général donné
par le numéro de sa ligne et de sa colonne. Ainsi, pour sélectionner
l’élément (i,j) de la matrice m, il faut écrire: m[i,j]
Exercice 3
Soit A la matrice carrée définie par les 16 premiers nombres impairs
1) Créer A
2) Sélectionner la deuxième colonne de A, que vous nommez B
3) Sélectionner la troisième ligne de A, que vous nommez C
4) Créer la matrice D égale à A sans sa première ligne
5) Sélectionner les colonnes de A pour lesquelles la valeur sur la
première ligne de A est strictement supérieur à 2.
Calcul sur les matrices
Fonctions utiles
Fonction Description
%*% Produit matriciel
t(…) Transposition d’une matrice
diag(…) Matrice identité d’ordre …
diag(vec) Matrice diagonale avec les valeurs du vecteur vec dans la diagonale
crossprod( , ) Produit croisé
det() Déterminant d’une matrice
solve() Inversion de matrice
svd() Décomposition en valeurs singulières
eigen() Diagonalisation d’une matrice
solve( , ) Résolution de système linéaire
chol() Décomposition de cholesky
qr() Décomposition QR
Exercice 4
A. Soient M et N deux matrices carrées à deux colonnes
1) Créer M et N
2) Créer L la matrice égale au produit croisé de N et M
3) Créer A égale au produit matriciel de M et de la transposée de N
4) Que remarquez-vous de L et A
5) Diagonaliser A
6) Résoudre l’équation Az = V, avec V = (1,2)
B. Soit la matrice : X <- matrix(1:120,ncol=12)
1) Affichez toutes les lignes de la matrice commençant par un nombre pair
2) Affichez toutes les lignes de la matrice dont la moyenne est inférieure à 60.
3) Sélectionnez la sous-matrice formée des lignes de la matrice dont la moyenne
est inférieure à 60 et des colonnes dont la somme est inférieure à 500
4) Sélectionnez la même sous-matrice, sauf la troisième ligne.
Les matrices, Opérations sur les lignes
et colonnes
Il est possible de concaténer plusieurs vecteurs en ligne ou en
colonne avec les fonctions rbind et cbind pour en faire une matrice.
Exemple :
M <- cbind(c(1,17,12,3,6,0), c(1,0,0,5,-2,1))
A <- cbind(c(1,1,1), c(0,1,1), c(0,0,1))
B <- rbind(c(1,1,1), c(0,1,1), c(0,0,1))
La fonction apply permet d’appliquer une fonction f aux lignes ou
aux colonnes de la matrice.
Exemple :
apply(A, MARGIN=2, sum)
Les facteurs
Les facteurs sont des vecteurs permettant la manipulation de
données qualitatives. La longueur est donnée par la fonction length,
le mode par mode et les modalités du facteur par levels.
Ils forment une classe d’objets et bénéficient de traitements
particuliers pour certaines fonctions, telle la fonction plot pour les
graphiques.
Trois fonctions permettent de créer les facteurs :
1. La fonction factor :
Sexe<-factor(c(‘M’,’M’,’F’,’M’,’F’,’M’,’M’,’M’))
2. La fonction ordered : Niveau <- ordered(c(‘débutant’, ‘moyen’,
‘champion’), levels=c(‘débutant’, ‘moyen’, ‘champion’))
Les facteurs
3. La fonction as.factor : salto <- c(1:5, 5:1) ; salto.f <-
as.factor(salto)
Exemple:
1. X <- factor(c("bleu", "vert", "bleu", "rouge","bleu" , "vert" ,
"vert"))
2. levels(X)
3. class(X)
Les listes
La liste est un objet hétérogène. C’est un ensemble
ordonnée d’objets qui n’ont pas toujours le même mode
ou la même longueur. Les objets sont appelés
« composantes de la liste ».
Les listes ont les deux attributs des vecteurs (length et
mode) et l’attribut supplémentaire names.
Les listes sont des objets importants car toutes les
fonctions qui retournent plusieurs objets le font sous la
forme d’une liste.
Les listes, Création
Les listes se créent avec la fonction list. Mais, il faudrait
au par avant définir les arguments qui interviendront
dans la liste.
Exemple :
V <- seq(2,10, by=3)
A <- matrix(1:8, ncol=2)
B <- factor(c(‘M’,’M’,’F’,’M’,’F’,’M’,’M’))
O <- ordered(c(‘débutant‘,'moyen’,‘champion’))
maliste <- list(V,A,B,O)
Pour nommer la liste, on utilise la fonction names.
Les listes, Extraction
Pour extraire une composante de la liste, on peut toujours le faire
en indiquant la position de l’élément que l’on souhaite extraire. Les
[[…]] permettent de retourner l’élément de la liste :
Exemple :
maliste[[2]]
maliste[[1]]
On peut aussi utiliser le nom de l’élément s’il existe, ce que l’on peut
écrire de deux façons :
maliste[[‘…’]]
maliste$...
Les listes, Extraction (Suite)
Il est possible d’extraire plusieurs éléments d’une même liste,
ce qui crée une sous-liste. Noter qu’ici, on utilise […] et non
[[…]]. Exemple : maliste[c(1,3)]
La liste dimnames.
C’est un attribut optionnel d’une matrice qui contient dans
une liste à deux composantes les noms des lignes et des
colonnes.
Exemple : x <- matrix(1:12, nrow=3, ncol=4)
nomlign <- c(‘ligne1’,’ligne2’,’ligne3’)
nomcol <- c(‘colonne1’,’colonne2’,’colonne3’, ‘colonne4’)
dimnames(x) <- list(nomlign, nomcol)
Les data-frames
Les data-frames sont des listes particulières dont les composantes sont
de même longueur, mais les modes peuvent être différents.
Les tableaux de données usuellement utilisés en statistique sont souvent
considérés comme des data-frames.
Les principales manières de créer un data-frame consistent à utiliser les
fonctions suivantes :
1. data.frame qui permet de concaténer des vecteurs de même taille et
éventuellement de modes différents
2. read.table qui permet de lire un tableau de données
3. as.data.frame qui permet de transformer une matrice, une liste, … en
data-frame
Les fonctions
Une fonction est un objet R. Un grand nombre de fonctions sont
prédéfinies dans R, cependant, il est possible de créer ses propres
fonctions.
Une fonction admet des arguments en entrée et retourne un résultat en
sortie.
Les arguments d’une fonction sont soient obligatoires soient
optionnels. Dans ce dernier cas, ils possèdent une valeur par défaut.
Exemple : la fonction rnorm()
Cette fonction admet trois arguments; n le nombre de valeurs à générer,
mean la moyenne et sd l’écart type. Ces deux derniers sont fixés à 0 et 1
par défaut.
Les fonctions
La plupart des fonctions retournent plusieurs résultats et l’ensemble de
ces résultats est contenu dans une liste.
Pour visualiser l’ensemble des sorties, il est nécessaire de connaître
l’ensemble des éléments de la liste en utilisant la fonction names.
Exercices
I. Création et inversion d’une matrice
1. Créer la matrice suivante:
𝐴 =
1 5 5 0
0 5 6 1
3 0 3 1
4 4 4 2
2. Nommer les lignes et les colonnes de cette matrice. La
ième ligne sera nommée Li et la jème colonne Cj.
3. Calculer le déterminant puis inverser la matrice en
utilisant les fonctions appropriées.
Exercices
I. Création et inversion d’une matrice
II. Sélection dans un data-frames
1. A partir du jeu de données iris disponible sous R, créer
un sous-jeu de données comportant uniquement les
données de la modalité versicolor de la variable species.
Appeler ce nouveau jeu de données iris2.
2. Trier par ordre décroissant les données de iris2 en
fonction de la variable Sepal.Length (utiliser la fonction
order).
Importer des données
Il existe trois fonctions principales pour importer un fichier texte
dans R. Ces fonctions sont récapitulées dans le tableau suivant:
1. L’instruction read.table()
Cette instruction permet de lire des données présente dans un fichier
(à sélectionner à partir d’une fenêtre de dialogue) et les rapatrier dans
R sous la forme d’un data.frame. Elle contient plusieurs paramètres
qui sont décrits dans le tableau suivant :
Importer des données
read.table(file=file.choose(), header=T, sep="t", dec=".", row.names=1)
Lors de l’utilisation de la fonction read.table, il est nécessaire de
spécifier la valeur du paramètre file qui doit contenir dans une chaine
de caractère, le nom du fichier ainsi que son chemin d’accès complet.
Exercice 1
Nous sommes en présence de la variable qualitative suivante:
Xqual=factor(c(rep(‘A’,60),rep(‘B’,20),rep(‘C’,17),rep(‘D’,3)))
1. Calculer les fréquences de chaque modalité
2. Afficher à l’écran l’intitulé des modalités dont l’effectif est inférieur à
5% de l’effectif total
3. Calculer les fréquences de chaque modalité sans la modalité de la
question précédente. Le résultat sera mis dans un vecteur proba
4. Sélectionner les individus prenant la modalité de la question 2. Leur
donner une valeur parmi les modalités restantes, selon un tirage dont
les probabilités sont calculées en question 3.
Exercice 2
1. Créez un dossier nommé DossierData_N°Groupe sur votre bureau à
partir de la commande setwd( ).
2. Téléchargez le fichier se trouvant à l’adresse suivante :
http://www.biostaticticien.eu/springR/Intima_Media.txt et sauvez
le dans votre dossier.
3. Utilisez la fonction readlines( ) pour visualiser le début de ce fichier.
4. Importez le fichier
5. Calculez l’âge moyen et la variance des tailles
Importer des données
2. L’instruction read.ftable( )
Il arrive parfois que l’on ne dispose pas de toutes les données
individuelles, mais uniquement d’un résumé présenté sous la forme
d’un tableau de contingence. Dans ce cas, il faut utiliser la fonction
d’importation read.ftable( ).
Supposons que le fichier Intima se présente comme suit :
On utilisera l’instruction suivante: Intima.table<-
read.ftable(« Intima_ftable.txt,row.var.names=c("SEXEE","tabac"),col.vars=list("alcool"=c
("ne boit pas","boit obligatoirement", "boit régulièrement")))
Importer des données
3. L’instruction scan( )
La fonction scan( ) possède de très nombreux paramètres et elle est à
privilégier lorsque les données ne sont pas organisées sous la forme
d’un tableau rectangulaire. Prière consulter la documentation à
son sujet.
Supposons que le fichier Intima se présente comme suit :
Les commandes conseillées pour lire ce fichier sont :
Exporter des données
Pour exporter des données, on utilise la commande write.table( ).
On peut exporter des fichiers sous format txt ou csv et également
dans Excel.
Exemple :
write.table(tablo,"nomfichier.txt",sep=";")
write.table(tablo,"nomfichier.csv",sep="t")
Tapez les commandes suivantes:
Ouvrez Excel ou OpenOffice Calc et faites ctrl+v.
Que remarquez-vous?
Statistiques descriptives
Nous allons fonder tous nos exemples sur le fichier de données
nutriage.xls que vous pouvez télécharger à l’emplacement suivant :
http://www.biostatisticien.eu/springR /nutriage.xls
1. Importez le fichier dans votre dossier.(utilisez le package gdata pour
pouvoir utiliser read.xls)
2. Observer les 5 premières lignes du fichier.
3. Recodez les modalités de la variable sexe en utilisant la fonction
levels ( ).
4. Effectuez un tri à plat en effectif sur la variable matgras.
5. Effectuez un tri à plat en fréquence sur la variable matgras.
Graphiques
1. Diagramme en croix
Le diagramme en croix affiche pour chaque observation une petite barre
horizontale dans la colonne de la modalité correspondante. Il n’est pas
intégré au logiciel R, mais nous pouvons le programmer au moyen de la
fonction plot( ) et de son paramètre pch. La fonction obtenue sera
appelée diagcroix( ). A développer dans la partie Programmation.
2. Diagramme en points
Le diagramme en points s’obtient par l’utilisation de la fonction
dotchart( ) couplé à la fonction table( ). Prenez l’exemple suivant:
Graphiques
3. Diagramme en tuyaux d’orgue
Il s’obtient à partir de la fonction barplot( ). Vous pouvez également
prendre l’exemple suivant:
4. Diagramme de Pareto
Son obtention se fait également à partir de la fonction barplot( ). Prenez
l’exemple suivant :
Graphiques
5. Diagramme empilé
Il s’obtient également à partir de la fonction barplot( ) en fournissant
un objet de type matrix comme premier paramètre effectif.
Exemple:
Graphiques
6. Diagramme circulaire
Il s’obtient à partir de la fonction pie( ).
Exemple:
Require("RColorBrewer")
col<- brewer.pal(8,« Paste12")
pie(table(matgras),col=col)
7. Diagramme tuyaux d’orgue avec fréquence cumulée
Il s’obtient en couplant les fonctions barplot( ) et points( ).
Graphiques
8. Diagramme en bâton
Il s’obtient à partir de la fonction plot( ) appliquée à un tableau de
contingence.
9. Graphe de la fonction de répartition empirique
Il s’obtient en couplant les fonctions plot( ) et ecdf( ).
Graphiques
10. Boîte à moustaches
Elle s’obtient à partir de la fonction boxplot( ).
11. Histogramme
Il s’obtient à partir de la fonction hist( ).
Structures de contrôle
Commandes groupées
Un groupe de commande est comme une parenthèse en
mathématique: les commandes groupées sont effectuées ensemble.
Sous R, le groupe de commande est délimité par des accolades:
{
+expr1
+expr2
+…
+}
Deux commandes successives sont séparées par un retour à la ligne.
Cependant, il est possible de séparer deux commandes en les
conservant sur une même ligne.
Structures de contrôle
Les boucles for ou while
Les boucles classiques sont disponibles sous R.
Boucle for
De manière générale, la boucle for s’écrit :
for (i in vecteur) {
+expr1
+ …
+}
Exemple :
for(i in 1:99) print(i)
for(i in seq(1,99,by=2)) print(i)
Structures de contrôle
Boucle while
De manière générale, la boucle while s’écrit :
while (condition) {
+expr1
+ …
+}
Exemple :
i=1
while(i<3) {
print(i)
i=i+1}
Structures de contrôle
Conditions if
Il s’agit d’exécuter un ordre sous condition : l’ordre est exécuté si et
seulement si la condition est vraie. Il s’écrit plus généralement :
if (condition) {
+expr1
+ …
+}
Exemple :
i=1
repeat{
print(i)
i=i+1
if(i>3) break}
Structures de contrôle
Conditions if, else
Il s’agit d’exécuter un ordre sous condition : l’ordre est exécuté si et
seulement si la condition est vraie. Il s’écrit plus généralement :
if (condition) {
+expr1
+ …
+} else{
+ exprn
+…
+}
Exemple
Prenons la définition de la variance d'un échantillon de
taille n d'une variable continue X.
Dans un langage de programmation classique, nous écririons
quelque chose du type :
Exemple
Dans R nous pouvons immédiatement travailler sur les
vecteurs et donc utiliser la syntaxe suivante:
Exercices
1. Écrire le programme permettant de retourner la valeur absolue
d’un nombre. (Fonction valeur absolue)
2. Ecrire le programme permettant de retourner l’inverse d’une
valeur.
3. Ecrire le programme permettant de faire la composée des deux
fonctions précédentes.