2. What is R?
• R est un langage de programmation utilise pour l’analyse statistique. L’analyse des
données et la recherché scientifique.
• R est populaire pour les statisticiens, l’analystes des donnes, etc… pour récupérer,
nettoyer, analyser, visualiser, et présenter les données
3. Why R?
• R est largement utilisé dans les milieux universitaires et industriels.
• R est l’un des outils les plus populaires en matière de science des données et
d’analyse, classé n ° 1 de 2011 à 2016, mais malheureusement dépassé par Python
depuis 2017.
• Apprentissage automatique et apprentissage statistique
• Analyse de grappes et modèles de mélanges finis
• Analyse des séries chronologiques
• Statistiques multivariées
• Analyse de données spatiales
• . . .
4. What is R?
Le logiciel R (disponible sur http://www.r-project.org/) est un logiciel de
Statistique libre ayant un certain nombre d’atouts :
• il permet l’utilisation des méthodes statistiques classiques à l’aide de fonctions prédéfinies,
• il permet d’utiliser des techniques statistiques innovantes et récentes à l’aide de package
développés par les chercheurs et mis à disposition sur le site du CRAN (http://cran.r-
project.org/).
Nous proposons ici de travailler avec l’interface RStudio,
http://www.rstudio.com/
5. RStudio
• Un environnement de développement intégré (IDE) pour R.
• Fonctionne sur différents systèmes d'exploitation tels que Windows, Mac OS X
• et Linux.
• Suggestion: toujours en utilisant un projet RStudio, avec des sous-dossiers
• code: code source
• données: données brutes, données nettoyées
• figures: tableaux et graphiques
• docs: documents et rapports
• modèles: modèles d'analyse
7. Basic Computations in R
N.B. : En R, l'assignation peut se faire avec le symbole <- ou =, qui sont équivalents
8. Objects de R
R a cinq classes d’objets de base ou «atomiques».
Wait, what is an object ?
Tout ce que vous voyez ou créez dans R est un objet (vecteur, matrice, data frame
même une variable) est un objet.
• Character
• Numeric (Real Numbers)
• Integer (Whole Numbers)
• Complex
• Logical (True / False)
9. Les types de données
en R
Où le Data Mining est-il utilisé?
§ Vecteur
§ Matrices
§ Data frame
§ Liste
10. Vecteurs
On appelle vecteur toute séquence d'éléments de même type.
• Logical
• Integer
• Double
• complex
• character
11. Exemple
Syntaxe :
paste(string1, string2,string3, sep = " ", collapse = NULL)
String1, string2, string3: Les strings a concaténer
sep : Séparateur
Collapse : supprimer les espace entre les strings
Vecteurs
17. Matrices (suite)
# affiche les lignes 1 & 2 et les colonnes 2 & 3
# affiche les colonnes 3 & 1
# affiche tous les lignes sauf la première
dim() dans les matrices R
18. Matrices (suite)
Operations mathématiques
Plusieurs opérations peuvent être établie sur les matrices. Mais la dimension des
matrices doivent être la même.
# addition de 2 matrices
# soustraction de 2 matrices
20. Tableaux de données
(Data Frame)
• C'est le plus couramment utilisé
• Il est utilisé pour stocker des données tabulaires. C'est différent de la matrice.
• Dans une matrice, chaque élément doit avoir la même classe.
• Dans un data frame, vous pouvez mettre une liste de vecteurs contenant différentes
classes.
• Cela signifie que chaque colonne d'un cadre de données agit comme une liste.
Chaque fois que vous lirez des données dans R, elles seront stockées sous la forme
d’une trame de données.
22. Data Frame(suite)
Extraction d’information depuis une table de donnée
result <-
data.frame(etudiant.data$nom_etud,e
tudiant.data$note_etud)
result <- etudiant.data[1,]
result <- etudiant.data[1:2,3]
23. Data Frame(suite)
Ajouter une ligne dans une table de donnée
etudiant.data2 <- data.frame(
rollid = c (16:17),
nom_etud = c ("sara","ayoub"),
note_etud = c (14,16),
date_nais = as.Date(c("1997-01-01", "1996-09-23")),
)
24. Data Frame(suite)
Ajouter une colonne dans une table de données
Créer un vecteur et l’ajouter dans la table de données
etudiant.data$cours<-
c("datamining","bigdata","BI","ML","Statistique")
25. List
Une liste est un type spécial de vecteur qui contient des éléments de différents types
de données.
rollno <- c(2,3,4)
names <- c("A","B","C")
location <- c("India", "US","UK")
x=list(rollno,names,location)
26. Liste(suite)
# ajouter un elemet comme location
mylist[5]<-"Kenitra"
mylist
#supprimer le dernier element
mylist[5] <- NULL
#Changer la valeur du 4eme element
mylist[4]<- 8
28. La fonction apply()
lapply(): applique une fonction pour chaque élément d’une liste ou vecteur et
retourne une liste.
sapply(): comme lapply() mais retourne un vecteur ou une matrice.
vapply(): comme sapply() mais faut spécifier a l'avance le type de variable de
retourne
Apply(x,1,sum)
• Le 1er argument X et un data frame ou une matrice
• Le 2eme argument 1 indique traiter par ligne .si 2 alors ont traite par colonne
• Le 3eme argument est une des fonctions d’agregation comme sum, mean etc ou
d’autre fonctions définie par l’utilisateur
31. Les fonctions
average <- function(x) {
y <- sum(x)
n <- length(x)
z <- y / n
return(z)
}
## calculer la moyenne de 1:10
average(1:10)
Calculer la moyenne
32. Les fonctions(suite)
som <- function (x, y)
{
r <- x + y
r
}
som(5, 10)
Créez une fonction qui renverra la somme de 2 entiers.
33. Les fonctions
repeat - Il exécute une boucle infinie
break - Interrompt l'exécution d'une boucle
next - Permet de sauter une itération dans une boucle
return - aide à quitter une fonction
34. Data Import/Export
Lire et écrire les données de:
• R native formats (incl. Rdata et RDS)
• CSV files
• EXCEL files
• ODBC databases
• SAS databases
35. Data Import/Export
save(): enregistrer les objets R dans un fichier .Rdata
load(): lire des objets R depuis un fichier .Rdatarm(): supprime les objets de R
exemple
a <- 1:10
save(a, file= "path/test.Rdata")
load("path/test.Rdata")
36. Data Import/Export
save.image(): enregistre le workspace dans un fichier It saves everything!
readRDS(): lire un seul objets R depuis un fichier .rds
saveRDS(): enregistre un seul objet R dans un fichier .rds
• Avantage of readRDS() and saveRDS():
Permet de restaurer des données sous diffèrent nom d’objet
• Avantage of load() and save():
Permet d’enregister plusieurs objets dans le même fichier
37. Data Import/Export
.csv
# creation d'un data frame
var1 <- 1:5
var2 <- (1:5) / 10
var3 <- c("R", "and", "Data Mining", "Examples", "Case Studies")
df1 <- data.frame(var1, var2, var3)
names(df1) <- c("VarInt", "VarReal", "VarChar")
# sauvgarder dans un fichier csv
write.csv(df1, "path/Data.csv", row.names = FALSE)
# lire un fichier csv
df2 <- read.csv("path/Data.csv")
38. Le dataset iris
Le dataset iris [Frank et Asuncion, 2010] comprend 50 échantillons de chacune des
trois classes de fleurs d'iris. Il y a cinq attributs dans le dataset:
• sepal length en cm,
• sepal width en cm,
• petal length en cm,
• petal width en cm
• Species: Iris Setosa, Iris Versicolour, et Iris Virginica.
https://archive.ics.uci.edu/ml/datasets/Iris
39. Taille et nom des variables
# Nombre de lignes
nrow(iris)
[1] 150
# nombre de colonnes
ncol(iris)
[1] 5
# dimension du dataset
dim(iris)
[1] 150 5
# les noms des colonnes
names(iris)
[1] "Sepal.Length" "Sepal.Width" "Petal.Length" "Petal.Width"
"Species"
40. La structure des données
• 150 observation (lignes) et 5 variables (colonnes).
• Les quatre premières colonnes sont des numeric.
• La dernier, Species est catégorique (appelé factor dans R), et contient trois
niveaux de valeurs.
# Structure du dataset
str(iris)
'data.frame': 150 obs. of 5 variables:
$ Sepal.Length: num 5.1 4.9 4.7 4.6 5 5.4 4.6 5 4.4 4.9 ...
$ Sepal.Width : num 3.5 3 3.2 3.1 3.6 3.9 3.4 3.4 2.9 3.1 ...
$ Petal.Length: num 1.4 1.4 1.3 1.5 1.4 1.7 1.4 1.5 1.4 1.5 ...
$ Petal.Width : num 0.2 0.2 0.2 0.2 0.2 0.4 0.3 0.2 0.2 0.1 ...
$ Species : Factor w/ 3 levels "setosa","versicolor",..: 1 1
1 1 1 1 1 1 1 1 ...
43. Fonction summary()
Variables numérique: minimum, maximum, mean, median, et le premier quart (25%)
et le trois quart (75%)
summary(iris)
Sepal.Length Sepal.Width Petal.Length Petal.Width Species
Min. :4.300 Min. :2.000 Min. :1.000 Min. :0.100 setosa :50
1st Qu.:5.100 1st Qu.:2.800 1st Qu.:1.600 1st Qu.:0.300 versicolor:50
Median :5.800 Median :3.000 Median :4.350 Median :1.300 virginica :50
Mean :5.843 Mean :3.057 Mean :3.758 Mean :1.199
3rd Qu.:6.400 3rd Qu.:3.300 3rd Qu.:5.100 3rd Qu.:1.800
Max. :7.900 Max. :4.400 Max. :6.900 Max. :2.500
47. Fréquence
# calcule de la fréquence
table(iris$Species)
setosa versicolor virginica
50 50 50
# afficher le résultat en camembert sans
pourcentage
pie(table(iris$Species))
48. Fréquence (suite)
# calcule de la fréquence
table(iris$Species)
setosa versicolor virginica
50 50 50
# afficher le résultat en camembert avec pourcentage
txt <- paste0(names(iris), 'n', precentages, '%')
pie(table(iris$Species), labels=txt)
49. Bar chart
# Affiche la charte sans couleur
iris2$Species %>% table() %>% barplot()
# Ajouter des couleurs et pourcentages
x <- iris2$Species %>% table() %>%
barplot(axisnames=F, main='espèce',
ylab='Frequence',
col=c('pink', 'lightblue', 'lightgreen'))
text(x, tab/2, labels=txt, cex=1.5)
50. Corrélation
Après avoir vérifié les distributions des variables individuelles, nous examinons
ensuite les relations entre deux variables.
## -----------------------------------------------------
cov(iris$Sepal.Length, iris$Petal.Length)
[1] 1.274315
## -----------------------------------------------------
cor(iris$Sepal.Length, iris$Petal.Length)
[1] 0.8717538
## -----------------------------------------------------
cov(iris[,1:4])
## -----------------------------------------------------
cor(iris[,1:4])
51. Corrélation(suite)
x <- c(0,1,1,2,3,5,8,13,21,34)
y <- log(x+1)
cor(x,y)
# correlation dans R : avec NA
x <- c(0,1,1,2,3,5,8,13,21,NA)
y <- log(x+1)
cor(x,y,use = "complete.obs") # néglige les NA
# correlation entre matrices
x <- matrice1[1:4]
y <- matrice2[10:11]
cor(x, y)
54. Visualisation avec le package
ggplot2
library(ggplot2)
qplot(Sepal.Length, Sepal.Width, data=iris, facets=Species ~.)
55. Sauvegarder les graphes
Sauvegarder les graphiques au format PDF et PS: pdf () et postscript ()
Fichiers BMP, JPEG, PNG et TIFF: bmp (), jpeg (), png () et tiff ()
# Enregister en fichier pdf
pdf("graphe.pdf")
x <- 1:50
plot(x, log(x))
graphics.off()
# Enregister en fichier pdf
pdf("graphe1.pdf")
x <- -20:20
plot(x, x^2)
graphics.off()
56. Sauvegarder les graphes
ggsave (): par défaut, enregistre le dernier tracé que vous avez affiché. Il devine
également le type de périphérique graphique à partir de l'extension
ggsave('graphe.png')
ggsave('graphe.pdf')
ggsave('graphe.jpg')
ggsave('graphe.bmp')
ggsave('graphe.ps')
ggsave('graphe.eps')