.
......
Analyse de données avec R
Ahmadou H. DICKO
Dakar R User Group
Janvier 2014
Ahmadou H. DICKO (R meetup) Analyse de...
Plan
...1 Intro
...2 Présentation de R
...3 Méthodes factorielles
...4 Méthodes de classification
...5 Un exemple d’analys...
Introduction
Avec la révolution numérique on vit un déluge de donnés (facebook,
twier, etc.)
Les données à traiter sont d...
Plan
...1 Intro
...2 Présentation de R
...3 Méthodes factorielles
...4 Méthodes de classification
...5 Un exemple d’analys...
Historique
R est un langage interpreté qui tirent ses racines de S, Lisp, schemes
elques dates importantes :
▶ 1990 : Ros...
Concepts importants
Un package R est en ensemble de fonctionnalité généralement organisé
autour d’un thème (ou pas)
Travai...
Environnement de travail
Rstudio
1
2
3
4
Ahmadou H. DICKO (R meetup) Analyse de données avec R Janvier 2014 7 / 66
Environnement de travail
Emacs ESS
Ahmadou H. DICKO (R meetup) Analyse de données avec R Janvier 2014 8 / 66
Base du langage : R calculatrice ?
x <- c(pi, 4*pi / 3)
log(-cos(x))
R output
[1] 0.00000 -0.69315
Ahmadou H. DICKO (R mee...
Base du langage : Collection d’éléments (1/2)
c(1, 2, 10)
R output
[1] 1 2 10
c("Ali", "Modou", "Marie")
R output
[1] "Ali...
Base du langage : Collection d’éléments (2/2)
c(1, 2, "a")
R output
[1] "1" "2" "a"
list("Ali", 10, "Marie")
R output
[[1]...
Base du langage : table (rectangulaire)
df <- data.frame(nom = c("Ali", "Modou", "Marie"),
taille = c(170, 185, 165))
df$n...
Analyse de données sous R
R dispose de fonctions pour faire des analyses basiques :
▶ prcomp, princomp, etc.
▶ hclust, kme...
Plan
...1 Intro
...2 Présentation de R
...3 Méthodes factorielles
...4 Méthodes de classification
...5 Un exemple d’analys...
Analyse en composantes
principales
Ahmadou H. DICKO (R meetup) Analyse de données avec R Janvier 2014 15 / 66
ACP : Objectif
Analyse exploratoire des tables de variables quantitatives
Positionner les individus par rapport à leurs pr...
Mise en oeuvre sous R
auto <- read.csv("data/auto.csv", row.names = 1)
summary(auto)
R output
cylindree puissance vitesse ...
ACP : Mise en oeuvre sous R
head(auto)
R output
cylindree puissance vitesse poids largeur
Citroën C2 1.1 Base 1124 61 158 ...
ACP : Mise en oeuvre sous R
Citroën C2 1.1 Base
Smart Fortwo Coupé
Mini 1.6 170
Nissan Micra 1.2 65
Renault Clio 3.0 V6
Au...
ACP : Mise en oeuvre sous R
cylindree
puissance
vitesse
poids
largeur
longueur
Ahmadou H. DICKO (R meetup) Analyse de donn...
ACP : Mise en oeuvre sous R
library(FactoMineR)
auto_acp <- PCA(auto, ncp = 2, graph = FALSE)
PC6
PC5
PC4
PC3
PC2
PC1
Ahma...
ACP : Mise en oeuvre sous R
auto_acp$eig
R output
eigenvalue percentage of variance
comp 1 4.411268 73.52113
comp 2 0.8534...
ACP : Mise en oeuvre sous R
cbind(
dist = auto_acp$ind$dist^2,
coord = auto_acp$ind$coord,
cos2 = auto_acp$ind$cos2
)[1 :4...
ACP : Mise en oeuvre sous R
auto_acp$var$coord
R output
Dim.1 Dim.2
cylindree 0.96241 -0.12694
puissance 0.92332 -0.35266
...
ACP : Mise en oeuvre sous R
Dim 1 (73.52%)
Dim2(14.22%)
Citroën C2 1.1 Base
Smart Fortwo Coupé
Mini 1.6 170
Nissan Micra 1...
ACP : Mise en oeuvre sous R
Dimension 1 (73.52%)
Dimension2(14.22%)
Variables factor map (PCA)
cylindree
puissancevitesse
...
ACP : Mise en oeuvre sous R
PC1
PC2
Citroën C2 1.1 Base
Smart Fortwo Coupé
Mini 1.6 170
Nissan Micra 1.2 65
Renault Clio 3...
Analyse factorielles des
correspondances
Ahmadou H. DICKO (R meetup) Analyse de données avec R Janvier 2014 28 / 66
AFC : Objectif
Analyse exploratoire de tables de contingence
Mise en relief des écarts à l’indépendance du tableau de cont...
AFC : Mise en oeuvre sous R
nice <- read.csv("data/nice.csv")
names(nice) <- tolower(names(nice))
str(nice)
R output
'data...
AFC : Mise en oeuvre sous R
library(reshape2)
nice <- melt(nice, id = "csp", variable.name = "filiere")
str(nice)
R output...
AFC : Mise en oeuvre sous R
cont_table <- xtabs(value ~ csp + filiere, data = nice)
cont_table
R output
filiere
csp iut sc...
AFC :Mise en oeuvre sous R
chisq.test(cont_table)
R output
Pearson's Chi-squared test
data: cont_table
X-squared = 256.01,...
AFC :Mise en oeuvre sous R
nice_afc <- CA(cont_table, graph = FALSE)
Dim 1 (68.60%)
Dim2(21.20%)
Agriculteur
Cadres
Employ...
AFC :Mise en oeuvre sous R
rbind(
nice_afc$row$contrib[ ,1 :3],
nice_afc$col$contrib[ ,1 :3]
)
R output
Dim 1 Dim 2 Dim 3
...
AFC :Mise en oeuvre sous R
rbind(
nice_afc$row$cos2[ ,1 :3],
nice_afc$col$cos2[ ,1 :3]
)
R output
Dim 1 Dim 2 Dim 3
Agricu...
Analyse des correspondances
multiples
Ahmadou H. DICKO (R meetup) Analyse de données avec R Janvier 2014 37 / 66
ACM : Objectif
Analyse exploratoire de tables de variables qualitatives
Mere en évidence des proximités (non linéaire) en...
ACM : Mise en oeuvre sous R
chien <- read.csv("data/chien.csv", row.names = 1, colClasses = "factor")
names(chien) <- tolo...
ACM : Mise en oeuvre sous R
library(ade4)
acm.disjonctif(chien)[1 :6, 1 :5]
R output
taille.1 taille.2 taille.3 poids.1 po...
ACM : Mise en oeuvre sous R
chien_acm <- MCA(chien,
quali.sup = match("fonction", names(chien)),
graph = FALSE)
axes 10
ax...
ACM : Mise en oeuvre sous R
Dim 1 (28.90%)
Dim2(23.08%)
beauceron
basset
berger allemand
boxer
bull-dog
bull-mastiff
canic...
Plan
...1 Intro
...2 Présentation de R
...3 Méthodes factorielles
...4 Méthodes de classification
...5 Un exemple d’analys...
Classification hierarchique
Ahmadou H. DICKO (R meetup) Analyse de données avec R Janvier 2014 44 / 66
CAH : Objectif
Créez des groupes en agrégreant successivement les individus
Ahmadou H. DICKO (R meetup) Analyse de données...
CAH : Mise en oeuvre sous R
tempsen <- read.csv("data/tempsen.csv", row.names = 1)
tempsen[1 :8, 1 :6]
R output
Jan Feb Ma...
CAH : Mise en oeuvre sous R
mat_dist <- dist(tempsen)
as.matrix(mat_dist)[1 :5, 1 :5]
R output
Bakel Bambey Cap-skiring Da...
CAH : Mise en oeuvre sous R
tempclust <- hclust(mat_dist, method = "average")
Dakar-yoff
Mbour
Thies
Cap-skiring
Saint-lou...
CAH : Mise en oeuvre sous R
0
5
10
15
20
25
Ahmadou H. DICKO (R meetup) Analyse de données avec R Janvier 2014 49 / 66
CAH : Mise en oeuvre sous R
temphcut <- cutree(tempclust, k = 3)
Dakar-yoff
Mbour
Thies
Cap-skiring
Saint-louis
Podor
Ling...
CAH : Mise en oeuvre sous R
Dim 1 (74.59%)
Dim2(20.19%)
Dakar-yoff
Cap-skiring
Saint-louis
Thies
Mbour
Ziguinchor
Kedougou...
Plan
...1 Intro
...2 Présentation de R
...3 Méthodes factorielles
...4 Méthodes de classification
...5 Un exemple d’analys...
Titre exemple
Un exemple pour conclure
Ahmadou H. DICKO (R meetup) Analyse de données avec R Janvier 2014 53 / 66
Classification des ménages Sénégalais selon leur niveau de
vie
étape 1 : Analyse factorielle : ACM
étape 2 : K-means sur l...
Mise en oeuvre sous R
household <- readRDS("data/household.rds")
summary(household)
R output
region location gender age
da...
Mise en oeuvre sous R
naxes_max <- sum(sapply(household[ ,-1], nlevels)) - ncol(household[ ,-1])
mca <- dudi.acm(household...
Mise en oeuvre sous R
0.00
0.05
0.10
0.15
0.20
0.25
0 10 20 30
axes
eig
Ahmadou H. DICKO (R meetup) Analyse de données ave...
Mise en oeuvre sous R
On va donc travailler avec les 4 premiers axes et vérifier qu’ils sont bien
centrés et réduits.
mcad...
Mise en oeuvre sous R
Utilisation des K-means sur les axes factorielles
Ne pas oublier d’initialiser le seed pour rendre l...
Mise en oeuvre sous R
33
84
88
31
90
74
81
3
93
68
100
10
54
61
16
23
44
76
41
57
49
18
35
47
11
40
6
25
42
34
53
26
59
75...
Mise en oeuvre sous R
0
5
10
15
20
25
30
Ahmadou H. DICKO (R meetup) Analyse de données avec R Janvier 2014 61 / 66
Mise en oeuvre sous R
Nombre de centre par groupe
hh_tree <- cutree(hh_hclust, k = 3)
table(hh_tree)
R output
hh_tree
1 2 ...
Mise en oeuvre sous R
Associer à chaque ménage à son nouveau groupe
dataclust <- data.frame(kclust = seq_along(hh_tree), h...
Mise en oeuvre sous R
Étape finale de consolidation des groupes précedemment formés.
Utilisation de la médianne pour rendr...
Mise en oeuvre sous R
-0.5
0.0
0.5
1.0
-1.0 -0.5 0.0 0.5 1.0
axe 1
axe2
cluster 1 2 3
Ahmadou H. DICKO (R meetup) Analyse ...
Conclusion
R est une option viable et performante pour l’analyse de données
R est libre et gratuit donc le seul coût est c...
Prochain SlideShare
Chargement dans…5
×

Analyse de données avec R : Une petite introduction

1 577 vues

Publié le

Il s'agit d'une introduction aux méthodes factorielles en utilisant le package FactoMineR du langage/logiciel R

Publié dans : Formation
0 commentaire
2 j’aime
Statistiques
Remarques
  • Soyez le premier à commenter

Aucun téléchargement
Vues
Nombre de vues
1 577
Sur SlideShare
0
Issues des intégrations
0
Intégrations
3
Actions
Partages
0
Téléchargements
111
Commentaires
0
J’aime
2
Intégrations 0
Aucune incorporation

Aucune remarque pour cette diapositive

Analyse de données avec R : Une petite introduction

  1. 1. . ...... Analyse de données avec R Ahmadou H. DICKO Dakar R User Group Janvier 2014 Ahmadou H. DICKO (R meetup) Analyse de données avec R Janvier 2014 1 / 66
  2. 2. Plan ...1 Intro ...2 Présentation de R ...3 Méthodes factorielles ...4 Méthodes de classification ...5 Un exemple d’analyse non supervisé Ahmadou H. DICKO (R meetup) Analyse de données avec R Janvier 2014 2 / 66
  3. 3. Introduction Avec la révolution numérique on vit un déluge de donnés (facebook, twier, etc.) Les données à traiter sont de plus en plus volumineux et liés L’analyse exploratoire (EDA) est une étape nécessaire pour comprendre les données et leurs liaisons potentielles L’analyse factorielle des données et les méthodes de classification présente une cadre efficace d’exploration de telle données Cee analyse passe par des logiciels spécialisés de plus en plus en performant R est l’un des langage pour l’analyse de données les plus utilisés dans le monde Ahmadou H. DICKO (R meetup) Analyse de données avec R Janvier 2014 3 / 66
  4. 4. Plan ...1 Intro ...2 Présentation de R ...3 Méthodes factorielles ...4 Méthodes de classification ...5 Un exemple d’analyse non supervisé Ahmadou H. DICKO (R meetup) Analyse de données avec R Janvier 2014 4 / 66
  5. 5. Historique R est un langage interpreté qui tirent ses racines de S, Lisp, schemes elques dates importantes : ▶ 1990 : Ross Ihaka et Robert Gentleman développent R ▶ 1996 : le projet devient open source ▶ 2013 : R 3.0 est sorti et il y a plus de 5000 packages (add-ons) Ahmadou H. DICKO (R meetup) Analyse de données avec R Janvier 2014 5 / 66
  6. 6. Concepts importants Un package R est en ensemble de fonctionnalité généralement organisé autour d’un thème (ou pas) Travailler sur R nécessite d’écrire des lignes de commandes (pas toujours) Rstudio est un environnement de travail pour R (mais y en d’autres… ESS) Ahmadou H. DICKO (R meetup) Analyse de données avec R Janvier 2014 6 / 66
  7. 7. Environnement de travail Rstudio 1 2 3 4 Ahmadou H. DICKO (R meetup) Analyse de données avec R Janvier 2014 7 / 66
  8. 8. Environnement de travail Emacs ESS Ahmadou H. DICKO (R meetup) Analyse de données avec R Janvier 2014 8 / 66
  9. 9. Base du langage : R calculatrice ? x <- c(pi, 4*pi / 3) log(-cos(x)) R output [1] 0.00000 -0.69315 Ahmadou H. DICKO (R meetup) Analyse de données avec R Janvier 2014 9 / 66
  10. 10. Base du langage : Collection d’éléments (1/2) c(1, 2, 10) R output [1] 1 2 10 c("Ali", "Modou", "Marie") R output [1] "Ali" "Modou" "Marie" Ahmadou H. DICKO (R meetup) Analyse de données avec R Janvier 2014 10 / 66
  11. 11. Base du langage : Collection d’éléments (2/2) c(1, 2, "a") R output [1] "1" "2" "a" list("Ali", 10, "Marie") R output [[1]] [1] "Ali" [[2]] [1] 10 [[3]] [1] "Marie" Ahmadou H. DICKO (R meetup) Analyse de données avec R Janvier 2014 11 / 66
  12. 12. Base du langage : table (rectangulaire) df <- data.frame(nom = c("Ali", "Modou", "Marie"), taille = c(170, 185, 165)) df$nom R output [1] Ali Modou Marie Levels: Ali Marie Modou df[df$taille > 165, ] R output nom taille 1 Ali 170 2 Modou 185 Ahmadou H. DICKO (R meetup) Analyse de données avec R Janvier 2014 12 / 66
  13. 13. Analyse de données sous R R dispose de fonctions pour faire des analyses basiques : ▶ prcomp, princomp, etc. ▶ hclust, kmeans, etc. Il existe de nombreux packages mais les principaux sont : ▶ FactoMineR ▶ ade4 Nous utiliserons principalement FactoMineR pour le reste des analyses Ahmadou H. DICKO (R meetup) Analyse de données avec R Janvier 2014 13 / 66
  14. 14. Plan ...1 Intro ...2 Présentation de R ...3 Méthodes factorielles ...4 Méthodes de classification ...5 Un exemple d’analyse non supervisé Ahmadou H. DICKO (R meetup) Analyse de données avec R Janvier 2014 14 / 66
  15. 15. Analyse en composantes principales Ahmadou H. DICKO (R meetup) Analyse de données avec R Janvier 2014 15 / 66
  16. 16. ACP : Objectif Analyse exploratoire des tables de variables quantitatives Positionner les individus par rapport à leurs proximités Positionner les variables par rapport à leurs corrélations Chercher un petit nombre de variables non corrélées qui résument l’information de la table originale Ahmadou H. DICKO (R meetup) Analyse de données avec R Janvier 2014 16 / 66
  17. 17. Mise en oeuvre sous R auto <- read.csv("data/auto.csv", row.names = 1) summary(auto) R output cylindree puissance vitesse poids Min. : 698 Min. : 52 Min. :135 Min. : 730 1st Qu.:1735 1st Qu.:109 1st Qu.:175 1st Qu.:1249 Median :2494 Median :170 Median :223 Median :1464 Mean :2722 Mean :207 Mean :215 Mean :1487 3rd Qu.:2958 3rd Qu.:227 3rd Qu.:245 3rd Qu.:1702 Max. :5998 Max. :660 Max. :350 Max. :2385 largeur longueur Min. :1515 Min. :2500 1st Qu.:1742 1st Qu.:3921 Median :1792 Median :4325 Mean :1838 Mean :4278 3rd Qu.:1860 3rd Qu.:4701 Max. :2650 Max. :5038 Ahmadou H. DICKO (R meetup) Analyse de données avec R Janvier 2014 17 / 66
  18. 18. ACP : Mise en oeuvre sous R head(auto) R output cylindree puissance vitesse poids largeur Citroën C2 1.1 Base 1124 61 158 932 1659 Smart Fortwo Coupé 698 52 135 730 1515 Mini 1.6 170 1598 170 218 1215 1690 Nissan Micra 1.2 65 1240 65 154 965 1660 Renault Clio 3.0 V6 2946 255 245 1400 1810 Audi A3 1.9 TDI 1896 105 187 1295 1765 longueur Citroën C2 1.1 Base 3666 Smart Fortwo Coupé 2500 Mini 1.6 170 3625 Nissan Micra 1.2 65 3715 Renault Clio 3.0 V6 3812 Audi A3 1.9 TDI 4203 Ahmadou H. DICKO (R meetup) Analyse de données avec R Janvier 2014 18 / 66
  19. 19. ACP : Mise en oeuvre sous R Citroën C2 1.1 Base Smart Fortwo Coupé Mini 1.6 170 Nissan Micra 1.2 65 Renault Clio 3.0 V6 Audi A3 1.9 TDI Peugeot 307 1.4 HDI 70 Peugeot 407 3.0 V6 BVA Mercedes Classe C 270 CDI BMW 530d Jaguar S-Type 2.7 V6 Bi-Turbo BMW 745i Mercedes Classe S 400 CDI Citroën C3 Pluriel 1.6i BMW Z4 2.5i Audi TT 1.8T 180 Aston Martin Vanquish Bentley Continental GT Ferrari Enzo Renault Scenic 1.9 dCi 120 Volkswagen Touran 1.9 TDI 105 Land Rover Defender Td5 Land Rover Discovery Td5 Nissan X-Trail 2.2 dCi cylindree puissancevitesse poids largeur longueur Ahmadou H. DICKO (R meetup) Analyse de données avec R Janvier 2014 19 / 66
  20. 20. ACP : Mise en oeuvre sous R cylindree puissance vitesse poids largeur longueur Ahmadou H. DICKO (R meetup) Analyse de données avec R Janvier 2014 20 / 66
  21. 21. ACP : Mise en oeuvre sous R library(FactoMineR) auto_acp <- PCA(auto, ncp = 2, graph = FALSE) PC6 PC5 PC4 PC3 PC2 PC1 Ahmadou H. DICKO (R meetup) Analyse de données avec R Janvier 2014 21 / 66
  22. 22. ACP : Mise en oeuvre sous R auto_acp$eig R output eigenvalue percentage of variance comp 1 4.411268 73.52113 comp 2 0.853410 14.22350 comp 3 0.435664 7.26107 comp 4 0.235871 3.93118 comp 5 0.051437 0.85728 comp 6 0.012351 0.20586 cumulative percentage of variance comp 1 73.521 comp 2 87.745 comp 3 95.006 comp 4 98.937 comp 5 99.794 comp 6 100.000 Ahmadou H. DICKO (R meetup) Analyse de données avec R Janvier 2014 22 / 66
  23. 23. ACP : Mise en oeuvre sous R cbind( dist = auto_acp$ind$dist^2, coord = auto_acp$ind$coord, cos2 = auto_acp$ind$cos2 )[1 :4, ] R output dist Dim.1 Dim.2 Dim.1 Dim.2 Citroën C2 1.1 Base 7.1023 -2.5959 -0.50997 0.94882 0.036618 Smart Fortwo Coupé 20.9302 -4.1501 -1.66591 0.82291 0.132595 Mini 1.6 170 2.9343 -1.3819 -0.81572 0.65082 0.226768 Nissan Micra 1.2 65 6.6117 -2.5133 -0.40359 0.95540 0.024635 Ahmadou H. DICKO (R meetup) Analyse de données avec R Janvier 2014 23 / 66
  24. 24. ACP : Mise en oeuvre sous R auto_acp$var$coord R output Dim.1 Dim.2 cylindree 0.96241 -0.12694 puissance 0.92332 -0.35266 vitesse 0.88611 -0.33874 poids 0.75691 0.57571 largeur 0.80123 -0.11102 longueur 0.79526 0.50440 Ahmadou H. DICKO (R meetup) Analyse de données avec R Janvier 2014 24 / 66
  25. 25. ACP : Mise en oeuvre sous R Dim 1 (73.52%) Dim2(14.22%) Citroën C2 1.1 Base Smart Fortwo Coupé Mini 1.6 170 Nissan Micra 1.2 65 Renault Clio 3.0 V6 Audi A3 1.9 TDIPeugeot 307 1.4 HDI 70 Peugeot 407 3.0 V6 BVA Mercedes Classe C 270 CDI BMW530d Jaguar S-Type 2.7 V6 Bi-Turbo BMW 745i Mercedes Classe S 400 CDI Citroën C3 Pluriel 1.6i BMWZ4 2.5i Audi TT 1.8T 180 Aston Martin Vanquish Bentley Continental GT Ferrari Enzo Renault Scenic 1.9 dCi 120 Volkswagen Touran 1.9 TDI 105Land Rover Defender Td5 Land Rover Discovery Td5 Nissan X-Trail 2.2 dCi -4 -2 0 2 4 -4-202 Ahmadou H. DICKO (R meetup) Analyse de données avec R Janvier 2014 25 / 66
  26. 26. ACP : Mise en oeuvre sous R Dimension 1 (73.52%) Dimension2(14.22%) Variables factor map (PCA) cylindree puissancevitesse poids largeur longueur Ahmadou H. DICKO (R meetup) Analyse de données avec R Janvier 2014 26 / 66
  27. 27. ACP : Mise en oeuvre sous R PC1 PC2 Citroën C2 1.1 Base Smart Fortwo Coupé Mini 1.6 170 Nissan Micra 1.2 65 Renault Clio 3.0 V6 Audi A3 1.9 TDI Peugeot 307 1.4 HDI 70 Peugeot 407 3.0 V6 BVAMercedes Classe C 270 CDIBMW 530d Jaguar S-Type 2.7 V6 Bi-Turbo BMW 745i Mercedes Classe S 400 CDI Citroën C3 Pluriel 1.6i BMW Z4 2.5i Audi TT 1.8T 180 Aston Martin Vanquish Bentley Continental GT Ferrari Enzo Renault Scenic 1.9 dCi 120 Volkswagen Touran 1.9 TDI 105Land Rover Defender Td5 Land Rover Discovery Td5 Nissan X-Trail 2.2 dCi cylindree puissancevitesse poids largeur longueur -0.4 -0.2 0 0.2 0.4 -0.4-0.200.20.4 -4 -2 0 2 4 -4-2024 Ahmadou H. DICKO (R meetup) Analyse de données avec R Janvier 2014 27 / 66
  28. 28. Analyse factorielles des correspondances Ahmadou H. DICKO (R meetup) Analyse de données avec R Janvier 2014 28 / 66
  29. 29. AFC : Objectif Analyse exploratoire de tables de contingence Mise en relief des écarts à l’indépendance du tableau de contigence Allez au delà du χ2 et autre test d’indépendance Ahmadou H. DICKO (R meetup) Analyse de données avec R Janvier 2014 29 / 66
  30. 30. AFC : Mise en oeuvre sous R nice <- read.csv("data/nice.csv") names(nice) <- tolower(names(nice)) str(nice) R output 'data.frame': 6 obs. of 7 variables: $ csp : Factor w/ 6 levels "Agriculteur",..: 1 4 2 6 3 5 $ iut : int 9 66 77 50 52 55 $ sciences: int 35 72 139 78 86 103 $ lsh : int 44 171 380 155 274 191 $ droit : int 24 122 195 152 43 40 $ economie: int 8 48 69 57 26 25 $ médecine: int 13 71 233 85 48 46 Ahmadou H. DICKO (R meetup) Analyse de données avec R Janvier 2014 30 / 66
  31. 31. AFC : Mise en oeuvre sous R library(reshape2) nice <- melt(nice, id = "csp", variable.name = "filiere") str(nice) R output 'data.frame': 36 obs. of 3 variables: $ csp : Factor w/ 6 levels "Agriculteur",..: 1 4 2 6 3 5 1 4 2 6 ... $ filiere: Factor w/ 6 levels "iut","sciences",..: 1 1 1 1 1 1 2 2 2 2 ... $ value : int 9 66 77 50 52 55 35 72 139 78 ... Ahmadou H. DICKO (R meetup) Analyse de données avec R Janvier 2014 31 / 66
  32. 32. AFC : Mise en oeuvre sous R cont_table <- xtabs(value ~ csp + filiere, data = nice) cont_table R output filiere csp iut sciences lsh droit economie médecine Agriculteur 9 35 44 24 8 13 Cadres 77 139 380 195 69 233 Employés 52 86 274 43 26 48 Indépendants 66 72 171 122 48 71 Ouvriers 55 103 191 40 25 46 Prof. inter. 50 78 155 152 57 85 Ahmadou H. DICKO (R meetup) Analyse de données avec R Janvier 2014 32 / 66
  33. 33. AFC :Mise en oeuvre sous R chisq.test(cont_table) R output Pearson's Chi-squared test data: cont_table X-squared = 256.01, df = 25, p-value < 2.2e-16 Ahmadou H. DICKO (R meetup) Analyse de données avec R Janvier 2014 33 / 66
  34. 34. AFC :Mise en oeuvre sous R nice_afc <- CA(cont_table, graph = FALSE) Dim 1 (68.60%) Dim2(21.20%) Agriculteur Cadres Employés Indépendants Ouvriers Prof. inter. iut sciences lsh droit economie médecine -0.4 -0.2 0 0.2 0.4 -0.200.2 Ahmadou H. DICKO (R meetup) Analyse de données avec R Janvier 2014 34 / 66
  35. 35. AFC :Mise en oeuvre sous R rbind( nice_afc$row$contrib[ ,1 :3], nice_afc$col$contrib[ ,1 :3] ) R output Dim 1 Dim 2 Dim 3 Agriculteur 0.58122 6.94491 41.01525 Cadres 7.01907 55.70760 3.12380 Employés 39.44170 0.84044 24.34516 Indépendants 5.22233 16.28117 15.52434 Ouvriers 23.97869 5.74860 15.76031 Prof. inter. 23.75698 14.47727 0.23114 iut 1.30525 12.83230 8.81539 sciences 8.71843 10.71249 65.06416 lsh 28.64715 6.50715 15.86942 droit 42.57064 9.21883 0.78294 economie 5.81289 7.41395 3.06994 médecine 12.94564 53.31529 6.39815 Ahmadou H. DICKO (R meetup) Analyse de données avec R Janvier 2014 35 / 66
  36. 36. AFC :Mise en oeuvre sous R rbind( nice_afc$row$cos2[ ,1 :3], nice_afc$col$cos2[ ,1 :3] ) R output Dim 1 Dim 2 Dim 3 Agriculteur 0.071781 0.265039 0.55201612 Cadres 0.285208 0.699478 0.01383267 Employés 0.915171 0.006026 0.06156014 Indépendants 0.413949 0.398790 0.13410216 Ouvriers 0.839285 0.062176 0.06011591 Prof. inter. 0.825516 0.155453 0.00087528 iut 0.150971 0.458651 0.11111768 sciences 0.455903 0.173102 0.37077989 lsh 0.871778 0.061192 0.05262910 droit 0.925526 0.061934 0.00185501 economie 0.678399 0.267374 0.03904481 médecine 0.423402 0.538837 0.02280468 Ahmadou H. DICKO (R meetup) Analyse de données avec R Janvier 2014 36 / 66
  37. 37. Analyse des correspondances multiples Ahmadou H. DICKO (R meetup) Analyse de données avec R Janvier 2014 37 / 66
  38. 38. ACM : Objectif Analyse exploratoire de tables de variables qualitatives Mere en évidence des proximités (non linéaire) entre individus, entre modalités et entre les deux Développer une typologie des individus et des modalités Ahmadou H. DICKO (R meetup) Analyse de données avec R Janvier 2014 38 / 66
  39. 39. ACM : Mise en oeuvre sous R chien <- read.csv("data/chien.csv", row.names = 1, colClasses = "factor") names(chien) <- tolower(names(chien)) str(chien) R output 'data.frame': 27 obs. of 7 variables: $ taille : Factor w/ 3 levels "1","2","3": 3 1 3 2 1 3 1 1 2 3 ... $ poids : Factor w/ 3 levels "1","2","3": 2 1 2 2 1 3 1 1 1 2 ... $ velocité : Factor w/ 3 levels "1","2","3": 3 1 3 2 1 1 2 1 1 3 ... $ intelligence: Factor w/ 3 levels "1","2","3": 2 1 3 2 2 3 3 1 2 2 ... $ affection : Factor w/ 2 levels "1","2": 2 1 2 2 2 1 2 2 2 2 ... $ agressivité : Factor w/ 2 levels "1","2": 2 2 2 2 1 2 1 1 2 1 ... $ fonction : Factor w/ 3 levels "1","2","3": 3 2 3 1 1 3 1 1 1 1 ... Ahmadou H. DICKO (R meetup) Analyse de données avec R Janvier 2014 39 / 66
  40. 40. ACM : Mise en oeuvre sous R library(ade4) acm.disjonctif(chien)[1 :6, 1 :5] R output taille.1 taille.2 taille.3 poids.1 poids.2 beauceron 0 0 1 0 1 basset 1 0 0 1 0 berger allemand 0 0 1 0 1 boxer 0 1 0 0 1 bull-dog 1 0 0 1 0 bull-mastiff 0 0 1 0 0 Ahmadou H. DICKO (R meetup) Analyse de données avec R Janvier 2014 40 / 66
  41. 41. ACM : Mise en oeuvre sous R chien_acm <- MCA(chien, quali.sup = match("fonction", names(chien)), graph = FALSE) axes 10 axes 9 axes 8 axes 7 axes 6 axes 5 axes 4 axes 3 axes 2 axes 1 Ahmadou H. DICKO (R meetup) Analyse de données avec R Janvier 2014 41 / 66
  42. 42. ACM : Mise en oeuvre sous R Dim 1 (28.90%) Dim2(23.08%) beauceron basset berger allemand boxer bull-dog bull-mastiff caniche chihuahua cocker colley dalmatien dobermann dogue allemand epagneul breton epagneul français fox-hound fox-terrier grd bleu de gasc labrador levrier mastiff pékinois pointer saint-bernard setter teckel terre-neuve taille_1 taille_2 taille_3 poids_1 poids_2 poids_3 velocité_1 velocité_2 velocité_3 intelligence_1 intelligence_2 intelligence_3 affection_1 affection_2 agressivité_1 agressivité_2 fonction_1 fonction_2 fonction_3 -1.5 -1 -0.5 0 0.5 1 1.5 -1.5-1-0.500.51 Ahmadou H. DICKO (R meetup) Analyse de données avec R Janvier 2014 42 / 66
  43. 43. Plan ...1 Intro ...2 Présentation de R ...3 Méthodes factorielles ...4 Méthodes de classification ...5 Un exemple d’analyse non supervisé Ahmadou H. DICKO (R meetup) Analyse de données avec R Janvier 2014 43 / 66
  44. 44. Classification hierarchique Ahmadou H. DICKO (R meetup) Analyse de données avec R Janvier 2014 44 / 66
  45. 45. CAH : Objectif Créez des groupes en agrégreant successivement les individus Ahmadou H. DICKO (R meetup) Analyse de données avec R Janvier 2014 45 / 66
  46. 46. CAH : Mise en oeuvre sous R tempsen <- read.csv("data/tempsen.csv", row.names = 1) tempsen[1 :8, 1 :6] R output Jan Feb Mar Apr May Jun Bakel 34.017 37.017 41.058 43.292 43.442 40.525 Bambey 33.075 35.025 37.792 38.050 37.992 36.592 Cap-skiring 31.950 32.483 31.933 30.208 30.058 31.608 Dakar-yoff 26.158 25.442 25.700 25.358 26.575 29.150 Diourbel 34.083 35.958 38.992 39.908 40.792 38.008 Fatick 34.283 36.183 39.150 39.642 39.192 36.792 Goudiry 34.420 37.360 40.480 41.380 41.900 38.280 Kaolack 34.850 36.908 39.992 40.800 40.275 37.292 Ahmadou H. DICKO (R meetup) Analyse de données avec R Janvier 2014 46 / 66
  47. 47. CAH : Mise en oeuvre sous R mat_dist <- dist(tempsen) as.matrix(mat_dist)[1 :5, 1 :5] R output Bakel Bambey Cap-skiring Dakar-yoff Diourbel Bakel 0.0000 10.1929 25.641 37.296 5.8866 Bambey 10.1929 0.0000 15.561 27.693 4.5734 Cap-skiring 25.6410 15.5614 0.000 13.790 20.0178 Dakar-yoff 37.2961 27.6932 13.790 0.000 32.0160 Diourbel 5.8866 4.5734 20.018 32.016 0.0000 Ahmadou H. DICKO (R meetup) Analyse de données avec R Janvier 2014 47 / 66
  48. 48. CAH : Mise en oeuvre sous R tempclust <- hclust(mat_dist, method = "average") Dakar-yoff Mbour Thies Cap-skiring Saint-louis Podor Linguere Ranerou Bakel Matam Bambey Louga Kedougou Ziguinchor Koungheul Velingara Nioro Simenti Kolda Goudiry Tambacounda Fatick Diourbel Kaolack 0 5 10 15 20 25 30 Height Ahmadou H. DICKO (R meetup) Analyse de données avec R Janvier 2014 48 / 66
  49. 49. CAH : Mise en oeuvre sous R 0 5 10 15 20 25 Ahmadou H. DICKO (R meetup) Analyse de données avec R Janvier 2014 49 / 66
  50. 50. CAH : Mise en oeuvre sous R temphcut <- cutree(tempclust, k = 3) Dakar-yoff Mbour Thies Cap-skiring Saint-louis Podor Linguere Ranerou Bakel Matam Bambey Louga Kedougou Ziguinchor Koungheul Velingara Nioro Simenti Kolda Goudiry Tambacounda Fatick Diourbel Kaolack 0 5 10 15 20 25 30 Height Ahmadou H. DICKO (R meetup) Analyse de données avec R Janvier 2014 50 / 66
  51. 51. CAH : Mise en oeuvre sous R Dim 1 (74.59%) Dim2(20.19%) Dakar-yoff Cap-skiring Saint-louis Thies Mbour Ziguinchor Kedougou Louga Bambey Velingara Simenti Fatick Nioro Tambacounda Goudiry Kolda Kaolack Diourbel Linguere Koungheul Ranerou Podor Bakel Matam cluster 1 cluster 2 cluster 3 cluster 1 cluster 2 cluster 3 -10 -5 0 5 0 5 Ahmadou H. DICKO (R meetup) Analyse de données avec R Janvier 2014 51 / 66
  52. 52. Plan ...1 Intro ...2 Présentation de R ...3 Méthodes factorielles ...4 Méthodes de classification ...5 Un exemple d’analyse non supervisé Ahmadou H. DICKO (R meetup) Analyse de données avec R Janvier 2014 52 / 66
  53. 53. Titre exemple Un exemple pour conclure Ahmadou H. DICKO (R meetup) Analyse de données avec R Janvier 2014 53 / 66
  54. 54. Classification des ménages Sénégalais selon leur niveau de vie étape 1 : Analyse factorielle : ACM étape 2 : K-means sur les axes factorielles étape 3 : CAH sur les centres de gravités des groupes formés étape 4 : K-means pour consolider les groupes Ahmadou H. DICKO (R meetup) Analyse de données avec R Janvier 2014 54 / 66
  55. 55. Mise en oeuvre sous R household <- readRDS("data/household.rds") summary(household) R output region location gender age dakar :1598 urban:8576 male :10684 15-30yrs: 775 diourbel :1200 rural:4989 female: 2881 30-45yrs:3983 kolda :1200 45-60yrs:5043 saint-louis:1200 60+ :3764 tamba :1200 kaolack :1199 (Other) :5968 hh_size literacy job housing_status low :3563 yes:5582 yes:9312 owner :10853 medium:4948 no :7983 no :4253 location: 2013 high :5054 free : 638 other : 61 Ahmadou H. DICKO (R meetup) Analyse de données avec R Janvier 2014 55 / 66
  56. 56. Mise en oeuvre sous R naxes_max <- sum(sapply(household[ ,-1], nlevels)) - ncol(household[ ,-1]) mca <- dudi.acm(household[,-1], nf = naxes_max, scannf = FALSE) location.urban location.rural gender.male gender.female age.15.30yrs age.30.45yrs age.45.60yrs age.60. hh_size.low hh_size.medium hh_size.high literacy.yes literacy.no job.yes job.no housing_status.owner housing_status.location housing_status.freehousing_status.other possess_cellphone.no possess_cellphone.yes electricity.yes electricity.no school_access.0...14 school_access.15...29school_access.30...44 school_access.45...59 school_access.60. health_access.0...14health_access.15...29health_access.30...44health_access.45...59 health_access.60. econsit_percep.worse econsit_percep.same econsit_percep.better econsit_percep.dont_know deptotjr.low deptotjr.medium deptotjr.high cons_tot.low cons_tot.medium cons_tot.high job_categ.occupied job_categ.unemp job_categ.student job_categ.housejob job_categ.retired job_categ.other_unoccup 0 1 2 -1 0 1 axe 1 axe2 Ahmadou H. DICKO (R meetup) Analyse de données avec R Janvier 2014 56 / 66
  57. 57. Mise en oeuvre sous R 0.00 0.05 0.10 0.15 0.20 0.25 0 10 20 30 axes eig Ahmadou H. DICKO (R meetup) Analyse de données avec R Janvier 2014 57 / 66
  58. 58. Mise en oeuvre sous R On va donc travailler avec les 4 premiers axes et vérifier qu’ils sont bien centrés et réduits. mcadata <- mca$l1[ ,1 :4] sapply(mcadata, function(x) list(mean = round(mean(x), 2), std = sd(x))) R output RS1 RS2 RS3 RS4 mean 0 0 0 0 std 1 1 1 1 Ahmadou H. DICKO (R meetup) Analyse de données avec R Janvier 2014 58 / 66
  59. 59. Mise en oeuvre sous R Utilisation des K-means sur les axes factorielles Ne pas oublier d’initialiser le seed pour rendre les résultats reproductibles set.seed(1234) hh_part <- kmeans(mcadata, centers = 100, nstart = 20, iter.max = 500) CAH sur les centres de gravités des classes hh_hclust <- hclust(dist(hh_part$centers), method = "ward") Ahmadou H. DICKO (R meetup) Analyse de données avec R Janvier 2014 59 / 66
  60. 60. Mise en oeuvre sous R 33 84 88 31 90 74 81 3 93 68 100 10 54 61 16 23 44 76 41 57 49 18 35 47 11 40 6 25 42 34 53 26 59 75 89 4 77 65 19 48 69 7 36 60 21 94 43 72 24 46 22 97 67 32 73 45 71 38 14 83 1 17 51 13 98 82 99 37 62 29 52 9 55 96 66 20 28 79 86 70 87 2 50 85 12 58 91 30 56 39 78 27 5 8 63 15 64 92 80 95 0 5 10 15 20 25 30 dist(hh_part$centers) Height Ahmadou H. DICKO (R meetup) Analyse de données avec R Janvier 2014 60 / 66
  61. 61. Mise en oeuvre sous R 0 5 10 15 20 25 30 Ahmadou H. DICKO (R meetup) Analyse de données avec R Janvier 2014 61 / 66
  62. 62. Mise en oeuvre sous R Nombre de centre par groupe hh_tree <- cutree(hh_hclust, k = 3) table(hh_tree) R output hh_tree 1 2 3 43 35 22 Ahmadou H. DICKO (R meetup) Analyse de données avec R Janvier 2014 62 / 66
  63. 63. Mise en oeuvre sous R Associer à chaque ménage à son nouveau groupe dataclust <- data.frame(kclust = seq_along(hh_tree), hclust = hh_tree) household$kclust <- hh_part$cluster household <- merge(household, dataclust, by = "kclust") Nombre final de ménages par groupe table(household$hclust) R output 1 2 3 6894 3253 3418 Ahmadou H. DICKO (R meetup) Analyse de données avec R Janvier 2014 63 / 66
  64. 64. Mise en oeuvre sous R Étape finale de consolidation des groupes précedemment formés. Utilisation de la médianne pour rendre les résultats moins sensibles aux valeurs extrêmes centers <- by(mcadata, household$hclust, function(x) apply(x, 2, median)) centers <- matrix(unlist(centers), ncol = ncol(mcadata), byrow = TRUE) consol <- kmeans(mcadata, centers = centers, iter.max = 50, nstart = 10) Ahmadou H. DICKO (R meetup) Analyse de données avec R Janvier 2014 64 / 66
  65. 65. Mise en oeuvre sous R -0.5 0.0 0.5 1.0 -1.0 -0.5 0.0 0.5 1.0 axe 1 axe2 cluster 1 2 3 Ahmadou H. DICKO (R meetup) Analyse de données avec R Janvier 2014 65 / 66
  66. 66. Conclusion R est une option viable et performante pour l’analyse de données R est libre et gratuit donc le seul coût est celui d’apprentissage Il s’agit juste d’une introduction plusieurs méthodes n’ont pas été explorées Ahmadou H. DICKO (R meetup) Analyse de données avec R Janvier 2014 66 / 66

×