classification et individus supplémentaires

515 views
Skip to first unread message

isabelle

unread,
May 16, 2013, 9:10:26 AM5/16/13
to factomin...@googlegroups.com
Bonjour,
 
Je dispose d'un jeu de données qui correspond à 64 vergers sur lesquels différentes variables ont été mesurées (celles-ci sont structurées en groupes et sous-groupes de variabales).
Pour construire une typologie de ces vergers, j'ai d'abord fait une analyse factorielle multiple hiérarchique (fonction HMFA), puis une classification hiérarchique sur les résultats de l'AFMH (fonction HCPC). J'ai ainsi obtenu une partition des 64 vergers en 4 classes.
Je dispose maintenant de nouveaux vergers, et j'aimerai savoir s'il est possible de d'attribuer une des 4 classes définie précédement à chacun de ces nouveaux vergers, en les les considérant comme des individus supplémentaires? Existe-t-il des fonctions, ou option dans FactoMineR qui permettent de faire cela?
Merci d'avance de votre aide.
 
Bien cordialement,
Isabelle  

François Husson

unread,
May 17, 2013, 3:38:20 AM5/17/13
to factomin...@googlegroups.com
Bonjour,

Il n'y a pas de fonction qui permettent de reclasser des individus supplémentaires de façon automatique avec FactoMineR. 
Toutefois, si vous avez fait une analyse factorielle (ACP, ACM, AFM, ...) suivie d'une classification en considérant une partie des individus, vous pouvez:
- Construire un jeu de données avec les individus utilisés pour construire la classification + les autres individus (que j'appelle individus supplémentaires) + la variable classe que vous aurez complétée avec des valeurs quelconques pour les individus supplémentaires (ces valeurs ne serviront pas, vous pouvez mettre que les individus supplémentaires sont dans la classe 1)
- Refaire la même analyse factorielle (ACP, ACM, AFM, ...) en mettant cette fois en illustratif les individus supplémentaires et comme variable supplémentaire la variable de classe;
- Récupérer les coordonnées des individus supplémentaires sur les axes factoriels et les coordonnées des modalités de la variable classe (les modalités de chaque classe) ;
- Vous pouvez ensuite calculer la distance entre un individu supplémentaire et le barycentre de chaque classe et affecter un individu à la classe la plus proche.

Dans votre cas particulier avec une AFMH, cela se complique encore un peu car il n'est pas possible d'avoir d'individus supplémentaires, ni de variables supplémentaires. Il faut donc faire des AFM sur chaque groupe de variables et ensuite faire une AFM (non normée) où chaque groupe correspond aux  dimensions des AFM séparées. J'avoue, ce n'est pas immédiat.

Bon courage,
FH

Isabelle Grechi

unread,
May 21, 2013, 11:47:55 AM5/21/13
to factomin...@googlegroups.com, François Husson
Bonjour et merci beaucoup pour les conseils.

J'ai essayé de suivre au mieux les consignes ci-dessous. Je ne pense pas avoir eu de problème pour faire l'AFMH 'manuelle' puisque qu'avec les 2 méthodes ('manuelle' avec les fonctions MFA et 'automatique' avec la fonction HMFA) je retombe bien sur les mêmes résultats, ce que j'ai vérifier graphiquement en comparant les Individual Factor Map obtenus par les 2 méthodes.
J'ai alors stocké ces résultats  dans l'objet resMFAH.

Pour la seconde partie, j'ai procédé de la sorte, en récupérant:
- les coordonnées des individus supplémentaires sur les axes factoriels : resMFAH$ind.sup$coord
- les coordonnées des modalités de la variable classe sur les axes factoriels : resMFAH$quali.var$coord
Et pour calculer la distance entre un individu supplémentaire i et le barycentre de chaque classe et affecter un individu à la classe la plus proche j'ai utilisé ce code:
    A=c(sum((resMFAH$ind.sup$coord[i, ]-resMFAH$quali.var$coord[1, ])^2),
           sum((resMFAH$ind.sup$coord[i, ]-resMFAH$quali.var$coord[2, ])^2),
           sum((resMFAH$ind.sup$coord[i, ]-resMFAH$quali.var$coord[3, ])^2),
           sum((resMFAH$ind.sup$coord[i, ]-resMFAH$quali.var$coord[4, ])^2))
    Classe[i]=as.factor(which(A==min(A)))

Les résultats me semblent assez cohérents (cf. pièce jointe: les individus supplémentaires apparaissent en avec des cercles non remplis), à quelques points près qui semblent notamment le n°64.
Pour la seconde partie, est-ce bien correct?

Merci d'avance.
Bien cordialement,
Isabelle
--
Vous recevez ce message, car vous êtes abonné au groupe Google Groupes FactoMineR users.
Pour vous désabonner de ce groupe et ne plus recevoir d'e-mails le concernant, envoyez un e-mail à l'adresse factominer-use...@googlegroups.com.
Pour plus d'options, visitez le site https://groups.google.com/groups/opt_out .
 
 

-- 

Isabelle GRECHI

CIRAD - UPR HortSys
(Fonctionnement agroécologique et performances des systèmes de culture horticoles)
CSIRO, Campus International de Baillarguet
830 Avenue du Campus Agropolis
34980 Montferrier sur Lez  - France
Tél : 33 (0)4 67 59 31 20 
Secr. : 33 (0)4 67 61 71 53 - Fax : 33 (0)4 67 61 56 88
Email : isabell...@cirad.fr 
http://www.cirad.fr/ur/hortsys
IndivFactorMap-Manuelle_ind.sup.emf

François Husson

unread,
May 21, 2013, 3:52:13 PM5/21/13
to factomin...@googlegroups.com, François Husson
Bonsoir,

Ce que vous avez fait me semble correct. La fonction dist existe et permet de calculer des distances, mais votre calcul est bon.
Pour le point 64, la classification le met dans une classe alors que sur le plan il semble assez éloigné des points de sa classe. N'oubliez pas toutefois que, pour construire les classes, le nombre de dimensions utilisée est le nombre de dimensions de l'analyse factorielle (par défaut 5 dimensions) et pas seulement les 2 premières (le point peut donc être assez éloigné sur les dimensions 3 et plus des points qui semblent proches sur les 2 premières dimensions).
L'autre possibilité est que ce point est effectivement un peu éloigné des points de sa classe. Cela peut arriver avec une classification hiérarchique, et c'est pour cette raison qu'on "consolide" parfois les classes en utilisant la méthode des K-means à l'issue d'une CAH (c'est ce qui est fait par la fonction HCPC quand consol prend une valeur supérieure à 0).

FH

Isabelle Grechi

unread,
May 23, 2013, 3:43:20 AM5/23/13
to factomin...@googlegroups.com, François Husson
Merci pour les précisions.
Reply all
Reply to author
Forward
0 new messages