Logiciel R2223
Logiciel R2223
Logiciel R2223
1 Initiation au logiciel R 2
1.1 Présentation du logiciel R et RStudio . . . . . . . . . . . . . . . . . . 2
1.1.1 Téléchargement et installation de R . . . . . . . . . . . . . . . 2
1.1.2 Téléchargement et installation de RStudio . . . . . . . . . . . 3
1.1.3 Les menus et fenêtres de RStudio . . . . . . . . . . . . . . . . 3
1.2 Premières manipulations . . . . . . . . . . . . . . . . . . . . . . . . . 4
1.2.1 Principes généraux de R . . . . . . . . . . . . . . . . . . . . . 4
1.2.2 Création d'objets . . . . . . . . . . . . . . . . . . . . . . . . . 5
1.2.3 Script . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6
1.2.4 Remarques sur la console de R . . . . . . . . . . . . . . . . . . 6
1.3 Quitter et sauvegarder sous le logiciel R . . . . . . . . . . . . . . . . 7
1.3.1 Quitter le logiciel R . . . . . . . . . . . . . . . . . . . . . . . . 7
1.3.2 Sauvegarder sous le logiciel R . . . . . . . . . . . . . . . . . . 7
1.4 Données dans R . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7
1.4.1 Mode d'un objet . . . . . . . . . . . . . . . . . . . . . . . . . 7
1.4.2 Type d'un objet . . . . . . . . . . . . . . . . . . . . . . . . . . 11
1.4.3 Les vecteurs . . . . . . . . . . . . . . . . . . . . . . . . . . . . 11
1.4.4 Les matrices . . . . . . . . . . . . . . . . . . . . . . . . . . . . 16
1.4.5 Les tableaux . . . . . . . . . . . . . . . . . . . . . . . . . . . . 22
1.4.6 Les listes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 23
1.4.7 Les tableaux de données . . . . . . . . . . . . . . . . . . . . . 23
1.4.8 Opérateurs mathématiques et logiques . . . . . . . . . . . . . 24
1.5 Quelques rappels sur les lois sous R . . . . . . . . . . . . . . . . . . . 26
1.6 Les fonctions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 27
1.6.1 Construction d'une nouvelle fonction . . . . . . . . . . . . . . 27
1.6.2 Boucles et vectorisation . . . . . . . . . . . . . . . . . . . . . 28
1.7 Les graphiques . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 30
1.7.1 Les fonctions graphiques . . . . . . . . . . . . . . . . . . . . . 30
1.7.2 Gestion de la fenêtre graphique . . . . . . . . . . . . . . . . . 41
1.7.3 Ajout des éléments au graphique . . . . . . . . . . . . . . . . 41
1.8 Racines, dérivation et intégration de fonctions . . . . . . . . . . . . . 43
1.8.1 Racines . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 43
1.8.2 Dérivée . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 44
1.8.3 Intégration . . . . . . . . . . . . . . . . . . . . . . . . . . . . 44
1
Chapitre 1
Initiation au logiciel R
Avantages
R est gratuit
R est multiplateforme (Linux, Mac OS X, Windows)
R est très puissant car les méthodes statistiques récentes sont rapidement dispo-
nibles
R dispose de beaucoup d'aide, d'informations et de forum à ce propos sur le web.
Inconvénients
Le logiciel et la documentation de base sont en anglais ;
R s'apparente davantage à un langage de programmation qu'à un logiciel propre-
ment dit.
2
monde. Cette organisation présente au moins deux avantages majeurs : pouvoir
choisir un miroir proche de chez vous où que vous soyez dans le monde ou un miroir
de secours lorsque le miroir que vous avez l'habitude d'utiliser est indisponible ;
Choisir la version en fonction de votre système d'exploitation ;
Après le téléchargement, double-cliquer sur l'icône de R puis suivre les instructions
jusqu'à la n de l'installation.
Les fenêtres
Parmi les fenêtres qui s'ouvrent quand on lance RStudio , on distingue en parti-
culier :
3
La console, fenêtre principale où sont exécutées les commandes et où apparaissent
les résultats.
L'éditeur de texte : fenêtre dans lequel on tapera les commandes. On peut ensuite
exécuter simplement les commandes dans la console en sélectionnant une ligne ou
un bloc de commandes, puis en cliquant sur run ou en tapant CTRL+Entrée. Ces
commandes sont alors copiées dans la console et exécutées.
Les fenêtres d'informations (historique des commandes, objets en mémoire, aide,
visualisation de chier, etc...).
Les fenêtres graphiques.
[1] 8
[1] -2
[1] 15
[1] 0.6
[1] 9
> 3*2-5*(2-4)/6
[1] 7.666667
R permet de faire des calculs plus élaborés en utilisant des fonctions (racine carrée,
logarithme népérien, arrondi, etc.)
4
[1] 2
[1] 0.6931472
[1] 2.65
> pi
[1] 3.141593
> a<-5;
> 3->b;
> c<-a+b;
Notez que R n'a pas aché les valeurs de a, b et c. Pour pouvoir les acher, il
faut écrire les noms de ces objets et de les exécuter :
> a;b;c
[1] 5
[1] 3
[1] 8
Toutefois, est possible d'acher directement le résultat d'une opération qui a été
aectée à un objet, sans pour autant saisir et exécuter le nom de cet objet. Pour
cela, il sut d'entourer cette instruction d'une paire de parenthèse.
[1] 5
[1] 3
[1] 8
5
Pour nommer un objet, on peut utiliser les lettres minuscules "a-z" et majuscules
"A-Z", les chires 0-9, le point "." et le caractère de soulignement "_". Cependant il
faut toujours commencer par une lettre, éviter les lettres accentuées car elles risquent
de nuire à la portabilité du code. Les noms d'objets ne peuvent commencer par un
chire. S'ils commencent par un point, le second caractère ne peut être un chire.
Certains noms sont utilisés par le système R, aussi vaut-il mieux éviter de les utiliser.
En particulier, éviter d'utiliser c, q, t, C, D, I, di, length, mean, pi, range, var. La
liste des noms prédénis dans la bibliothèque de base peut être consultée ainsi :
[1] 1261
Exemple : Identier les noms valides des noms invalides : foo <- 5 ; foo.123 <-
5 ; foo_123 <- 5 ; 123foo <- 5 ; .foo <- 5 ; .123foo <- 5.
Attention, si un objet existe déjà et qu'une nouvelle valeur lui est assignée, la
valeur précédente est automatiquement écrasée. Ainsi, il peut être bon d'acher la
liste des objets utilisés. Ceci s'eectue au moyen de la commande ls.
1.2.3 Script
An de sauvegarder son travail ou de faire des rapports, il est utile de créer des
scripts. Il s'agit d'un chier texte contenant une succession de commandes R. Pour
créer et exécuter un script il faut suivre la procédure suivante :
6
ligne.
6. Pour rappeler les commandes déjà exécutées, on utilise la touche "Flèche vers le
haut".
7. Pour parcourir la ligne de commande active, en appuie sur les touches "Flèche
vers la gauche" et "Flèche vers la droite".
Les données se caractérisent par un type (vecteur, tableau, ...), un mode (numé-
rique, caractère, logique), une taille, une valeur et un nom.
> x<-pi;
> y<-"bonjour";
7
> z<-2+1i;
> l<- TRUE;
> mode(x);
[1] "numeric"
> mode(y);
[1] "character"
> mode(z);
[1] "complex"
> mode(l)
[1] "logical"
> x <-1
> is.null(x); is.logical(x); is.numeric(x); is.complex(x); is.character(x)
[1] FALSE
[1] FALSE
[1] TRUE
[1] FALSE
[1] FALSE
8
Table 1.2 Tableau de conversion d'un mode à un autre.
De en Fonction Coversions
FALSE→ 0
logique numérique as.numeric
TRUE→ 1
FALSE→ "FALSE"
logique caractère as.character
TRUE→ "TRUE"
0→ FALSE
numérique logique as.logical
autres nombres → TRUE
La taille d'un objet est le nombre d'éléments qu'il contient. Elle s'obtient à l'aide
de la fonction length.
[1] 1
> x<-NA
> x+1
[1] NA
Certaines fonctions (sum, mean, par exemple) ont par conséquent un argument na.rm
qui, lorsque TRUE, élimine les données manquantes avant de faire un calcul.
9
[1] NA
> mean(x)
[1] NA
> sum(x, na.rm=TRUE)
[1] 15
> mean(x, na.rm=TRUE)
[1] 5
La valeur NA n'est égale à aucune autre, pas même elle-même (selon la règle ci-
dessus, le résultat de la comparaison est NA) :
> NA == NA
[1] NA
Pour savoir où se trouvent les valeurs manquantes d'un objet x, on pose la question :
is.na(x). Ceci retourne un booléen de même longueur que x. La question est posée
élément par élément. Dans le cas d'un vecteur, cela renvoie un vecteur logique de
même longueur que x avec TRUE si l'élément correspondant de x est NA et FALSE
sinon.
10
1.4.2 Type d'un objet
Les données manipulées par R peuvent être de diérents types :
un vecteur (vector) : suite d'éléments à une dimension
une matrice (matrix) : suite d'éléments à 2 dimensions
un tableau (array) : suite d'éléments à k dimensions
un facteur (factor) : suite d'éléments catégoriels avec les diérents niveaux possibles
un tableau de données (data.frame) : ensemble de vecteurs de même longueur
une liste (list) : peut contenir n'importe quel type d'objet
série temporelle (time series).
[1] 2 5 7 9
[1] 2 5 7 9 -3
Il est possible (et souvent souhaitable) de donner une étiquette à chacun des éléments
d'un vecteur.
a b c d
2 5 7 9
a b c d
2 5 7 9
11
[1] 1 2 3 4 5 6
[1] 9 8 7 6 5 4 3 2 1
[1] 1.0 1.5 2.0 2.5 3.0 3.5 4.0 4.5 5.0 5.5 6.0
[1] 1 1 1 1
[1] 1 1 1 2 2 2
Construction par la fonction scan. R demande alors d'entrer les éléments au fur
et à mesure. Avec l'argument n=5, on précise que 5 éléments seront collectés. Si on
ne précise pas n, on arrête de collecter en mettant une valeur vide.
> scan(n=5)
[1] "a" "a" "b" "b" "b" "b" "b" "b" "b"
12
Les vecteurs logiques
Les vecteurs de booléens sont en général générés grâce à des opérations logiques :
">", ">=", "<", "<=", "==", " !=", etc. Ils peuvent aussi être générés par les
fonctions c ; rep ou seq. Ils permettent des sélections complexes ou des opérations
de conditions.
> 1>0
[1] TRUE
Cette commande retourne un vecteur logique de longueur 1 qui est TRUE, puisque
1 est plus grand que 0. La commande
> x>3
retourne un vecteur logique de même longueur que x. Ses éléments ont la valeur
TRUE quand l'élément correspondant satisfait la condition et FALSE sinon. Lors
d'opérations arithmétiques, les logiques sont transformés en numériques avec la
convention que les FALSE sont transformés en 0 et les TRUE en 1.
> x<-c(-1, 0, 2)
> x>1
> (1+x^2)*(x>1)
[1] 0 0 5
On peut aussi utiliser les fonctions all ou any. La fonction all renvoie TRUE si tous
les éléments satisfont la condition et FALSE sinon. La fonction any renvoie TRUE
dès que l'un des éléments satisfait la condition, FALSE sinon.
> all(x>1)
[1] FALSE
> any(x>1)
[1] TRUE
Remarque
Si l'on mélange dans un même vecteur des objets de mode diérents, il y a conver-
sion automatique vers le mode pour lequel il y a le moins de perte d'information,
c'est-à-dire vers le mode qui permet le mieux de retrouver la valeur originale des
éléments.
13
[1] 5 1 0
A C
2 -1
Sélection avec un vecteur d'entiers négatifs. Les éléments se trouvant aux po-
sitions correspondant aux entiers négatifs sont alors éliminés du vecteur.
A D E
2 -5 8
A B C D E
TRUE TRUE FALSE FALSE TRUE
A B E
2 4 8
14
Sélection avec un vecteur de chaînes de caractères. Utile pour extraire les
éléments d'un vecteur à condition que ceux-ci soient nommés :
B D
4 -5
L'indice est laissé vide. Tous les éléments du vecteur sont alors sélectionnés.
> x[ ]
A B C D E
2 4 -1 -5 8
[1] 1 5 NA 8 NA NA
[1] 1 5 0 8 0 0
[1] 1 -5 0 8 -2
[1] 3 4 5 6 7 8 9 10 11 12 13 14
> v * -12:-1
[1] -12 -22 -30 -36 -40 -42 -42 -40 -36 -30 -22 -12
> v + 1:3
15
[1] 2 4 6 5 7 9 8 10 12 11 13 15
[1] TRUE TRUE FALSE FALSE FALSE FALSE TRUE TRUE TRUE TRUE
16
On a la possibilité d'attribuer des noms aux lignes et aux colonnes d'une matrice
via l'option dimnames (ces noms doivent être de type character) ou rownames et
colnames, respectivement.
> dimnames(A)<-list(c("ind 1", "ind 2", "ind 3"), c("var 1", "var 2", "var 3"));
Pour connaître les dimensions d'une matrice, on utilise la fonction dim. La longueur
length d'une matrice donne le nombre total d'éléments de cette matrice et le mode
mode, correspond au mode des éléments de cette matrice.
> dim(A)
[1] 3 3
> length(A)
[1] 9
> mode(A)
[1] "numeric"
A[i,] retourne la ligne i sous la forme d'un vecteur. Pour la ligne i sous la forme
d'une matrice uniligne et non plus d'un vecteur, on utilise A[idrop=F]. Ce qui
permet de conserver le nom de la ligne.
A[,j] retourne la colonne j sous la forme d'un vecteur. De même, pour conserver le
nom de la colonne, on utilise l'argument drop : A[,j,drop=F].
Pour sélectionner plusieurs lignes ou colonnes, on utilise l'opérateur : pour recueillir
les indices de ces lignes ou colonnes (si elles sont contiguës) et le collecteur c (si elles
ne sont pas contiguës).
17
> A[2,3] # sélection de l'élément à la ligne 2 et colonne 3 de A
[1] 6
var 3
ind 1 3
ind 2 6
ind 3 9
> A[1:2,]
18
var 1 var 3
ind 1 1 3
ind 2 4 6
ind 3 7 9
var 1 var 2
ind 2 4 5
ind 3 7 8
[,1] [,2]
[1,] 3 4
[2,] 7 8
C'est donc une matrice, alors que l'instruction suivante retourne un vecteur conte-
nant les valeurs de m supérieures à 2 :
> m[m>2]
[1] 5 6 3 7 4 8
Pour remplacer les valeurs de m supérieures à 2 par des NA, on utilise la commande
> m[m>2]<-NA; m
19
Table 1.3 Fonctions utiles en calcul matriciel.
Fonction Description
A%*%B produit de deux matrices A et B
t(A) transposée de A
det(A) déterminant de A
qr(A) décomposition QR de A
[,1] [,2]
[1,] 1 3
[2,] 2 4
[,1] [,2]
[1,] 5 6
[2,] 7 8
> 5 * A
20
[,1] [,2]
[1,] 5 15
[2,] 10 20
> A + B
[,1] [,2]
[1,] 6 9
[2,] 9 12
> A * B
[,1] [,2]
[1,] 5 18
[2,] 14 32
> A / B
[,1] [,2]
[1,] 0.2000000 0.5
[2,] 0.2857143 0.5
> A * c(2, 3)
[,1] [,2]
[1,] 2 6
[2,] 6 12
[,1] [,2]
[1,] 23 31
[2,] 34 46
eigen() decomposition
$values
[1] 68.9419802 0.0580198
$vectors
[,1] [,2]
[1,] -0.5593385 -0.8038173
[2,] -0.8289393 0.5948762
La fonction eigen retourne les valeurs propres dans l'objet values et les vecteurs
propres dans l'objet vectors. Si on veut extraire le premier vecteur propre, il sut
d'écrire :
21
> eig$vectors[,1]
[1] -0.5593385 -0.8289393
23x + 31y = 1
Pour résoudre le système d'équations suivant : A =
34x + 46y = 2
qui revient à écrire Dz = V , avec V = c(1, 2), on utilise la fonction solve :
> V=c(1, 2)
> solve(D,V)
[1] -4 3
Les solutions sont donc x = −4 et y = 3.
La fonction apply permet d'appliquer une fonction f aux lignes (MARGIN=1)
ou aux colonnes (MARGIN=2) de la matrice.
> A=matrix(1:6, ncol=3); A
[,1] [,2] [,3]
[1,] 1 3 5
[2,] 2 4 6
> apply(A, MARGIN=2, sum) # sommes par colonne
[1] 3 7 11
> apply(A, 1, mean) # moyennes par lignes
[1] 3 4
, , 2
22
1.4.6 Les listes
La liste est un objet hétérogène. C'est un ensemble ordonné d'objets qui n'ont
pas toujours même mode ou même longueur. Les objets sont appelés composantes
de la liste. Ces composantes peuvent avoir un nom. La fonction de base pour créer
des listes est list.
> x[1]
$size
[1] 1 5 2
> x[[1]]
[1] 1 5 2
Une autre (la meilleure, en fait) façon d'extraire un seul élément d'une liste est par
son étiquette avec l'opérateur $.
> x$size
[1] 1 5 2
[1] 1 2 3 4 5
23
nom.var1 nom.var2
1 1 a
2 2 b
3 3 c
4 4 d
5 5 d
Un data frame peut être indicé à la fois comme une liste et comme une matrice.
Pour convertir un autre type en data frame, on utilise la fonction as.data.frame.
Les fonctions rbind et cbind peuvent être utilisées pour ajouter des lignes ou
des colonnes à un data frame. On peut rendre les colonnes d'un data frame (ou d'une
liste) visibles dans l'espace de travail avec la fonction attach, puis les masquer avec
detach.
24
Table 1.5 Principaux opérateurs du langage R, en ordre décroissant de priorité
Opérateur Fonction
$ Extraction
Puissance
: Génération de suite
*, / Multiplication, division
+, - Addition, soustraction
! Négation logique
|, || "Ou" logique
> 5 %% 2
[1] 1
> 5 %% 1:5
[1] 0 1 2 1 0
> 10 %% 1:15
[1] 0 0 1 2 0 4 3 2 1 0 10 10 10 10 10
[1] 5 2 1 1 1
[1] 10 5 3 2 2 1 1 1 1 1 0 0 0 0 0
25
1.5 Quelques rappels sur les lois sous R
Student t df
Pour certaines lois, les paramètres ont des valeurs par défaut : parmi les plus
utilisées, la loi uniforme porte sur l'intervalle [0,1] et la loi normale est centrée
réduite.
Pour eectuer un calcul avec une de ces lois, il sut d'utiliser comme fonction
l'une des appellations R ci-dessus avec le préxe d pour une densité, p pour proba-
bilité, q pour quantile et r pour random. Ainsi :
dnorm() représente la fonction de densité de probabilité de la loi normale.
pnorm() représente la fonction de répartition de la loi normale.
26
qnorm() représente la fonction réciproque de la fonction de répartition de la loi nor-
male.
rnorm() représente la fonction permettant de faire des tirages aléatoires selon une
loi normale.
Quelques exemples
La commande dbinom(x=3, 10, 0.3) renvoie P (Y = 3) où Y suit une Binomiale
de paramètre n = 10 et p = 0.3. On peut aussi se contenter de taper dbinom(3, 10,
0.3).
pbinom(3, 10, 0.3) renvoie P (Y ≤ 3) où Y suit une Binomiale de paramètre n = 10
et p = 0.3.
qbinom(0.6,10,0.3) renvoie le plus petit entier k tel que P (Y ≤ k) ≥ 0.6. C'est-à-
dire 3 ici.
Si l'on tape : a=dpois(x=0 :30,lambda=3), on obtient un vecteur a 31 coordonnées
dont la ième contient la valeur P (X = i) où X est une v.a qui suit un loi de Poisson
de paramètre λ = 3.
runif(10,0,20) renvoie 10 valeurs tirées selon la loi uniforme sur l'intervalle [0 ; 20].
pnorm(3) renvoie P (Z ≤ 3) où Z suit une N (0; 1). On peut également taper
pnorm(3,mean=0,sd=1) ou pnorm(3,0,1) ou encore pnorm(q=3,mean=0,sd=1).
Pour une loi normale générale, la commande pnorm(q=9,mean=5,sd=2) ren-
voie P (X ≤ 9) où X suit une N (5; 2). La encore, on peut se contenter de taper
pnorm(9,5,2).
La commande plot(dnorm(x=20 :100,mean=60,sd=10)) vous renvoie l'allure dis-
crétisée de la densité d'une N (60; 10).
La commande qchisq(0.9, 5) vous renvoie le nombre z (quantile d'un χ2 à 5 ddl)
tel que P (X < z) = 0.9, où X suit χ2 (5).
27
Bloc d'instructions
}
NomFonction est le nom de la fonction (les règles pour les noms de fonctions
étant les mêmes que celles présentées ci-dessus pour tout autre objet). Les accolades
signalent le début et la n du code source de la fonction ainsi dénie, tandis que
les crochets ne font pas partie de l'expression mais indiquent le caractère facultatif
des valeurs par défaut des arguments. Pour une fonction donnée, la liste de ses
arguments (avec les valeurs par défaut éventuelles) est donnée par la fonction args.
Les arguments des fonctions peuvent être abrégés (tant que l'abréviation n'est pas
ambiguë).
Bloc d'instructions est le corps de la fonction, c'est soit une instruction ou un
groupe d'instructions. Dans le cas d'un groupe d'instructions, deux instructions suc-
cessives sont séparées par un retour à la ligne (touche entrée) ou sont conservées sur
une même ligne mais en les séparant par un point-virgule.
Lors de l'exécution, R renvoie par défaut le résultat de la dernière expression
évaluée dans la fonction. On évitera donc que la dernière expression soit une aecta-
tion, car la fonction ne retournera alors rien et on ne pourra utiliser une construction
de la forme x < −f () pour aecter le résultat de la fonction à une variable.
Si on doit retourner un résultat sans être à la dernière ligne de la fonction (à l'inté-
rieur d'un bloc conditionnel, par exemple), on utilise la fonction return. L'utilisation
de return à la toute n d'une fonction est tout à fait inutile et considérée comme
du mauvais style en R.
Lorsqu'une fonction doit retourner plusieurs résultats, il est en général préférable
d'avoir recours à une liste nommée.
[1] 4
28
+ expr2
+ ...
+ }
Boucles while
Une autre possibilité de boucle est la condition while. Sa syntaxe générale est la
suivante :
> i <- 1
> while (i<3){
+ print(i)
+ i<-i+1
+ }
permet d'acher i et de l'augmenter de 1 tant que i est inférieur à 3.
Une dernière possibilité de boucle est l'ordre repeat. Il se comprend comme répéter
indéniment des ordres. La sortie de boucle est assurée par l'ordre break. Cet ordre
peut être utilisé quelle que soit la boucle. Un exemple est donné dans le paragraphe
suivant.
> if (condition){
+ expr1
+ expr2
+ ...
+ } else{
+ expr3
+ expr4
+ ...
+ }
29
Attention, l'ordre else doit être sur la même ligne que la parenthèse fermante "}" de
la clause if.
Si nous souhaitons utiliser la boucle repeat pour imprimer i variant de 1 à 3 compris,
nous devons sortir de la boucle, avant l'impression, quand i est supérieur à 3 :
> i<-1
> repeat{
+ print(i)
+ i <- i+1
+ if(i>3) break}
Ici, si i est supérieur à 3, nous n'avons à eectuer qu'un ordre break (break), il n'est
donc pas utile de grouper les commandes.
Vectorisation
Les boucles et structures de contrôle peuvent cependant être évitées dans la
plupart des situations et ce grâce à la vectorisation. La structure vectorielle rend les
boucles implicites dans les expressions. Considérons l'addition de deux vecteurs :
> z <- x + y
Cette addition pourrait être écrite avec une boucle comme cela se fait dans la plupart
de langages :
30
Table 1.7 Principaux types de graphiques basiques pour une seule variable x.
Type de graphique Exemple d'appel de fonction Type de x
diagramme en secteurs (pie chart) pie(table(x), ...) facteur
diagramme à barres (bar plot) barplot(table(x), ...) facteur
diagramme quantile-quantile
qqnorm(x, ...) vecteur numérique
théorique normal
Exemple 1
On s'intéresse à la variable 'état-civil' notée X et à la série statistique des valeurs
prises par X sur 20 personnes.
On a M M D C C M C C C M C M V M V D C C C M, où C : célibataire, M :
marié(e), V : veuf(ve) et D : divorcée.
> X=c("Marie(e)","Marie(e)","Divorce(e)","Celibataire","Celibataire",
+ "Marie(e)","Celibataire", "Celibataire","Celibataire","Marie(e)",
+ "Celibataire","Marie(e)","Veuf(ve)","Marie(e)", "Veuf(ve)",
+ "Divorce(e)","Celibataire","Celibataire","Celibataire","Marie(e)")
> T1=table(X); T1
X
Celibataire Divorce(e) Marie(e) Veuf(ve)
9 2 7 2
31
Celibataire
Divorce(e)
Veuf(ve)
Marie(e)
> T1
X
Celibataire Divorce(e) Marie(e) Veuf(ve)
9 2 7 2
32
8
6
4
2
0
Exemple 2
Un quartier est composé de 50 ménages, et la variable Y représente le nombre
de personnes par ménage.
11111222222222333333333333333444444444455555566688
> Y=c(1,1,1,1,1,2,2,2,2,2,2,2,2,2,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,
+ 4,4,4,4,4,4,4,4,4,4,5,5,5,5,5,5,6,6,6,8,8)
> T2=table(Y); T2
Y
1 2 3 4 5 6 8
5 9 15 10 6 3 2
> plot(T2,type="h",xlab="",ylab="",main="",frame=0,lwd=3)
33
15
10
5
0
1 2 3 4 5 6 8
Exemple 3
On mesure la taille en centimètres de 50 élèves d'une classe.
152 152 152 153 153 154 154 154 155 155 156 156 156 156 156 157 157 157 158 158
159 159 160 160 160 161 160 160 161 162 162 162 163 164 164 164 164 165 166 167
168 168 168 169 169 170 171 171 171 171.
> S=c(152,152,152,153,153,154,154,154,155,155,156,156,156,156,156,157,
+ 157,157,158,158,159,159,160,160,160,161,160,160,161,162,162,162,163,
+ 164,164,164,164,165,166,167,168,168,168,169,169, 170,171,171,171,171)
> T3=table(cut(S, breaks=c(151,155,159,163,167,171))); T3
34
0.06
0.05
0.04
0.03
0.02
0.01
0.00
> boxplot(S)
35
170
165
160
155
> qqnorm(S)
36
170
165
Normal Q−Q Plot
Sample Quantiles
160
155
−2 −1 0 1 2
Theoretical Quantiles
> poids=c(60,61,64,67,68,69,70,70,72,73,75,76,78,80,85,90,96,96,98,101)
37
> taille=c(155,162,157,170,164,162,169,170,178,173,180,175,173,175,179,
+ 175,180,185,189,187)
> plot(taille,poids)
100
90
poids
80
70
60
taille
38
8
6
Fonction polynomiale de degré deux
x2−4*x +3
4
2
0
0 1 2 3 4 5
39
8
6
x^2 − 4 * x + 3
4
2
0
40
8
Graphiques de f(x) et g(x)
f(x)
g(x)
6
4
y
2
0
0 1 2 3 4 5
> plot(1:10,1:10,xlab=bquote(x[i]),ylab=bquote(y[i]))
> text(3,6,"du texte")
41
> text(4,9,expression(widehat(B) == (X^T * X)^{-1} * X^T * y))
10
B = (XTX)−1XTy
8
du texte
6
yi
4
2
2 4 6 8 10
xi
La fonction legend()
Cette fonction est utilisée pour ajouter une légende à un graphique existant.
> plot(1:4,1:4,col=1:4)
> legend(x=3,y=2.5,legend=c("a","b","c","d"),fill=1:4)
42
Voici deux tableaux résumant quelques arguments et paramètres graphiques les
plus communs :
1.8.1 Racines
Les racines d'une fonction f sont dénies comme étant les solutions de l'équation
f (x) = 0.
43
solution analytique à ce simple problème est :
> uniroot(f=function(x){cos(x^2)},lower=0,upper=2)$root
[1] 1.253319
> uniroot(f=function(x){x-2},lower=0,upper=3)$root
[1] 2
1.8.2 Dérivée
La dérivée des expressions simples s'obtient à partir de la fonction D.
1.8.3 Intégration
Le calcul intégral s'eectue à partir de la fonction integrate.
44
Bibliographie
[1] Pierre-André Cornillon, Arnaud Guyader, François Husson, Nicolas Jégou, Jolie
Josse, Maela Kloareg, Eric Matzner-Lober, Laurent Rouvière, Statistiques avec
R, 3è édition revue et augmentée, Pratique de la Statistique, Presses universi-
taires de Rennes, 2012, 296p.
[2] Emmanuel Paradis, R pour les débutants, 2005, 81p.
[3] Vincent Goulet, Introduction à la programmation en R, 5è édition, Bibliothèque
et Archives Canada, 2016, 218p.
[4] Frédéric Bertrand, Myriam Maumy-Bertrand, Initiation à la statistique avec
R : Cours, exemples, exercices et problèmes corrigés, 2è édition ; DUNOD, 2014,
417p.
[5] Christophe Genolini, Lire ; Compter ; Tester... avec R Préparation des données
/ Analyse univariée / Analyse bivariée, 31p.
[6] Yves Tillé, Résumé du cours de statistique descriptive, 2010, 172p.
[7] Sophie Baillargeon, Graphiques en R (notes de cours) ;
https ://stt4230.rbind.io/communication_resultats/graphiques_r/
[8] Christophe Chesneau. Introduction aux graphiques avec R. Licence. France.
2016. cel-01389940f
[9] https ://membres-ljk.imag.fr/Bernard.Ycart/mel/dr/node7.html
45