24
. . 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

R for data analysis

Embed Size (px)

Citation preview

Page 1: R for data analysis

.

......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

Page 2: R for data analysis

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

Page 3: R for data analysis

R to the rescue

Ahmadou H. Dicko (FASEG) R : un langage pour l’analyse des donnees 3 / 1

Page 4: R for data analysis

Historique

R est un langage qui tirent ses racines de S, Lisp, schemeelques 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

Page 5: R for data analysis

R comme une calculatrice

Les fonctions sont des objets par exemple2 * 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

Page 6: R for data analysis

Dans R tout est objet

Les fonctions sont des objets par exemplemean(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

Page 7: R for data analysis

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

Page 8: R for data analysis

Programmation OOP avec R

Systeme de classe avec ReferencePolygone <- setRefClass("Polygone", fields = c("cotes"))

carre <- Polygone$new(cotes = 4)

triangle <- carre

triangle$cotes <- 3

carre$cotes

R outputR> R> R> [1] 3

Ahmadou H. Dicko (FASEG) R : un langage pour l’analyse des donnees 8 / 1

Page 9: R for data analysis

Programmation OOP avec R

Systeme de classe sans ReferencePolygone1 <- setClass("Polygone1", representation(cotes = "integer"))

carre1 <- new("Polygone1", cotes = 4L)

triangle1 <- carre1

triangle1@cotes <- 3L

carre1@cotes

R outputR> R> R> [1] 4

Ahmadou H. Dicko (FASEG) R : un langage pour l’analyse des donnees 9 / 1

Page 10: R for data analysis

R un langage matriciel

Creer une matriceA <- 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

Page 11: R for data analysis

R un langage matriciel

Decomposition en valeur singulieresvd(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.5134Ahmadou H. Dicko (FASEG) R : un langage pour l’analyse des donnees 11 / 1

Page 12: R for data analysis

R un langage matriciel

Une autre decomposition utileqr(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

attr(,"class")

[1] "qr"

Ahmadou H. Dicko (FASEG) R : un langage pour l’analyse des donnees 12 / 1

Page 13: R for data analysis

Et les donnees dans tous ca ?

Ahmadou H. Dicko (FASEG) R : un langage pour l’analyse des donnees 13 / 1

Page 14: R for data analysis

Importation des donnees

voiture <- read.csv("voiture.csv", row.names = 1)

names(voiture) <- tolower(names(voiture))

str(voiture)

R outputR> '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

Page 15: R for data analysis

Exploration des donnees

ALFASUD-TI-1350AUDI-100-L

SIMCA-1307-GLSCITROEN-GS-CLUB

FIAT-132-1600GLSLANCIA-BETA-1300

PEUGEOT-504RENAULT-16-TL

RENAULT-30-TSTOYOTA-COROLLA

ALFETTA-1.66PRINCESS-1800-HL

DATSUN-200LTAUNUS-2000-GL

RANCHOMAZDA-9295

OPEL-REKORD-LLADA-1300

cylpuis

lon

larpoids

vitesse

Ahmadou H. Dicko (FASEG) R : un langage pour l’analyse des donnees 15 / 1

Page 16: R for data analysis

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

Page 17: R for data analysis

Modelisation

fit <- lm(prix ~ puis + lon + poids + vitesse,

data = voiture)

summary(fit)$coefficient

R outputR> 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

Page 18: R for data analysis

Export vers BDD

require(RSQLite)

drv <- dbDriver("SQLite")

con <- dbConnect(drv, dbname = ":memory:")

dbGetInfo(con)

R outputR> R> $dbname

[1] ":memory:"

$serverVersion

[1] "3.7.14"

$rsId

integer(0)

$loadableExtensions

[1] "on"

$flags

[1] 6

$vfs

[1] ""

Ahmadou H. Dicko (FASEG) R : un langage pour l’analyse des donnees 18 / 1

Page 19: R for data analysis

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

Page 20: R for data analysis

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

Page 21: R for data analysis

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

Page 22: R for data analysis

Conclusion

Ahmadou H. Dicko (FASEG) R : un langage pour l’analyse des donnees 22 / 1

Page 23: R for data analysis

Conclusion

R est de facto le langage pour l’analyse de donneesPossible 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

Page 24: R for data analysis

Merci de votre aention

Ahmadou H. Dicko (FASEG) R : un langage pour l’analyse des donnees 24 / 1