Académique Documents
Professionnel Documents
Culture Documents
GUID
Réalisé par :
• Jawaher CHENNAK
• Tasnim MOUNIR
• Karima KACI
• Torayya ENNAJAR
• Youssra ROCHDI
Encadré par :
• Soukaina FALOUHI
• M.MORCHADI Radouan
Introduction :
R est un langage de programmation et un logiciel libre dédié aux
statistiques et à la science des données soutenu par la R
Foundation for Statistical Computing. R fait partie de la liste des
paquets GNU et est écrit en C (langage), Fortran et R. Le système R
connaît depuis plus d’une décennie une progression remarquable
dans ses fonctionnalités, dans la variété de ses domaines
d’application ou, plus simplement, dans le nombre de ses
utilisateurs. La documentation disponible suit la même tangente :
plusieurs maisons d’édition proposent dans leur catalogue des
ouvrages dédiés spécifiquement aux utilisations que l’on fait de R
en sciences naturelles, en sciences sociales, en finance, etc.
Néanmoins, peu d’ouvrages se concentrent sur l’apprentissage de
R en tant que langage de programmation sous-jacent aux
fonctionnalités statistiques. C’est la niche que nous tâ chons
d’occuper.
Plan :
I. Les données avec R
II. Les graphiques avec R
III. Les analyses statistiques avec R
IV. Programmer avec R en pratique
a) Lecture de données :
La façon la plus simple d’écrire des données créées dans R dans un fichier
consiste à utiliser la fonction write. La syntaxe par défaut :
write(x,file=“donnees.txt”) permet de stocker l’objet x (un vecteur, une
matrice ou un tableau) dans le fichier donnees.txt.
certaines lois :
Vecteur :
La commande vector, qui comprend deux arguments (mode et length), crée
un vecteur composé de 0 si le vecteur est numérique, FALSE s’il est logique
et “ ” s’il s’agit d’un caractère.
Facteur :
Le codage d’une variable catégorielle fait appel à la commande factor qui
inclue les valeurs de la variables mais aussi toutes les modalités possibles.
> factor(1:7)
[1] 1 2 3 4 5 6 7
Levels 1 2 3 4 5 6 7
> factor(1:7;levels=1:10)
[1] 1 2 3 4 5 6 7
Levels 1 2 3 4 5 6 7 8 9 10
> factor(1:4;levels=c(‘‘A’’,‘‘B’’,‘‘F’’,‘‘G’’)
[1] A B F G
Levels A B F G
La commende levels permet d’indiquer les modalités d’une variable dans le
cas présent.
Matrice :
Pour les matrices la “longueur” associée à une matrice comprend deux
informations, celle relative au nombre de lignes et la seconde au nombre de
colonnes. Cette information est alors donnée à R sous la forme :
> matrix(data=NA,nrow=l;ncol=j)
x <- 1:10
> matrix(data=x, ncol=5,nrow=2,byrow=TRUE)
[,1] [,2] [,3] [,4] [,5]
[1,] 1 2 3 4 5
[2,] 6 7 8 9 10
> matrix(data=x, ncol=5,nrow=2,byrow=FALSE)
[,1] [,2] [,3] [,4] [,5]
[1,] 1 3 5 7 9
[2,] 2 4 6 8 10
Data frame :
Un data.frame est un objet implicitement crée lors du recours à la
commande read.table.
On peut fabriquer un tel objet de manière explicite au moyen de read.table
comme ci-suit :
> x <- 1:
Liste :
Une liste permet de regrouper dans un même objet des éléments différents,
sans aucune contrainte liée à la taille ou au mode de ces derniers. Par
exemple:
> L1 <- list(x,y)
> L1
[[1]]
[1] 1 2 3 4
[[2]]
[1] 1 2 3
Expression :
Ce dernier mode consiste en une suite de caractère qui peut être
interprétable par le logiciel et évaluer par la suite au moyen de la
commande eval. Par exemple :
Voici une liste des principaux opérateurs qui sont regroupés en trois
grandes classe :
Une autre fonction utile est layout qui peut conduire à des partitions assez
complexes.
II-2- fonctions graphiques:
Certaines de ces options sont identiques pour plusieurs fonctions
graphiques, voici les principales:
[1] 8
Une fonction comme aov ou lm produit donc une liste dont les différents
éléments correspondent aux résultats de l’analyse. Si l’on reprend l’exemple
de l’analyse de variance sur les données InsectSprays, on peut regarder la
structure de l’objet crée par aov :
> str(aov.spray, max.level = -1)
List of 13
- attr(*, "class")= chr [1:2] "aov" "lm"
Une autre façon de regarder cette structure est d’afficher les noms des
éléments de l’objet :
Les fonctions génériques n’agissent généralement pas sur les objets: elles
appellent la fonction appropriée en fonction de la classe de l’argument. Une
fonction appelée par une générique est une méthode (method) dans le
jargon de R. De façon schématique, une méthode est construite selon
generic.cls , où cls désigne la classe de l’objet. Dans le cas de summary, on
peut afficher les méthodes correspondantes :
On peut
visualiser les particularités de cette générique dans le cas de la
régression linéaire comparée `a l’analyse de variance avec un petit exemple
simulé :
Le tableau suivant indique certaines fonctions génériques qui font des
analyses supplémentaires á partir d’un objet qui résulte d’une analyse faite
au préalable, l’argument principale tant cet objet, mais dans certains cas un
argument supplémentaire est nécessaire comme pour predict ou update.
Variable : nom de variable locale à la fonction for, qui prendra une valeur
différente à chaque itération ;
Vector : le vecteur contenant les valeurs que va prendre variable ;
instruction: l'instruction à répéter à chaque itération (si entre accolades,
permet d'évaluer plusieurs instructions).
Les boucles avec for() sont pratiques pour remplir les éléments d'une liste
ou d'un vecteur. La création a priori de l'objet à remplir, à la taille souhaitée
est recommandée ;
En effet, l'allocation en mémoire est plus efficace de la sorte, plutô t que de
laisser R créer un objet plus long à chaque itération.
## [1] 1 2 3
## [1] 1 2 3
b) La fonction switch():
switch(valeur_test,
cas_1 = {
instruction_cas_1
},
cas_2 = {
instruction_cas_2
},
Valeur_test : nombre ou chaîne de caractère ;
Si valeur_test vaut cas_1, évaluer instruction_cas_1 ;
Si valeur_test vaut cas_2, évaluer instruction_cas_2 ;
>centre <- function(x, type) {
switch(type,
mean = mean(x),
median = median(x))
}
>x <- rcauchy(10)
centre(x, "mean")
## [1] -1.082508
centre(x, "median")
## [1] -0.1342556
>i<- 1
repeat {
i <- i + 1
if(i == 3) break
}
>i
## [1] 3
IV-3- La vectorisation:
Les boucles sont lentes en R ;
De nombreux cas où elles peuvent être évitées ;
Emploi des calculs vectoriels.
Voici un exemple d'un calcul en boucle que l'on peut vectoriser :
# Somme des logarithmes des 10 premiers entiers
>somme_log <- 0
for(i in seq_len(10)){
somme_log <- somme_log + log(i)
}
>somme_log
## [1] 15.10441
À chaque itération, on modifie la valeur de somme_log pour lui ajouter la
valeur du logarithme d'un entier i. La même chose en vectorisant le calcul
# En vectorisant le calcul
>sum(log(seq_len(10)))
## [1] 15.10441
La fonction log() est appliquée à tous les éléments de seq_len(10) ;
Puis la fonction sum() se charge d'additionner tous les éléments entre eux.
Nous allons considérer des fonctions qui prennent une fonction en input, et
retournent un vecteur en output ;
Deux sources :
Les fonctions issues du package plyr,
certains équivalents présents dans le package base.
Il existe des fonctions du même type que celles du package plyr, dans le
package base ;
Elles sont cependant moins uniformisées dans leur syntaxe ;
c) La fonction Vectorize():