FactoMineR - modalités supplémentaires

220 views
Skip to first unread message

A. Tawfik

unread,
Aug 30, 2016, 5:11:51 AM8/30/16
to FactoMineR users
Bonjour,

J'utilise le package Factominer et je cherche à réaliser une ACM en mettant des modalités en éléments supplémentaires (cad à réaliser une ACM spécifique).

Dans la documentation, il est indiqué ceci:

## Specific MCA: some categories are supplementary
data (poison)
res <- MCA (poison[,3:8],excl=c(1,3))

"excl" est l'argument qui permet de spécifier les modalités des variables actives que l'on met en éléments supplémentaires. Existe-t-il commande pour savoir comment sont indexées les modalités des variables actives et ainsi les spécifier avec l'argument "excl"? Par ex., dans le package GDAtools, la fonction "getindexcat" permet d'identifier les indices des modalités à exclure.

Merci d'avance de vos réponse

A. Tawfik

François Husson

unread,
Sep 9, 2016, 6:06:13 AM9/9/16
to FactoMineR users
Bonjour,
Vouc pouvez utiliser la fonction suivante (qui fonctionnera mieux que la fonction getindexcat qui pose pb s'il y a des variables quantitatives) :

indexCat <- function(X){
  X <- X[,!(sapply(X,is.numeric))]
  variable <- rep(attributes(X)$names, lapply(X, nlevels))
  listModa <- unlist(lapply(X, levels))
  return(paste(variable,listModa, sep = "."))

A. Tawfik

unread,
Sep 13, 2016, 8:00:57 AM9/13/16
to FactoMineR users
Bonjour.

Merci beaucoup pour votre fonction. En revanche, l'indexation qu'elle propose des modalités ne correspond pas à celle produite par, par ex., "resultats$var$contrib", en particulier pour les codes manquants que j'ai préalablement défini comme des codes "valides" avec la fonction addNA. Par ex., pour ma première variable (3 modalités avec un code manquant), votre fonction place la catégorie xxx.NA en 4e position, alors que "resultats$var$contrib" la place en première position. Ainsi, si je m'appuie sur votre fonction et ajoute "excl=c(4)", c'est une autre modalité que la modalité xxx.NA qui est placée en élément supplémentaire.

Pour information, je vous décris rapidement ma manière de faire pour mettre des catégories en éléments supplémentaires: je lance une ACM en définissant les variables supplémentaires (variables 5 à 12 de mon fichier de données) de la manière suivante:

resultats <- MCA(data, ncp=4, quali.sup=c(5:12),graph=FALSE)

J'utilise ensuite la commande "print(resultats$var$contrib)" qui affiche les contributions pour toutes les modalités actives. Sur ce résultat,pour utiliser la fonction "excl", je note le positionnement des modalités que je veux mettre en élément supplémentaire. La première modalité (1ere ligne) est 1, la seconde modalité (2e ligne) est 2, etc. Si je veux par ex. exclure uniquement la première et la cinquième modalités qui apparaissent dans l'output produit par "print(resultats$var$contrib)", je relance l'analyse en spécifiant les "excl" de la manière suivante:

resultats <- MCA(data, ncp=4, quali.sup=c(5:12), excl=c(1,5),graph=FALSE)

En relançant "print(resultats$var$contrib)", je peux m'assurer que la définition des modalités supplémentaires est correcte.

La procédure est manuelle est se fait donc en 2 étapes.

Quelqu'un aurait-il une façon de faire en une seule étape? Est-il possible de définir préalablement une liste des modalités que l'on veut mettre en élément supplémentaire et de mettre cette liste dans la fonction "excl" ?

Merci d'avance pour vos réponses

A. Tawfik


Le mardi 30 août 2016 11:11:51 UTC+2, A. Tawfik a écrit :
Reply all
Reply to author
Forward
0 new messages