Colorer des individus dans une ACM

Postez ici vos questions, réponses, commentaires ou suggestions - Les sujets seront ultérieurement répartis dans les archives par les modérateurs

Modérateur : Groupe des modérateurs

Mehdi Khaneboubi
Messages : 65
Enregistré le : 23 Juin 2008, 21:13
Contact :

Colorer des individus dans une ACM

Messagepar Mehdi Khaneboubi » 25 Nov 2009, 16:29

Bonjour,

je voudrai colorer des individus (le premier, 50ème, 24ème, 18ème, 10 ème etc.) dans une ACM avec ade4. Voici mon code, où T est un dataframe de 174 individus et 4 colonnes :

dudi.acm(T)->acm
s.label(acm$li)

Si quelqu'un à une idée je suis preneur. J'ai essayé avec scatter(), j'ai essayé avec plot et FactoMineR mais sans succès.

cordialement

Matthieu Stigler
Messages : 141
Enregistré le : 07 Sep 2007, 11:30

Messagepar Matthieu Stigler » 26 Nov 2009, 08:35

Comme nindiqué auparavant, prière de joindre un exemple minimal reproductible! Reposer la question sous un autre post ne change rien!

Logez Maxime
Messages : 3138
Enregistré le : 26 Sep 2006, 11:35

Messagepar Logez Maxime » 26 Nov 2009, 09:42

Matthieu Stigler a écrit :Comme nindiqué auparavant, prière de joindre un exemple minimal reproductible! Reposer la question sous un autre post ne change rien!


Quel est l'intérêt ici de poster un exemple minimal reproductible quand tout est compris dans la question ?! Je lis les différents posts de différentes personnes et je dois dire que j'en ai mare de lire ce genre d'âneries surtout quand ce n'est pas nécessaire ! Quand il s'agit d'un modèle stat qui n'a de sens sans le jeu de données sur lequel il est calculé, la ok (et encore la question n'a rien a faire sur le forum voir Objectifs du forum) mais ici la question est relativement simple et ne nécessite en aucun cas le jeu de données initial. R est un logiciel génial pour au contraire simuler des données, alors servons-nous des capacités que nous offre ce logiciel ! Sans parler des nombreux jeu de données disponibles dans les différentes librairies.

Je me demande dans quelle proportion les gens qui répondent ce genre de choses ont un manque d'imagination flagrant ou l'incapacité de répondre à la question qui fait qu'au lieu de fournir une réponses constructive, poste un truc qui ne sert à rien.

J'ai envie de dire, si vous ne pouvez pas répondre alors abstenez-vous !

L'exemple suivant je pense permet de répondre à la question sans pour autant avoir les données initiales :

Code : Tout sélectionner

# la magie de la création de données ... et en plus le tableau a 174 lignes et 4 colonnes
# et j'ai envie de dire peu importe, pas important pour répondre à la question
tab <- data.frame(v1=sample(letters,174,rep=T),v2=sample(LETTERS[1:5],174,rep=T))

library(ade4)

acm1 <- dudi.acm(tab,scannf=F)

# colorer les individus que l'on veut mais de la même couleur
# le premier, 50ème, 24ème, 18ème, 10 ème
fcol <- rep("a",nrow(acm1$li))
fcol[c(1,50,24,18,10)] <- "col"
fcol <- factor(fcol)
s.class(acm1$li,fcol,cellipse=0,col=c("black","red"),cstar=0,clabel=0)

# ou ecore :
s.label(acm1$li,clabel=0)
points(acm1$li[c(1,50,24,18,10),1:2],col="red",pch=20)


De plus la question posée ici est totalement différente de la précédente concernant la CAH.

J'ai aussi envie de pousser un coup de gueule contre les questions qui reviennent de façon récurrente et qui ont déjà été traité mainte fois ici. Utiliser la fonction recherche !

Bon je vais peut-être arrêter définitivement le café.

Maxime

Mehdi Khaneboubi
Messages : 65
Enregistré le : 23 Juin 2008, 21:13
Contact :

Messagepar Mehdi Khaneboubi » 26 Nov 2009, 09:59

Bonjour, merci pour votre réponse cela va me convenir tout à fait.
Quant à la fonction recherche du forum je dois dire que les résultats de recherches sont souvent les même quelque soit la requête effectuée, c'est pourquoi j'ai posté ma question.

cordialement
Mehdi Khaneboubi

Tillard
Messages : 87
Enregistré le : 17 Déc 2004, 10:32

Messagepar Tillard » 27 Nov 2009, 05:36

Dans le même ordre d'idée, (en reprenant le dataset de Maxime)
on peut faire apparaitre sur chaque axe avec une couleur différente les variables à forte contribution

Code : Tout sélectionner

#appel des contributions
contrib <- inertia.dudi(acm1, col.inertia=T)$col.abs
index.mod1 <- contrib[,1] > 2 * 10000/dim(contrib)[1]
index.mod2 <- contrib[,2] > 2 * 10000/dim(contrib)[1]
index.mod12 <-ifelse(index.mod1==T & index.mod2==T,T,F)
sum(index.mod12)

#colorier des variables à forte contribution
#sur l'axe 1 (en rouge) et sur l'axe 2 (en bleu);
#en noir, les variables contribuant fortement aux 2 axes
par(mfrow=c(2,2), mar=c(0,0,0,0), pty="s")
plot(acm1$co[,1],acm1$co[,2],type="n", axes=F, xlab=" ", ylab=" ")
text(x=acm1$co[,1][index.mod1],y=acm1$co[,2][index.mod1],dimnames(acm1$co)[[1]][index.mod1],col="red", cex=0.7)
text(x=acm1$co[,1][index.mod2],y=acm1$co[,2][index.mod2],dimnames(acm1$co)[[1]][index.mod2],col="blue", cex=0.7)
text(x=acm1$co[,1][index.mod12],y=acm1$co[,2][index.mod12],dimnames(acm1$co)[[1]][index.mod12],col="black", cex=0.7)
abline(h=0,v=0)
box()
s.class(acm1$li,fcol,cellipse=0,col=c("black","red"),cstar=0,clabel=0)

Cordialement
Emmanuel Tillard
UMR ERRC (Elevage des Ruminants en Regions Chaudes)
CIRAD - St PIERRE (La Réunion)
tel: 02 62 49 92 54


Retourner vers « Questions en cours »

Qui est en ligne

Utilisateurs parcourant ce forum : Aucun utilisateur enregistré et 1 invité