...fin du cours précédent num voiture moto cheval camion bus âne mulet 1 1 1 0 1 0 0 0 2 1 1 0 1 0 0 0 3 1 1 0 1 0 0 0 4 0 1 1 1 0 1 1 5 1 0 0 1 1 0 0 6 1 0 0 1 1 0 0 7 1 0 0 1 1 0 0 8 1 0 0 1 1 0 0 9 1 0 0 1 1 0 0 10 0 1 1 1 0 0 0 11 0 1 1 1 0 0 0 12 0 1 1 1 0 0 0 13 0 1 1 1 0 0 0 14 0 1 1 1 0 0 0 15 0 1 1 1 0 0 0 16 1 1 0 0 1 0 0 17 1 1 0 0 1 0 0 18 1 1 0 0 1 0 0 19 1 1 0 0 1 0 0 20 0 0 1 0 0 1 1
...fin du cours précédent num Comptnt_1 Comptnt_2 Comptnt_3 Comptnt_4 Comptnt_5 Comptnt_6 Comptnt_7 1 1 1 0 1 0 0 0 2 1 1 0 1 0 0 0 3 1 1 0 1 0 0 0 4 0 1 1 1 0 1 1 5 1 0 0 1 1 0 0 6 1 0 0 1 1 0 0 7 1 0 0 1 1 0 0 8 1 0 0 1 1 0 0 9 1 0 0 1 1 0 0 10 0 1 1 1 0 0 0 11 0 1 1 1 0 0 0 12 0 1 1 1 0 0 0 13 0 1 1 1 0 0 0 14 0 1 1 1 0 0 0 15 0 1 1 1 0 0 0 16 1 1 0 0 1 0 0 17 1 1 0 0 1 0 0 18 1 1 0 0 1 0 0 19 1 1 0 0 1 0 0 20 0 0 1 0 0 1 1
...fin du cours précédent num Comptnt_1 Comptnt_2 Comptnt_3 Comptnt_4 Comptnt_5 Comptnt_6 Comptnt_7 1 4 7 3 4 4 7 3 2 5 8 4 4 5 8 4 3 3 6 2 4 3 6 2 4 6 9 5 4 6 9 5 5 2 5 1 4 2 5 1 6 8 11 7 4 8 11 7 7 2 5 1 4 2 5 1 8 4 7 3 4 4 7 3 9 2 5 1 4 2 5 1 10 3 6 2 4 3 6 2 11 4 7 3 4 4 7 3 12 2 5 1 4 2 5 1 13 3 6 2 4 3 6 2 14 4 7 3 4 4 7 3 15 2 5 1 4 2 5 1 16 1 4 0 4 1 4 0 17 5 8 4 4 5 8 4 18 3 6 2 4 3 6 2 19 4 7 3 4 4 7 3 20 5 8 4 4 5 8 4
...fin du cours précédent num sexe dept Reponse_1 1 f HG 1_O 2 h AV 1_N 3 f HG 1_O 4 h AV 1_N = num f h HG AV 1_0 1_N 1 1 0 1 0 1 0 2 0 1 0 1 0 1 3 1 0 1 0 1 0 4 0 1 0 1 0 1
Point de départ : matrice des distances Méthodes hiérarchiques : - Descendante : Classification Hiérarchique Descendante (CHD) - Ascendante : Classification Hiérarchique Ascendante (CHA) Non hiérarchiques: - k-means - fuzzy clustering
Particularité de la «méthode alceste» : - Pas de matrice des distances - AFC* sur tableau «uc» / formes - extraction des positions sur le premier facteur - > 2 classes*** - détermination de la classe la plus grande - nouvelle AFC* sur la classe la plus grande - > 2 nouvelles classes - x 9 - sur du texte, la classification est faites 2 fois sur 2 tableaux d' «uc» légèrement différents - croisement des 2 classifications et sélection des intersections les plus fortes (au sens du CHI2) ** * algorithme particulier ** permet de déterminer un «nombre de classe» et est utilisé pour des classifications simples *** c'est un peu plus compliqué que ça...
Tableau de données R > dm<-read.csv2('data.csv',row.names=1) num var1 var2 var3 var4 var5 1 1 1 1 0 0 2 1 1 1 0 0 3 0 0 1 1 1 4 0 0 1 1 1 5 0 1 1 1 0 6 0 1 1 1 0 7 0 1 1 1 0 8 1 1 0 0 1 9 1 1 0 0 1 10 1 1 0 0 1
Matrice des distances R > dissmat<-dist(dm,method='binary') 1 2 3 4 5 6 7 8 9 2 0.0 3 0.8 0.8 4 0.8 0.8 0.0 5 0.5 0.5 0.5 0.5 6 0.5 0.5 0.5 0.5 0.0 7 0.5 0.5 0.5 0.5 0.0 0.0 8 0.5 0.5 0.8 0.8 0.8 0.8 0.8 9 0.5 0.5 0.8 0.8 0.8 0.8 0.8 0.0 10 0.5 0.5 0.8 0.8 0.8 0.8 0.8 0.0 0.0
CHD (diana) library(cluster) R > chd<-diana(dissmat,diss=true) R > plot(chd,which.plot=2)
CHA - agnes R > cha<-agnes(dissmat,diss=true) R > plot(cha,which.plot=2)
K-Means (pam) 2 classes R > pm2<-pam(dissmat,diss=true,2) R > plot(pm2)
K-Means (pam) 3 classes R > pm3<-pam(dissmat,diss=true,3) R > plot(pm3)
K-Means (pam) 4 classes R > pm4<-pam(dissmat,diss=true,4) R > plot(pm4)
Un autre tableau R > dm<-read.csv2('data2.csv',row.names=1) num sexe dept var1 var2 var3 var4 var5 1 *f *31 Var1_1 Var2_1 Var3_1 Var4_1 Var5_1 2 *f *31 Var1_1 Var2_1 Var3_1 Var4_1 Var5_1 3 *f *31 Var1_1 Var2_1 Var3_1 Var4_1 Var5_1 4 *f *31 Var1_1 Var2_1 Var3_1 Var4_1 Var5_1 5 *f *31 Var1_1 Var2_1 Var3_1 Var4_1 Var5_1 6 *f *65 Var1_1 Var2_1 Var3_2 Var4_2 Var5_2 7 *f *65 Var1_1 Var2_1 Var3_2 Var4_2 Var5_2 8 *f *65 Var1_1 Var2_1 Var3_2 Var4_2 Var5_2 9 *f *65 Var1_1 Var2_1 Var3_2 Var4_2 Var5_2 10 *f *65 Var1_1 Var2_1 Var3_2 Var4_2 Var5_2 11 *h *82 Var1_2 Var2_2 Var3_3 Var4_3 Var5_3 12 *h *82 Var1_2 Var2_2 Var3_3 Var4_3 Var5_3 13 *h *82 Var1_2 Var2_2 Var3_3 Var4_3 Var5_3 14 *h *82 Var1_2 Var2_2 Var3_3 Var4_3 Var5_3 15 *h *82 Var1_2 Var2_2 Var3_3 Var4_3 Var5_3 16 *h *32 Var1_3 Var2_3 Var3_3 Var4_3 Var5_3 17 *h *32 Var1_3 Var2_3 Var3_3 Var4_3 Var5_3 18 *h *32 Var1_3 Var2_3 Var3_3 Var4_3 Var5_3 19 *h *32 Var1_3 Var2_3 Var3_3 Var4_3 Var5_3 20 *h *32 Var1_3 Var2_3 Var3_3 Var4_3 Var5_3
Matrice des distances R > library(cluster) R > dissmat<-daisy(dm,metric='gower') 1 2 3 4 5 6 7 2 0.0000000 3 0.0000000 0.0000000 4 0.0000000 0.0000000 0.0000000 5 0.0000000 0.0000000 0.0000000 0.0000000 6 0.5714286 0.5714286 0.5714286 0.5714286 0.5714286 7 0.5714286 0.5714286 0.5714286 0.5714286 0.5714286 0.0000000 8 0.5714286 0.5714286 0.5714286 0.5714286 0.5714286 0.0000000 0.0000000 9 0.5714286 0.5714286 0.5714286 0.5714286 0.5714286 0.0000000 0.0000000 10 0.5714286 0.5714286 0.5714286 0.5714286 0.5714286 0.0000000 0.0000000 11 1.0000000 1.0000000 1.0000000 1.0000000 1.0000000 1.0000000 1.0000000 12 1.0000000 1.0000000 1.0000000 1.0000000 1.0000000 1.0000000 1.0000000 13 1.0000000 1.0000000 1.0000000 1.0000000 1.0000000 1.0000000 1.0000000 14 1.0000000 1.0000000 1.0000000 1.0000000 1.0000000 1.0000000 1.0000000 15 1.0000000 1.0000000 1.0000000 1.0000000 1.0000000 1.0000000 1.0000000 16 1.0000000 1.0000000 1.0000000 1.0000000 1.0000000 1.0000000 1.0000000 17 1.0000000 1.0000000 1.0000000 1.0000000 1.0000000 1.0000000 1.0000000 18 1.0000000 1.0000000 1.0000000 1.0000000 1.0000000 1.0000000 1.0000000 19 1.0000000 1.0000000 1.0000000 1.0000000 1.0000000 1.0000000 1.0000000 20 1.0000000 1.0000000 1.0000000 1.0000000 1.0000000 1.0000000 1.0000000
CHD - diana R > chd<-diana(dissmat,diss=true)
CHA - agnes R > chd<-agnes(dissmat,diss=true)
Fuzzy (fanny) 2 classes R > fun2<-fanny(dissmat,k=2,diss=true) R > plot(fun2)
Fuzzy (fanny) 3 classes R > fun3<-fanny(dissmat,k=3,diss=true) R > plot(fun3)
Fuzzy (fanny) 4 classes R > fun4<-fanny(dissmat,k=4,diss=true) R > plot(fun4)
K-Means (pam) 2 classes R > pm2<-pam(dissmat,diss=true,2) R > plot(pm2)
K-Means (pam) 3 classes R > pm3<-pam(dissmat,diss=true,3) R > plot(pm3)
k-means 4 classes R > pm4<-pam(dissmat,diss=true,4) R > plot(pm4)
profil R > dm<-cbind(dm,classes=as.data.frame(pm4$clustering)[,1]) #fun4 Ou R > dm<-cbind(dm,classes=as.data.frame(cutree(as.hclust(cha),4))[,1]) #chd R > source('chemin_vers_chdfunct.r') R > cont<-buildconttable(dm) R > prof<-buildprof(cont,dm,4) ** classe 1 ** 5 20 25 Eff. uce Eff. total % chi2 forme 5 5 100 20 Var3_1 7,74E-006 5 5 100 20 Var4_1 7,74E-006 5 5 100 20 Var5_1 7,74E-006 5 10 50 6,67 Var1_1 9,82E-003 5 10 50 6,67 Var2_1 9,82E-003 * * * * * * 5 5 100 20 *31 7,74E-006 5 10 50 6,67 *f 9,82E-003
profil 5 20 25 ** classe 2 ** Eff. classe Eff. total % chi2 forme P chi2 5 5 100 20 Var3_2 7,74E-006 5 5 100 20 Var4_2 7,74E-006 5 5 100 20 Var5_2 7,74E-006 5 10 50 6,67 Var1_1 9,82E-003 5 10 50 6,67 Var2_1 9,82E-003 * * * * * * 5 5 100 20 *65 7,74E-006 5 10 50 6,67 *f 9,82E-003
AFC sur le tableau de contingence formes / classes R > library(ca) R > afc<-ca(cont) #attention à la gestion de illustratives R > plot(afc)
AFC sur le tableau de contingence formes / classes
AFC sur le tableau de contingence formes / classes
AFC sur le tableau de contingence formes / classes
AFC sur le tableau de contingence formes / classes
CHD diana (N=200) R > dm<-read.csv2('data3.csv',row.names=1) R > dissmat<-daisy(dm,metric='gower') R > chd<-diana(dissmat,diss=true) Montrer les données
CHD - diana cc
CHA - agnes R > cha<-diana(dissmat,diss=true)
CHA - agnes R > listclasse<-as.data.frame(as.character(cutree(as.hclust(cha),3))) R > clusplot(dissmat,listclasse[,1],diss=true,shade=true)
K-means - pam R >pm<-pam(dissmat,diss=true,3)
K-means - pam R > clusplot(dissmat,pm$clustering,diss=true,shade=true)
Fuzzy - fanny R > fun<-fanny(dissmat,k=3, diss=true)
Fuzzy - fanny R > clusplot(dissmat,fun$clustering,diss=true,shade=true)
Un autre cas réel (N=3374) CHD - diana
Un autre cas réel (N=3374) CHA - agnes
Bibliographie : The R project for Statistical Computing. http://www.r-project.org. Brostaux, Y. (2004). Introduction à l'environnement de programmation statistique R. http://www-spiral.lip6.fr/~safey/enseignements/r/documents/brostaux-introduction-au-r.pdf