Forum de Statistiques
Vous souhaitez réagir à ce message ? Créez un compte en quelques clics ou connectez-vous pour continuer.
Les posteurs les plus actifs de la semaine
Aucun utilisateur

Le deal à ne pas rater :
Jeux, jouets et Lego : le deuxième à -50% (large sélection)
Voir le deal

Comparaison de classification sous R

2 participants

Aller en bas

classification - Comparaison de classification sous R Empty Comparaison de classification sous R

Message par Gueguett Jeu 19 Avr 2012 - 9:58

Bonjour,

Après avoir réalisé une ACM, je souhaite réaliser une classification pour une population de 50000 individus. Mais R ne pouvant calculer les distances pour autant d'individus, j'ai créé un échantillon aléatoire de 3000 individus (dont les résultats de l'ACM sont semblables à la population totale). J'utilise donc les résultats de mon ACM pour la classification de cet échantillon.

Mon probleme est que je n'obtiens pas les mêmes résultats de classification avec la fonction hclust et la fonction HCPC (du package FactomineR) pour le même échantillon, quelqu'un aurait une idée pourquoi ?

Mon code:
Code:
#ACM
res<-MCA(data.MCA.samp, ncp=6, graph = FALSE)

# fonction HCPC
clus<-HCPC(res, nb.clust=-1, consol=TRUE, iter.max=10, min=3, max=NULL,
metric="euclidean", method="ward", order=TRUE, graph.scale="inertia",
nb.par=5, graph=TRUE)

# fonction hclust
dist<-dist(res$ind$coord,method="euclidian")
hclust.ward<-hclust(dist,method="ward")
hclas.ward<-cutree(hclust.ward,k=4)
plot(hclust.ward)

D'autre part, je souhaite ensuite appliquer cette classification à ma population totale, mais je ne sais pas trop comment m'y prendre ... ?

Gaëtan


Dernière édition par Gueguett le Jeu 26 Avr 2012 - 7:40, édité 2 fois

Gueguett

Nombre de messages : 7
Age : 34
Localisation : Rennes
Date d'inscription : 21/02/2012

Revenir en haut Aller en bas

classification - Comparaison de classification sous R Empty Re: Comparaison de classification sous R

Message par Invité Jeu 19 Avr 2012 - 10:50

Bonjour,

cela peut venir de la consolidation des groupes dans la fonction HCPC.
Je m'étais déjà posé la question il y a quelques années...
Sans trop m'investir, mais du coup sans trop avoir de réponse.

Tu peux toujours envoyer un message aux développeurs de FactoMineR, qui te répondront surement.
Ils sont rennais comme toi... donc tu pourrais même aller les voir...

Cordialement

Invité
Invité


Revenir en haut Aller en bas

classification - Comparaison de classification sous R Empty Re: Comparaison de classification sous R

Message par Gueguett Jeu 19 Avr 2012 - 13:58

J'ai contacté un des développeurs qui m'a indiqué que la fonction hclust ne prend pas les bonnes distances, mais qu'il faut prendre les distances au carré. Mais je ne retrouve toujours pas les mêmes résultats ...

Gueguett

Nombre de messages : 7
Age : 34
Localisation : Rennes
Date d'inscription : 21/02/2012

Revenir en haut Aller en bas

classification - Comparaison de classification sous R Empty Re: Comparaison de classification sous R

Message par Invité Ven 20 Avr 2012 - 7:01

Bonjour,

Ayant moi-même été formé par les développeurs de FactoMineR (comme toi peut être), ils sont a priori mieux placé pour te répondre...
Leur as-tu fait part de tes résultats?

Cordialement

Invité
Invité


Revenir en haut Aller en bas

classification - Comparaison de classification sous R Empty Re: Comparaison de classification sous R

Message par Gueguett Ven 20 Avr 2012 - 7:15

Je vais continuer à fouiller le code de la fonction HCPC pour essayer de trouver par moi même, et dans quel cas je recontacterai un des développeurs de FactoMineR.

Et d'autre part, une fois ma classification effectuée (sur mon échantillon), je fais une description de chaque classe, mais comment attribuer une classe au reste de ma population ?

Gueguett

Nombre de messages : 7
Age : 34
Localisation : Rennes
Date d'inscription : 21/02/2012

Revenir en haut Aller en bas

classification - Comparaison de classification sous R Empty Re: Comparaison de classification sous R

Message par Yonyon Ven 20 Avr 2012 - 7:30

Bonjour!

Au final c'est simple:

Code:
dist <- as.dist(1-cor(t(table[,c(...)]))) # calcul des distances
hc <- hclust(dist,method="ward") # création de la classification (pour faire un dendogramme par la suite)
 
table_temp <- cutree(hc,k=4) # on indique le nombre de groupes que l'on veut
table$classif <- table_temp # attribution du numéro de groupe à chaque individu/ligne

Je n'utilise pas la même méthode que toi(méthode par le hclust, avec une distance de 1-corrélation), mais le principe reste le même je pense pour attribuer une classe à chaque individu)

En espérant t'avoir aidé Smile
Yonyon
Yonyon

Nombre de messages : 6
Date d'inscription : 06/04/2012

Revenir en haut Aller en bas

classification - Comparaison de classification sous R Empty Re: Comparaison de classification sous R

Message par Gueguett Ven 20 Avr 2012 - 7:59

Mon problème est que j'ai ma classfication pour mon échantillon (3000 individus), j'attribue donc une classe pour chaque individu mais j'aimerai appliquer cette classification pour ma population totale (50000 individus).


Code:
dist<-dist(res$ind$coord,method="euclidian")
hclust.ward<-hclust(dist^2,method="ward")
class.ward<-cutree(hclust.ward,k=3)

Cordialement,

Gueguett

Nombre de messages : 7
Age : 34
Localisation : Rennes
Date d'inscription : 21/02/2012

Revenir en haut Aller en bas

classification - Comparaison de classification sous R Empty Re: Comparaison de classification sous R

Message par Gueguett Mar 24 Avr 2012 - 8:56

Bonjour,

Pour ceux que ça interresse, il s'agissait bien d'un problème de consolidation et de choix de distance, il faut simplement prendre la distance au carré pour la fonction 'hclust' et désactiver la consolidation (k-means) pour la fonction 'HCPC'.

Code:
X<-res.mca$ind$coord  # on récupère les coordonnées des individus sur l'ACM
dist<-dist(X,method="euclidian")  # calcule des distances eunclidiennes
hclust<-hclust(dist^2,method="ward")  # création de la classification
clus<-cutree(hclust,k=3)    # on choisit le nombre de classes
plot.MCA(res.mca, axes=c(1, 2),col.ind=as.integer(clus),invisible=c("var"),label="")  # représentation graphique
table(clus)

Qui est équivalent à :
Code:
hcpc<-HCPC(res.mca,order=F,consol=F)
tree<-hcpc$call$t$tree   
clus2<-cutree(tree,k=3)
plot.MCA(res.mca, axes=c(1, 2),col.ind=as.integer(clus2),invisible=c("var"),label="")
table(clus2)

Et on peut également retrouver les mêmes résultats avec la fonction 'agnes' du package 'cluster' :
Code:
ag2<-agnes(X,diss=F,method="ward")
ag<-as.hclust(ag2)
clus3<-cutree(ag2,k=3)
plot.MCA(res.mca, axes=c(1, 2),col.ind=as.integer(clus3),invisible=c("var"),label="")
table(clus3)

Maintenant que j'ai retrouvé les bons résultats, je souhaiterai appliquer cette classification à l'ensemble de ma population. Je réalise alors une description de chaque classe grâce à la fonction 'catdes'. Mais comment attribuer une classe pour le reste de ma population ? (autre que mon échantillon). Il me semble qu'il y a une histoire de v-test des modalités, si quelqu'un a une idée je suis preneur !

Gaëtan,

Gueguett

Nombre de messages : 7
Age : 34
Localisation : Rennes
Date d'inscription : 21/02/2012

Revenir en haut Aller en bas

classification - Comparaison de classification sous R Empty Re: Comparaison de classification sous R

Message par Contenu sponsorisé


Contenu sponsorisé


Revenir en haut Aller en bas

Revenir en haut

- Sujets similaires

 
Permission de ce forum:
Vous ne pouvez pas répondre aux sujets dans ce forum