1. .
......
R : un langage pour l’analyse des donnees
Ahmadou H. Dicko
FASEG
Ahmadou H. Dicko (FASEG) R : un langage pour l’analyse des donnees 1 / 1
2. Introduction
On est entoure de donnees (data deluge)
On a besoin de prendre des decisions de maniere objective
els sont les outils qu’on peut utiliser ?
Ahmadou H. Dicko (FASEG) R : un langage pour l’analyse des donnees 2 / 1
3. R to the rescue
Ahmadou H. Dicko (FASEG) R : un langage pour l’analyse des donnees 3 / 1
4. Historique
R est un langage qui tirent ses racines de S, Lisp, scheme
elques dates importantes :
▶ 1990 : Ross Ihaka et Robert Gentleman developpe R
▶ 1996 : le projet devient open source
▶ 2013 : R 3.0 est sorti et il y a plus de 5000 packages (librarie)
Ahmadou H. Dicko (FASEG) R : un langage pour l’analyse des donnees 4 / 1
5. R comme une calculatrice
Les fonctions sont des objets par exemple
2 * 3 + 10
R output
[1] 16
x <- c(pi, 4*pi / 3)
log(-cos(x))
R output
[1] 0.0000 -0.6931
Ahmadou H. Dicko (FASEG) R : un langage pour l’analyse des donnees 5 / 1
6. Dans R tout est objet
Les fonctions sont des objets par exemple
mean(1:5)
R output
[1] 3
mamoyenne <- mean
mamoyenne(1:5)
R output
[1] 3
Ahmadou H. Dicko (FASEG) R : un langage pour l’analyse des donnees 6 / 1
7. Programmation fonctionnelle avec R
Supporte les lambda
(function(x) toupper(x))("a")
R output
[1] "A"
R ou Lisp ?
'*'(2, '+'(10, 4))
R output
[1] 28
Ahmadou H. Dicko (FASEG) R : un langage pour l’analyse des donnees 7 / 1
8. Programmation OOP avec R
Systeme de classe avec Reference
Polygone <- setRefClass("Polygone", fields = c("cotes"))
carre <- Polygone$new(cotes = 4)
triangle <- carre
triangle$cotes <- 3
carre$cotes
R output
R> R> R> [1] 3
Ahmadou H. Dicko (FASEG) R : un langage pour l’analyse des donnees 8 / 1
9. Programmation OOP avec R
Systeme de classe sans Reference
Polygone1 <- setClass("Polygone1", representation(cotes = "integer"))
carre1 <- new("Polygone1", cotes = 4L)
triangle1 <- carre1
triangle1@cotes <- 3L
carre1@cotes
R output
R> R> R> [1] 4
Ahmadou H. Dicko (FASEG) R : un langage pour l’analyse des donnees 9 / 1
10. R un langage matriciel
Creer une matrice
A <- matrix(c(1, 4, 6, 3, 0, 3, 5, 8, 9), ncol = 3)
A
R output
[,1] [,2] [,3]
[1,] 1 3 5
[2,] 4 0 8
[3,] 6 3 9
Ahmadou H. Dicko (FASEG) R : un langage pour l’analyse des donnees 10 / 1
11. R un langage matriciel
Decomposition en valeur singuliere
svd(A)
R output
$d
[1] 15.17 2.86 1.66
$u
[,1] [,2] [,3]
[1,] -0.3562 -0.79150 0.4966
[2,] -0.5754 0.60458 0.5508
[3,] -0.7362 -0.08954 -0.6708
$v
[,1] [,2] [,3]
[1,] -0.4665 0.38100 -0.7983
[2,] -0.2161 -0.92422 -0.3148
[3,] -0.8578 0.02562 0.5134
Ahmadou H. Dicko (FASEG) R : un langage pour l’analyse des donnees 11 / 1
12. R un langage matriciel
Une autre decomposition utile
qr(A)
R output
$qr
[,1] [,2] [,3]
[1,] -7.2801 -2.8846 -12.500
[2,] 0.5494 3.1111 1.910
[3,] 0.8242 0.4063 -3.179
$rank
[1] 3
$qraux
[1] 1.137 1.914 3.179
$pivot
[1] 1 2 3
Ahmadou H. Dicko (FASEG) R : un langage pour l’analyse des donnees 12 / 1
13. Et les donnees dans tous ca ?
Ahmadou H. Dicko (FASEG) R : un langage pour l’analyse des donnees 13 / 1
14. Importation des donnees
voiture <- read.csv("voiture.csv", row.names = 1)
names(voiture) <- tolower(names(voiture))
str(voiture)
R output
R> 'data.frame': 18 obs. of 8 variables:
$ cyl : int 1350 1588 1294 1222 1585 1297 1796 1565 2664 1166 ...
$ puis : int 79 85 68 59 98 82 79 55 128 55 ...
$ lon : int 393 468 424 412 439 429 449 424 452 399 ...
$ lar : int 161 177 168 161 164 169 169 163 173 157 ...
$ poids : int 870 1110 1050 930 1105 1080 1160 1010 1320 815 ...
$ vitesse : int 165 160 152 151 165 160 154 140 180 140 ...
$ finition: Factor w/ 3 levels "B","M","TB": 1 3 2 2 1 3 1 1 3 2 ...
$ prix : int 30570 39990 29600 28250 34900 35480 32300 32000 47700 26540
Ahmadou H. Dicko (FASEG) R : un langage pour l’analyse des donnees 14 / 1
16. Exploration des donnees
d = 2
ALFASUD-TI-1350
AUDI-100-L
SIMCA-1307-GLS
CITROEN-GS-CLUB
FIAT-132-1600GLS
LANCIA-BETA-1300
PEUGEOT-504 RENAULT-16-TL
RENAULT-30-TS
TOYOTA-COROLLA
ALFETTA-1.66
PRINCESS-1800-HL
DATSUN-200L
TAUNUS-2000-GL
RANCHO
MAZDA-9295
OPEL-REKORD-L
LADA-1300
cyl
puis
lon
lar
poids
vitesse
prix
Ahmadou H. Dicko (FASEG) R : un langage pour l’analyse des donnees 16 / 1
17. Modelisation
fit <- lm(prix ~ puis + lon + poids + vitesse,
data = voiture)
summary(fit)$coefficient
R output
R> Estimate Std. Error t value Pr(>|t|)
(Intercept) 9686.367 31605.59 0.3065 0.7641
puis 245.372 155.21 1.5809 0.1379
lon 22.920 99.67 0.2300 0.8217
poids 9.362 21.70 0.4314 0.6732
vitesse -103.140 192.28 -0.5364 0.6007
Ahmadou H. Dicko (FASEG) R : un langage pour l’analyse des donnees 17 / 1
18. Export vers BDD
require(RSQLite)
drv <- dbDriver("SQLite")
con <- dbConnect(drv, dbname = ":memory:")
dbGetInfo(con)
R output
R> R> $dbname
[1] ":memory:"
$serverVersion
[1] "3.7.14"
$rsId
integer(0)
$loadableExtensions
[1] "on"
$flags
[1] 6Ahmadou H. Dicko (FASEG) R : un langage pour l’analyse des donnees 18 / 1
19. Export vers BDD
dbWriteTable(con, "voiture", voiture)
voiture_chere <- dbGetQuery(con, "SELECT * FROM voiture
WHERE prix > 30000")
head(voiture_chere, 3)
R output
[1] TRUE
R> row_names cyl puis lon lar poids vitesse finition
1 ALFASUD-TI-1350 1350 79 393 161 870 165 B
2 AUDI-100-L 1588 85 468 177 1110 160 TB
3 FIAT-132-1600GLS 1585 98 439 164 1105 165 B
prix
1 30570
2 39990
3 34900
Ahmadou H. Dicko (FASEG) R : un langage pour l’analyse des donnees 19 / 1
20. La boite a outils du data hacker
un langage pour l’analyse de donnee : R, Python, Julia
un systeme de BDD (Spatial) : PostgreSQL, SQLite, (GRASS)
Version control : git
Graphique : R, D3.js, Vega.js
un editeur de texte : Emacs (org-mode, ESS, etc)
Unix tool (sed, grep, tail, etc)
Ahmadou H. Dicko (FASEG) R : un langage pour l’analyse des donnees 20 / 1
21. Liens pour aller plus loin
Stackoverflow : hp://stackoverflow.com
R-blogger : hp://www.r-bloggers.com
Kaggle : hp://www.kaggle.com/
Coursera :
▶ Machine learning (Standford)
▶ Computing for data analysis (John Hopkins U)
▶ Data analysis (John Hopkins U)
Ahmadou H. Dicko (FASEG) R : un langage pour l’analyse des donnees 21 / 1
23. Conclusion
R est de facto le langage pour l’analyse de donnees
Possible d’utiliser d’autres outils :
▶ Python (scikit-learn, pandas, etc)
▶ Julia (the new kid on the block)
▶ C++ (inevitable quand on veut de la puissance, Rcpp)
Plus d’excuse pour utiliser MS Excel
Ahmadou H. Dicko (FASEG) R : un langage pour l’analyse des donnees 23 / 1
24. Merci de votre aention
Ahmadou H. Dicko (FASEG) R : un langage pour l’analyse des donnees 24 / 1