Null 1
Null 1
MTH229
Introduction au logiciel
Janvier 2023
TABLE DES MATIÈRES
0 Note introductive 5
0.1 Bref descriptif du cours . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5
0.2 Objectif général . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5
0.3 Structure du document . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5
2
Table des matières 3
3 Statistique descriptive 34
3.1 Séries statistiques à une variable . . . . . . . . . . . . . . . . . . . . . . . . . . 34
3.1.1 Variable quantitative . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 34
3.1.2 Variables qualitatives . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 40
3.2 Séries statistiques à deux variables quantitatives . . . . . . . . . . . . . . . . . 42
3.2.1 Nuage de points . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 42
3.2.2 Coefficient de corrélation linéaire . . . . . . . . . . . . . . . . . . . . . . 44
3.2.3 Ajustement linéaire . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 44
3.3 Exercices . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 46
4 Programmation dans R 47
4.1 Structures de contrôle . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 47
4.1.1 Exécution conditionnelle avec if . . . . . . . . . . . . . . . . . . . . . . 47
4.1.2 Boucle for . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 48
4.1.3 Boucle while . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 49
4.2 Création de nouvelles fonctions . . . . . . . . . . . . . . . . . . . . . . . . . . . 49
4.2.1 Création . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 50
4.2.2 Appel de la fonction . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 50
4.2.3 Affichage du code et des arguments d’une fonction . . . . . . . . . . . 50
4.2.4 Sorties multiples . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 50
4.2.5 Arguments par défaut . . . . . . . . . . . . . . . . . . . . . . . . . . . . 50
4.2.6 Gestion des erreurs sur les arguments . . . . . . . . . . . . . . . . . . . 50
4.3 Exercices . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 52
5 Fonctionnalités graphiques 53
5.1 Généralités . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 53
5.2 Gestion de la fenêtre graphique . . . . . . . . . . . . . . . . . . . . . . . . . . . 53
5.2.1 Création et fermeture . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 53
5.2.2 Fractionnement d’une fenêtre grapique . . . . . . . . . . . . . . . . . . 54
5.2.3 Sauvegarde d’une fenêtre graphique dans un fichier . . . . . . . . . . . 54
5.3 Fonctions haut niveau . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 55
4 Table des matières
Références bibliographiques 64
C HAPITRE 0
N OTE INTRODUCTIVE
Il est vivement conseillé au lecteur d’installer le logiciel R et de tester les syntaxes et les
exemples. Le lecteur est aussi exhorté à consulter la documentation de R pour une compré-
hension plus détaillée de certaines commandes.
5
C HAPITRE 1
Sommaire
1.1 Présentation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6
1.2 Installation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7
1.2.1 Installation sous Windows . . . . . . . . . . . . . . . . . . . . . . . . . 7
1.2.2 Installation sous Linux . . . . . . . . . . . . . . . . . . . . . . . . . . . 8
1.3 Lancement et fermeture de R . . . . . . . . . . . . . . . . . . . . . . . . . . . 8
1.3.1 Lancement de R sous Windows . . . . . . . . . . . . . . . . . . . . . . 8
1.3.2 Lancement de R sous Linux . . . . . . . . . . . . . . . . . . . . . . . . 9
1.3.3 Fermeture de R . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 10
1.4 Commandes élémentaires . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 10
1.4.1 Création de variables et affichage . . . . . . . . . . . . . . . . . . . . . 10
1.4.2 Séparation de commandes . . . . . . . . . . . . . . . . . . . . . . . . . 11
1.4.3 Espace de travail . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 11
1.4.4 Documentation de R . . . . . . . . . . . . . . . . . . . . . . . . . . . . 12
1.4.5 Commentaires . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 12
1.5 Méthodes d’exécution des commandes . . . . . . . . . . . . . . . . . . . . . 12
1.5.1 Première méthode . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 12
1.5.2 Deuxième méthode . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 12
1.6 Bibliothèques ou packages . . . . . . . . . . . . . . . . . . . . . . . . . . . . 13
1.1 P RÉSENTATION
Le logiciel R est un logiciel d’analyse statistique et graphique créé par deux statisticiens
Ross Ihaka (statisticien néo-zélandais) et Robert Gentleman (statisticien canadien) à l’univer-
sité d’Auckland (Nouvelle-Zélande) dans le cadre d’un projet de recherche débuté en 1993.
Il est un clone gratuit du logiciel payant S-plus, dérivé du langage S (Logiciel payant)
développé dans les années 1970 par une équipe de chercheurs menée par un statisticien du
nom de John M. Chambers. Depuis 1997, son développement et sa distribution sont assurés
par plusieurs statisticiens rassemblés dans le R Development Core Team.
Le logiciel R présente plusieurs avantages : c’est un logiciel libre et gratuit, très complet,
en essor permanent, disponible pour divers environnements : Linux, Windows, Macintosh.
C’est un logiciel utilisé en entreprise, dans le monde académique et de la recherche, au sein
d’organismes publics ou d’ONG ou encore par les analystes (data miners, data scientists)
6
1.2. Installation 7
https://www.r-project.org/
1.2 I NSTALLATION
de RGUI (R Graphical User Interface). Il s’ouvre alors une interface graphique contenant une
fenêtre de la forme de la figure 1.1.
Remarque 1.1 Lorsque le symbole + apparaît au lieu de >, cela signifie que la commande en
cours de saisie est incomplète (par exemple, il manque une parenthèse ou une accolade) et
que R attend qu’elle soit complétée. On peut alors soit compléter la commande soit appuyer
sur la touche Esc pour annuler la commande et revenir à >.
1.3. Lancement et fermeture de R 9
F IGURE 1.1 – Ecran de démarrage de R. Le symbole >, appelé prompt, signifie que R attend une
commande.
Remarque 1.2 On peut vider la console à tout moment en appuyant simultanément sur les
touches Ctrl et L.
1.3.3 Fermeture de R
Quand on exécute l’une de ces deux commandes, R demande si l’on souhaite sauvegarder
la session (c’est-à-dire enregistrer toutes les variables que l’on a créées dans un fichier sur le
disque dur). Il faut toujours répondre non.
Remarque 1.3 Même si les noms de variables sont très flexibles dans R, il y a quelques règles
importantes à respecter :
1) Les noms de variables ne peuvent pas commencer par un chiffre ou un caractère spécial.
2) Comme dit plus haut, R est sensible à la casse donc les noms des variables sont aussi
sensibles à la casse (les variables x et X sont deux variables différentes).
3) Quelques noms (comme c, q, t, C, D, F, I, pi, T, etc. . .) sont déjà utilisés par R pour désigner
des objets internes et doivent être évités.
1.4.4 Documentation de R
1.4.5 Commentaires
Par défaut, R cherchera le fichier somme.R dans le répertoire courant (résultat de la com-
mande getwd()). Si le fichier à exécuter se trouve dans un autre répertoire, il faudra donc au
1.6. Bibliothèques ou packages 13
préalable utiliser la commande setwd() pour indiquer à R le répertoire dans lequel se trouve
ledit fichier.
Remarque 1.4 Dans ce cours, nous n’aurons besoin de télécharger aucun package. La ver-
sion basique de R contient tout ce nous avons besoin.
C HAPITRE 2
Sommaire
2.1 Introduction . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 15
2.2 Vecteurs numériques (classe numeric) . . . . . . . . . . . . . . . . . . . . . . 16
2.2.1 Valeurs particulières . . . . . . . . . . . . . . . . . . . . . . . . . . . . 16
2.2.2 Nombres complexes . . . . . . . . . . . . . . . . . . . . . . . . . . . . 16
2.2.3 Création . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 16
2.2.4 Opérations et fonctions . . . . . . . . . . . . . . . . . . . . . . . . . . 17
2.2.5 Composantes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 19
2.2.6 Opérations entières . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 19
2.3 Matrices (classe matrix) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 19
2.3.1 Création et accès aux composantes . . . . . . . . . . . . . . . . . . . . 19
2.3.2 Opérations et fonctions matricielles . . . . . . . . . . . . . . . . . . . 20
2.4 Vecteurs de chaînes de caractères (classe character) et facteurs (classe
factor) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 21
2.4.1 Vecteurs de chaînes de caractères (classe character) . . . . . . . . . 22
2.4.2 Facteurs (classe factor) . . . . . . . . . . . . . . . . . . . . . . . . . . 24
2.5 Listes (classe list) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 25
2.6 Tableaux de données (classe data.frame) . . . . . . . . . . . . . . . . . . . . 25
2.6.1 Création par lignes de commandes . . . . . . . . . . . . . . . . . . . . 25
2.6.2 Jeux de données internes . . . . . . . . . . . . . . . . . . . . . . . . . 26
2.6.3 Importation de tableaux de données . . . . . . . . . . . . . . . . . . . 26
2.6.4 Manipulation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 27
2.7 Vecteurs logiques (classe logical) . . . . . . . . . . . . . . . . . . . . . . . . 27
2.7.1 Création par saisie . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 27
2.7.2 Opérateurs de comparaison . . . . . . . . . . . . . . . . . . . . . . . . 28
2.7.3 Opérateurs (connecteurs) logiques . . . . . . . . . . . . . . . . . . . . 28
2.7.4 Fonctions logiques usuelles . . . . . . . . . . . . . . . . . . . . . . . . 29
2.7.5 Sélection d’éléments dans un vecteur . . . . . . . . . . . . . . . . . . 29
2.7.6 Sélection d’éléments dans un tableau (matrice ou tableau de données) 29
2.8 Exercices . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 31
2.1 I NTRODUCTION
Tous les objets R (variables, fonctions) ont une classe et les manipulations possibles sur
un objet donné dépendent de sa classe. Les classes d’objets usuelles sont :
15
16 Chapitre 2. Classes d’objets et fonctions usuelles
2.2.3 Création
Il existe plusieurs méthodes pour créer un vecteur numérique. Dans la pratique, il revient
à l’utilisateur de choisir la méthode la mieux adaptée à ce qu’il souhaite faire.
x=c(1,-5,7,0)
y=c(2,3,-4,1)
2.2.5 Composantes
solve(A) Inverse de A.
solve(A,B) Résolution de l’équation AX = B où A
est une matrice carrée d’ordre n inver-
sible et B est un vecteur de taille n ou une
matrice à n lignes.
eigen(A)$values Valeurs propres de A.
eigen(A)$vectors Vecteurs propres de A.
apply(A,dim,f) Applique la fonction f à chaque ligne de
A si dim=1 et chaque colonne si dim=2.
apply(A,1,mean); rowMeans(A) Commandes équivalentes pour calculer
la moyenne des éléments de A par ligne.
apply(A,2,mean); colMeans(A) Commandes équivalentes pour calculer
la moyenne des éléments de A par co-
lonne.
apply(A,1,sum); rowSums(A) Commandes équivalentes pour calculer
la somme des éléments de A par ligne.
apply(A,2,sum); colSums(A) Commandes équivalentes pour calculer
la somme des éléments de A par colonne.
addmargins(A) Rajoute à la matrice A des marges conte-
nant respectivement les sommes par
lignes et par colonnes.
cbind(A,B,C) Met les matrices A, B et C bout à bout ho-
rizontalement.
rbind(A,B,C) Met les matrices A, B et C bout à bout ver-
ticalement.
outer(x,y,"*"); outer(x,y,"+") Produit cartésien des vecteurs numé-
riques x et y et application des opérateurs
* et +.
Ces deux classes permettent de saisir des données qualitatives. La principale différence
est que les facteurs (classe factor) sont beaucoup plus adaptés aux variables qualitatives
ayant des modalités alors que les chaînes de caractères simples (classe character) sont sou-
vent utilisées pour des données qualitatives n’ayant pas a priori un caractère statistique (par
exemple, le nom et les prénoms).
22 Chapitre 2. Classes d’objets et fonctions usuelles
Exemple 2.1 Lors de l’année scolaire 2020-2021, l’effectif des élèves dans le second cycle au
Togo est réparti par région comme suit (source : https://togo.dataforall.org/) :
DAGL Maritime Plateaux Centrale Kara Savanes
58 560 34 386 34 385 17 070 24 703 18 048
DAGL = District Autonome du Grand Lomé
Console R
> x=c(58560,34386,34385,17070,24703,18048)
> print(x)
[1] 58560 34386 34385 17070 24703 18048
> names(x)=c("DAGL","Maritime","Plateaux","Centrale","Kara","Savanes")
> print(x)
DAGL Maritime Plateaux Centrale Kara Savanes
58560 34386 34385 17070 24703 18048
On peut aussi utiliser les noms des colonnes pour sélectionner les éléments du vecteur
comme suit :
Exemple 2.2
Console R
> notes=matrix(c(12,15,7,13,11,20),2,3,byrow=TRUE)
> print(notes)
[,1] [,2] [,3]
[1,] 12 15 7
[2,] 13 11 20
> rownames(notes)=c("Kodjo","Afi")
> colnames(notes)=c("MTH","PHY","SVT")
> print(notes)
MTH PHY SVT
Kodjo 12 15 7
Afi 13 11 20
On peut aussi utiliser les noms des lignes et des colonnes pour sélectionner les éléments
d’une matrice comme suit :
24 Chapitre 2. Classes d’objets et fonctions usuelles
Pour saisir des données d’une variable statistique qualitative ayant plusieurs modalités,
on utilise la fonction factor comme dans l’exemple ci-après.
Exemple 2.3 Considérons les mentions obtenues par 10 élèves admis au BAC2. On peut sai-
sir les données et les afficher avec le code suivant :
Console R
> mention = factor(c("B","TB","P","P","AB","P","B","P","B","TB"))
> print(mention)
[1] B TB P P AB P B P B TB
Levels: AB B P TB
Console R
> print(table(mention))
mention
AB B P TB
1 3 4 2
2.5. Listes (classe list) 25
Il s’agit d’un tableau de données de quatre (4) lignes (individus) et trois (3) colonnes (va-
riables) avec des chaînes de caractères en 1ère colonne, du numérique dans la seconde et des
facteurs dans la dernière colonne.
• Pour saisir les données, on peut utiliser le code
x = data.frame(nom=c("Afi","Koffi","Kodjo","Adjo"), age=c(18,24,22,20),
genre=factor(c("F","M","M","F")))
ou le code
nom = c("Afi","Koffi","Kodjo","Adjo")
age = c(18,24,22,20)
26 Chapitre 2. Classes d’objets et fonctions usuelles
genre = factor(c("F","M","M","F"))
x = data.frame(nom,age,genre)
Exemple 2.5 Voici un exemple de contenu de fichier à importer pour lequel les colonnes sont
séparées par un espace :
example.txt
nom age genre
Afi 18 F
Koffi 24 M
Kodjo 22 M
Adjo 20 F
example.csv
nom;age;genre
Afi;18;F
Koffi;24;M
Kodjo;22;M
Adjo;20;F
Suivant l’extension du fichier à importer, l’on pourra utiliser l’une des fonctions sui-
vantes :
L’importation de données n’est pas abordée en détails dans ce cours. Le lecteur intéressé
pourra consulter la documentation ou les références bibliographiques du cours pour plus de
détails sur les fonctions sus-citées.
2.6.4 Manipulation
F V F V F F F V V V
On peut saisir les données et les afficher :
Console R
> x=c(FALSE,TRUE,FALSE,TRUE,FALSE,FALSE,FALSE,TRUE,TRUE,TRUE)
> print(x)
[1] FALSE TRUE FALSE TRUE FALSE FALSE FALSE TRUE TRUE TRUE
as.numeric(FALSE) ; Respectivement 0 et 1.
as.numeric(TRUE)
sum(x) Lorsqu’on applique une fonction numé-
rique à un vecteur logique, les FALSE et
les TRUE deviennent respectivement 0 et
1.
Ainsi, cette commande permet de comp-
ter le nombre de fois que TRUE apparaît
dans x.
table(x) Tableau de contingence de x.
Console R
> x=c(4,-2,5,0,7)
> print(x>3)
[1] TRUE FALSE TRUE FALSE TRUE
Console R
> A=matrix(-4:4,nrow=3,ncol=3)
> print(A)
[,1] [,2] [,3]
[1,] -4 -1 2
[2,] -3 0 3
[3,] -2 1 4
On sait que la sélection des éléments de A peut se faire sous l’une des trois formes A[idx1,idx2],
A[idx1,] et A[,idx2], où idx1 et idx2 sont des vecteurs contenant respectivement les nu-
méros des lignes et des colonnes à sélectionner. On peut remplacer ces vecteurs de numéros
de lignes et de colonnes par des vecteurs logiques définis à partir des lignes et des colonnes.
Dans ce cas, seules les lignes et/ou colonnes correspondant à la valeur TRUE seront sélection-
nées.
2.8 E XERCICES
Exercice 2.1
1) Créer le vecteur v1a de composantes −1, 2.5, 3, −4, 6, 15, −4 et le vecteur v1b formé
des entiers de 1 à 5. Créer, sans ressaisir les composantes, le vecteur v1 composé des 5
premières composantes de v1a et de toutes celles de v1b.
2) Créer le vecteur v2 composé de la suite des nombres allant de 0 à 2π par pas de π/2.
Calculer leurs cosinus respectifs dans un vecteur v2.cos.
3) Créer le vecteur v3 contenant tous les multiples de 2 compris entre 2 et 50. Combien y en
a-t-il ?
4) Créer le vecteur v4 contenant tous les multiples de 3 compris entre 2 et 50. Combien y en
a-t-il ?
5) En utilisant les fonctions intersect et setdiff, créer le vecteur v5 des multiples com-
muns à 2 et 3 et le vecteur v6 des multiples de 3 qui ne sont pas multiples de 2.
Exercice 2.2
1) Construire, en une seule commande, la matrice M suivante :
2 4 1 2
3 4 5 6
M= 7 8
9 10
11 12 35 7
2) Afficher :
(a) l’élément situé à l’intersection de la première ligne et de la troisième colonne ;
(b) la première ligne de M ;
(c) la troisième colonne de M ;
(d) la sous-matrice obtenue après avoir enlevé la première ligne et la première colonne
de M ;
(e) la somme des éléments de M par lignes ;
(f) la sous-matrice obtenue en ne gardant que les lignes dont la somme est supérieure
ou égale à 25.
Exercice 2.3 Ecrire et exécuter le code permettant de créer sans saisir les composantes,
1) la matrice A d’ordre 5 × 5 avec des 1 partout sauf des 0 sur la diagonale ;
2) la matrice B d’ordre 5 × 5 avec les nombres 1 à 49 de deux en deux et répartis de façon
croissante colonne par colonne.
3) La matrice B2 issue de B où les multiples de 3 sont remplacés par la valeur 0.
Exercice 2.4 Le jeu de données precip est pré-enregistré dans le logiciel R et regroupe des
données de précipitations dans différentes villes américaines. Ecrire et exécuter le code R
permettant de (d’) :
32 Chapitre 2. Classes d’objets et fonctions usuelles
Exercice 2.5 On a relevé les informations sur les appartements disponibles auprès d’un agent
immobilier et obtenu les données suivantes :
loyer cuisine nb.chb quartier
27000 TRUE 1 AGOE
35000 TRUE 2 TOTSI
40000 TRUE 2 KEGUE
10000 FALSE 1 BE
15000 FALSE 1 TOTSI
30000 TRUE 2 AGOE
12000 FALSE 1 TOTSI
où loyer indique le loyer mensuel en francs CFA, cuisine indique la présence ou non d’une
cuisine, nb.chb indique le nombre de chambres et quartier indique le quartier où se trouve
l’appartement. Ecrire et exécuter le code R permettant de (d’) :
1) saisir les données dans un tableau de données nommé M ;
2) déterminer le nombre d’appartements concernés ;
3) calculer le loyer moyen ;
4) calculer le loyer moyen par quartier ;
5) déterminer le nombre de quartiers concernés ;
6) déterminer le nombre d’appartements avec cuisine ;
7) afficher les données de l’appartement le plus cher ;
8) afficher les données de tous les appartements avec cuisine situés à Totsi ;
9) ajouter à M, sans ressaisir M :
• une colonne caution contenant la valeur 6 et correspondant au nombre de mois de
loyer servant de caution,
• une colonne avance contenant les valeurs 3, 4, 6, 2, 2, 4 et 2 correspondant au nombre
de mois de loyer à payer en avance
• et une colonne loyer2 correspondant au loyer augmenté des charges additionnelles
(par exemple, frais d’usage de fosse sceptique) s’élevant à 500 francs CFA pour tous
les appartements.
10) afficher le tableau M en triant les appartements du plus cher au moins cher.
Exercice 2.7
1) Charger le jeu de données airquality. Que représente ce jeu de données ? Quelle est sa
classe ? Quelles sont ses variables (colonnes) ? Combien a-t-il de lignes ?
2) Donner le nombre de valeurs manquantes (indiquées NA) pour chaque variable.
3) Créer, à partir de airquality, un tableau de données x dont les températures seront
converties en degrés Celsius. On rappelle la formule de conversion de Fahrenheit en Cel-
sius : °C = (°F − 32)/1.8.
4) Calculer, en degrés Celsius, les températures moyennes, minimales et maximales pour
chacun des mois de mai, juin, juillet, août et septembre.
5) Calculer la concentration moyenne d’ozone (faire attention aux données manquantes !).
6) Calculer la concentration moyenne d’ozone par mois.
C HAPITRE 3
S TATISTIQUE DESCRIPTIVE
Sommaire
3.1 Séries statistiques à une variable . . . . . . . . . . . . . . . . . . . . . . . . . 34
3.1.1 Variable quantitative . . . . . . . . . . . . . . . . . . . . . . . . . . . . 34
3.1.2 Variables qualitatives . . . . . . . . . . . . . . . . . . . . . . . . . . . . 40
3.2 Séries statistiques à deux variables quantitatives . . . . . . . . . . . . . . . 42
3.2.1 Nuage de points . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 42
3.2.2 Coefficient de corrélation linéaire . . . . . . . . . . . . . . . . . . . . . 44
3.2.3 Ajustement linéaire . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 44
3.3 Exercices . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 46
Soit x un vecteur numérique à n composantes dont les composantes sont ici notées x1 , . . .,
xn .
Dans R, il existe une fonction var. Mais cette fonction appliquée à un vecteur x calcule
plutôt la variance corrigée des composantes de x dont la formule est :
n
1
Sn′2 = ∑
n − 1 i =1
( x i − x n )2 , (3.1)
34
3.1. Séries statistiques à une variable 35
on utilise la propriété
!
1 n 2
n i∑
Sn2 = xi − ( x n )2 = moyenne des carrés − (moyenne)2 (3.3)
=1
comme suit :
3×0+2×1+5×2
= 1.2
3+2+5
Exemple 3.1 On a relevé le nombre de frères et sœurs de 20 étudiants lors d’un cours de
Statistique et l’on a obtenu les données suivantes :
2 4 3 2 2 1 1 3 2 4 4 0 3 3 3 4 4 0 1 3
1) On peut saisir les données à l’aide du code suivant :
x=c(2,4,3,2,2,1,1,3,2,4,4,0,3,3,3,4,4,0,1,3)
x
0 1 2 3 4
2 3 4 6 5
La première ligne donne les modalités et la deuxième donne les effectifs associés à chaque
modalité.
3) On peut afficher le tableau des fréquences à l’aide du code suivant :
prop.table(table(x))
La première ligne donne les modalités et la deuxième donne les fréquences associées à
chaque modalité.
Remarque 3.1 Dans R, il existe 657 couleurs prédéfinies. Leur liste est disponible grâce à la
commande
colors()
Parmi les noms de couleurs classiques, on note : "blue", "red", "green", "yellow", "gray",
"lightgray", "yellowgreen", "lightblue", "skyblue", "lightgreen",
"tomato".
6
5
4
Effectif
3
2
1
0
0 1 2 3 4
Nombre de frères/soeurs
On peut avoir des barres horizontales en ajoutant l’option horiz=TRUE comme suit :
2
1
0
0 1 2 3 4 5 6
Nombre de frères/soeurs
3
2
1
0
0 1 2 3 4
Nombre de frères/soeurs
3.1.1.4 Histogramme
L’histogramme permet de représenter une variable statistique continue groupée (définie
par intervalles).
Exemple 3.2 On a noté l’âge (arrondi à l’année près) de 48 salariés d’une entreprise. La série
statistique brute (données obtenues pendant l’enquête) est donnée ci-dessous :
3.1. Séries statistiques à une variable 39
43 29 57 45 50 29 37 59 46 31 46 24
33 38 49 31 62 60 52 38 43 26 41 52
60 49 52 41 38 26 37 59 57 41 29 33
33 43 46 57 46 33 46 49 57 57 46 43
age = c(43, 29, 57, 45, 50, 29, 37, 59, 46, 31, 46, 24,
33, 38, 49, 31, 62, 60, 52, 38, 43, 26, 41, 52,
60, 49, 52, 41, 38, 26, 37, 59, 57, 41, 29, 33,
33, 43, 46, 57, 46, 33, 46, 49, 57, 57, 46, 43)
h = hist(age, breaks = c(20, 30, 40, 45, 50, 55, 60, 65), right = FALSE,
freq = FALSE, col="lightblue", xlab="Age", ylab="Densité",
main="Histogramme")
Histogramme
0.04
0.03
Densité
0.02
0.01
0.00
20 30 40 50 60
Age
• Par défaut, les classes sont semi-fermées à droite et la première est fermée (right
= TRUE). L’argument right = FALSE permet de spécifier que les classes soient semi-
fermées à gauche et que la dernière classe soit fermée.
• L’option freq = FALSE est obligatoire pour obtenir un histogramme au sens classique
du terme c’est-à-dire un histogramme des fréquences.
• L’argument col précise la couleur, les arguments xlab et ylab précisent les textes à
écrire respectivement en dessous de l’axe des abscisses et à gauche de l’axe des ordon-
nées et l’argument main="Histogramme" permet de préciser le titre du graphique.
40 Chapitre 3. Statistique descriptive
• On peut arrondir le tableau des fréquences à deux chiffres après la virgule à l’aide du
code
freq=round(prop.table(table(region)),2)
print(freq)
KARA CENTRALE
SAVANES
MARITIME
42 Chapitre 3. Statistique descriptive
On peut afficher les fréquences entre parenthèses sur le diagramme en utilisant l’argu-
ment labels qui permet de donner le texte à afficher sur le diagramme et la commande
paste qui permet de coller des chaînes de caractères.
pie(freq,labels=paste(names(freq)," (",100*freq,"%)",sep=""))
SAVANES (27%)
MARITIME (13%)
Exemple 3.4 Considérons deux variables statistiques x et y dont les observations sont don-
nées par le tableau suivant :
14
12
10
8
y
6
4
2
On peut changer le symbole utilisé pour représenter chaque point du nuage à l’aide du
paramètre pch (plotting character) qui prend comme valeur un entier compris entre 0 et 25.
Le tableau 3.1 donne sur la première ligne les différentes valeurs du paramètre pch et, sur la
deuxième ligne, les symboles associés à ces différentes valeurs.
Ainsi, le code
plot(x,y,pch=20)
14
12
10
8
y
6
4
2
abline(reg$coefficients)
14
12
10
8
y
6
4
2
x
46 Chapitre 3. Statistique descriptive
3.3 E XERCICES
Exercice 3.1 On a relevé le nombre d’enfants de 24 couples. Les données relevées sont les
suivantes :
2 2 0 2 4 3 2 1 2 1 0 0
0 2 2 1 3 0 1 2 1 0 2 2
1) Saisir les données dans un vecteur nommé x.
2) Faire le tableau de contingence et calculer les fréquences.
3) Représenter les données par un diagramme en bâtons.
4) Calculer la moyenne, la variance et l’écart-type du nombre d’enfants.
Exercice 3.2 En 2019, la population togolaise est estimée par région comme suit (source :
https://togo.dataforall.org/) :
DAGL Maritime Plateaux Centrale Kara Savanes
1 953 418 1 226 928 1 666 625 750 733 935 684 995 206
DAGL = District Autonome du Grand Lomé
1) Saisir les données dans un vecteur numérique nommé pop dont les colonnes seront nom-
mées telles qu’à l’affichage, l’on ait le résultat suivant :
DAGL Maritime Plateaux Centrale Kara Savanes
1953418 1226928 1666625 750733 935684 995206
Exercice 3.3 L’observation du prix de la tomate en fonction des quantités vendues sur un
marché a donné les résultats suivants :
Quantités x (kg) 10 20 35 50 70 90 110 130
Prix y du kg (kFCFA) 5 3.75 2.75 2.25 1.75 1.25 0.8 0.5
Ainsi, une quantité de 35 kg de tomates est vendue au prix de 2750 FCFA le kg.
1) Représenter graphiquement le nuage de points.
2) On cherche un ajustement non linéaire de la forme
y = f ( x ) = a ln x + b.
P ROGRAMMATION DANS R
Sommaire
4.1 Structures de contrôle . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 47
4.1.1 Exécution conditionnelle avec if . . . . . . . . . . . . . . . . . . . . . 47
4.1.2 Boucle for . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 48
4.1.3 Boucle while . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 49
4.2 Création de nouvelles fonctions . . . . . . . . . . . . . . . . . . . . . . . . . 49
4.2.1 Création . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 50
4.2.2 Appel de la fonction . . . . . . . . . . . . . . . . . . . . . . . . . . . . 50
4.2.3 Affichage du code et des arguments d’une fonction . . . . . . . . . . 50
4.2.4 Sorties multiples . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 50
4.2.5 Arguments par défaut . . . . . . . . . . . . . . . . . . . . . . . . . . . 50
4.2.6 Gestion des erreurs sur les arguments . . . . . . . . . . . . . . . . . . 50
4.3 Exercices . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 52
ou la synthaxe
Console R
if(condition)
{
# commandes à exécuter si condition est vraie
} else {
# commandes à exécuter sinon
}
où condition est une variable de classe logique ne contenant qu’une seule valeur (Si c’est un
vecteur logique de longueur supérieure ou égal à 2, seul le premier élément est utilisé). La
différence entre les deux syntaxes est que la seconde précise le traitement à réaliser lorsque
condition prend la valeur FALSE.
47
48 Chapitre 4. Programmation dans R
Remarque 4.2 Lorsqu’elle est utilisée, la commande else doit être placée obligatoirement
sur la même ligne que l’accolade fermante de if.
est correct mais n’affiche aucun résultat. En effet, l’opération x%%2 donne le reste de la di-
vision euclidienne de x par 2. La condition x%%2==0 permet de tester si ce reste est nul. Ici,
le reste de la division euclidienne de 3 par 2 est égal à 1 et comme 1 est différent de 0, la
condition x%%2==0 vaut FALSE et donc la commande entre accolades n’est pas exécutée.
i=1
while(i<=5)
{
print(i)
i=i+1
}
Il faut s’assurer que parmi les commandes à exécuter, il y a en ait une qui permette de
mettre à jour la condition sinon l’on risque d’avoir une boucle infinie (une boucle qui ne
s’arrête jamais). Dans l’exemple 4.4, l’on peut remarquer que la commande i=i+1 permet
de mettre à jour la valeur de la variable i afin d’éviter la boucle infinie. Si l’on ne l’avait
pas mise, la variable resterait bloquée à 1 et comme 1 est inférieur ou égal à 5, la boucle va
afficher des 1 de façon infinie (sans s’arrêter).
4.2.1 Création
f = function(x)
{
if(x<=0){stop("L’argument ne doit pas être négatif.")}
return(1/sqrt(x))
}
Exécutons ce code pour des valeurs positives et négatives de l’argument. On a par exemple :
Console R
> f(4)
[1] 0.5
> f(7)
[1] 0.3779645
> f(0)
Error in f(0) : L’argument ne doit pas être négatif.
> f(-3)
Error in f(-3) : L’argument ne doit pas être négatif.
52 Chapitre 4. Programmation dans R
4.3 E XERCICES
Exercice 4.1 Créer une matrice carrée A d’ordre 7 telle que
aii = 2 si i = 1, . . . , 7
i,i +1 = 1 si i = 1, . . . , 6
a
ai,i−1 = −1
si i = 2, . . . , 7
a = 0 dans tous les autres cas.
ij
Exercice 4.2 Programmer la fonction factorielle sous forme d’une fonction R récursive (c’est
à dire qui s’appelle elle-même). Cette fonction sera appelée fact et prendra comme seul argu-
ment un entier naturel n. Elle retournera un message d’erreur lorsque l’argument n’est pas
un entier naturel.
Exercice 4.3 Ecrire une fonction matrix.power qui prend en arguments une matrice carrée
A et un entier naturel n et retourne la matrice An (on prendra A0 = I). Un message d’erreur
sera affiché si A n’est pas une matrice carrée ou si n n’est pas un entier naturel.
Sn par les deux méthodes. Les résultats seront stockés sous la forme d’un tableau à trois
colonnes correspondant respectivement aux valeurs de n, aux temps d’exécution de f1 et
f2. Que peut-on conclure ?
C HAPITRE 5
F ONCTIONNALITÉS GRAPHIQUES
Sommaire
5.1 Généralités . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 53
5.2 Gestion de la fenêtre graphique . . . . . . . . . . . . . . . . . . . . . . . . . 53
5.2.1 Création et fermeture . . . . . . . . . . . . . . . . . . . . . . . . . . . . 53
5.2.2 Fractionnement d’une fenêtre grapique . . . . . . . . . . . . . . . . . 54
5.2.3 Sauvegarde d’une fenêtre graphique dans un fichier . . . . . . . . . . 54
5.3 Fonctions haut niveau . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 55
5.3.1 Commande générique : la commande plot . . . . . . . . . . . . . . . 55
5.3.2 Autres fonctions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 56
5.4 Fonctions bas niveau . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 56
5.4.1 Ajout de points, de lignes ou de symboles . . . . . . . . . . . . . . . . 56
5.4.2 Ajout de texte . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 57
5.5 Exercices . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 58
5.1 G ÉNÉRALITÉS
Les fonctionnalités graphiques sont une composante extrêment importante du système
R. Il existe trois (03) types de commandes graphiques :
• Les fonctions haut niveau qui permettent de créer un nouveau graphique.
• Les fonctions bas niveau qui permettent d’ajouter des informations sur un graphique
existant.
• Les fonctions interactives (non vues dans ce cours) qui permettent d’interagir sur le
graphique afin d’ajouter ou d’en extraire des informations à l’aide de la souris.
53
54 Chapitre 5. Fonctionnalités graphiques
500
1.5
0.5
300
exp(x)
−0.5
100
−1.5
cos(x) sin(x)
0
−6 −4 −2 0 2 4 6 −6 −4 −2 0 2 4 6
x x
segments(x0, y0, x1, y1) Trace une ligne du point (x0,y0) au point
(x1,y1).
5.5 E XERCICES
Exercice 5.1 Représenter chacune des fonctions suivantes sur l’intervalle mentionné :
f : x 7−→ e x , I = [−3, 4]
1 x2
g : x 7−→ √ e− 2 , I = [−4, 4]
2π
Pour chaque graphique, veiller à renseigner les noms des axes ainsi que le titre.
Exercice 5.2 Représenter les fonctions sinus et cosinus sur [−2π, 2π ] superposées sur le
même graphique à la manière de la figure 5.2.
1.0
0.5
0.0
−0.5
cos(x)
−1.0
sin(x)
−6 −4 −2 0 2 4 6
Exercice 5.3 Tracer les courbes paramétrées suivantes pour t ∈ [−10, 10] :
1) x (t) = cos2 (t), y(t) = cos3 (t) sin(t).
t t3
2) x (t) = , y ( t ) = .
1 + t4 1 + t4
3) x (t) = sin3 (t), y(t) = cos(t) − cos4 (t).
4) x (t) = [250 + a sin(bt)] cos(t), y(t) = [250 + a sin(bt)] sin(t), a = 220 et b = 6.
5.5. Exercices 59
√
Exercice 5.4 Représenter sur un même graphique les fonctions x 7→ x2 et x 7→ x sur les
intervalles [0, 3] et [0, 9] respectivement. Ajouter au graphique obtenu, la première bissectrice
en pointillés pour apprécier la symétrie des deux courbes par rapport à cette dernière. Le
résultat obtenu sera semblable à la figure 5.3.
y=x2
8
y= x
y=x
6
4
2
0
0 2 4 6 8
F IGURE 5.3
C HAPITRE 6
Sommaire
6.1 Lois de probabilités usuelles . . . . . . . . . . . . . . . . . . . . . . . . . . . 60
6.2 Tirages avec ou sans remise . . . . . . . . . . . . . . . . . . . . . . . . . . . . 61
6.3 Réplication d’une commande . . . . . . . . . . . . . . . . . . . . . . . . . . . 62
6.4 Exercices . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 63
Loi Abréviation
Beta beta
Binomiale (y compris Bernoulli) binom
Binomiale négative nbinom
Cauchy cauchy
Exponentielle exp
Fisher-Snedecor f
Gamma gamma
Géométrique geom
Hypergéométrique hyper
Khi-deux chisq
Log-normale lnorm
Logistique logis
Normale norm
Poisson pois
Student t
Uniforme unif
Weibull weibull
Pour chaque loi d’abréviation xxx, quatre (04) fonctions sont disponibles, identifiées par
un préfixe :
60
6.2. Tirages avec ou sans remise 61
Le lecteur est invité à consulter l’aide pour plus de détails sur les paramètres des diffé-
rentes lois. Nous donnons ci-dessous un exemple de loi discrète et un exemple de loi conti-
nue.
replicate(5,mean(rnorm(1000)))
6.4 E XERCICES
Exercice 6.1 Soit X une variable aléatoire de loi binomiale de paramètres n = 50 et p = 1/3.
Calculer les probabilités suivantes :
Exercice 6.2 Soit X une variable aléatoire de loi normale standard N (0, 1).
1) Calculer les probabilités suivantes : P( X ⩽ 1), P( X ⩾ 2.6) et P(0.5 < X ⩽ 1).
2) Calculer les quantiles d’ordre 0.95 et 0.975.
3) Représenter graphiquement la densité et la fonction de répartition de la loi de X.
Exercice 6.3 Soit X une variable suivant la loi normale N (3, 2). Calculer les probabilités sui-
vantes : P( X < 4), P( X < −1), P( X > 1), P(−3 < X < 4).
Exercice 6.4
1) Créer un vecteur x de taille n = 1000 et dont les éléments suivent la loi normale centrée
réduite.
2) Représenter l’histogramme des éléments de ce vecteur et superposer sur ce graphique la
fonction de densité de la loi normale centrée réduite. Que remarquez-vous ?
Exercice 6.5
1) En vous aidant de la fonction sample et du vecteur piece=c("F","P") (dont les com-
posantes représentent FACE et PILE), écrire une fonction lancer.piece(n) qui simule n
lancers d’une pièce de monnaie équilibrée.
2) Simuler n = 5 000 lancers de ladite pièce. Calculer la proportion de F (vous devriez trou-
ver une valeur proche de 0.5).
Exercice 6.6 Un ami vous propose le jeu suivant. Vous lancez deux (2) fois un dé supposé
parfaitement équilibré dont les faces sont numérotées de 1 à 6. A chaque lancer, si le résultat
est 5 ou 6, vous gagnez 3 € ; si le résultat est 4, vous gagnez 1 € et si c’est 3 ou moins, vous
perdez 2.5 €.
1) Ecrire une fonction jeu permettant de simuler le jeu.
2) Simuler ce jeu 1 000 fois. Résumer les résultats à l’aide d’un tableau de contingence et
représenter ce tableau à l’aide d’un diagramme en bâtons.
3) Ce jeu serait-il avantageux pour vous ? Justifier la réponse.
R ÉFÉRENCES BIBLIOGRAPHIQUES
[2] Biernacki, C. (2010). Logiciel R - Tutorial avec applications statistiques. Notes de cours,
Université Lille 1.
[4] Lafaye de Micheaux, P., Drouilhet, R., and Liquet, B. (2014). Le logiciel R : Maîtriser le
langage - Effectuer des analyses statistiques. Springer, 2ème edition.
[6] Venables, W. N., Smith, D. M., and the R Core Team (2014). An Introduction to R. Notes
on R : A Programming Environment for Data Analysis and Graphics Version 3.0.3 (2014-
03-06).
64