Skip to content

Instantly share code, notes, and snippets.

@juba
Created June 18, 2015 14:00
Show Gist options
  • Save juba/029aef50bd143a44bb6e to your computer and use it in GitHub Desktop.
Save juba/029aef50bd143a44bb6e to your computer and use it in GitHub Desktop.
Récupérer les points les plus extrêmes des groupes issus d'une classification
library(questionr)
library(FactoMineR)
library(dplyr)
library(imva)
library(ggplot2)
## Jeu de données d'exemple
data(hdv2003)
d <- hdv2003 %>% select(sexe, qualif, cuisine, sport, bricol, freres.soeurs, relig)
## ACM
acm <- MCA(d, ncp = 3)
## CAH
classif <- HCPC(acm, nb.clust = 5)
## On rapatrie les groupes dans les données
d$groupes <- classif$data.clust$clust
## Nombre de dimensions pour le calcul des extrêmes : a priori
## le même que le nombre d'axes utilisés pour la classification
nb.dim <- 3
## Nombre d'individus extrêmes retenus pour chaque groupe
nb.ind <- 1
tmp <- acm$ind$coord[,1:nb.dim]
d$dist <- sqrt(apply(tmp^2, 1, sum))
dd <- d %>% bind_cols(data.frame(tmp))
sel <- dd %>% group_by(groupes) %>% arrange(desc(dist)) %>% slice(1:nb.ind)
## Le tableau sel contient la liste des individus les plus extrêmes pour chaque groupe
## Pour représenter les individus retenus sur les deux premiers axes de l'ACM
## (pour vérification visuelle que c'est pas tout à fait n'importe quoi)
ggind(acm, 1, 2, d$groupes) +
geom_point(data=sel, aes(x=Dim.1, y=Dim.2), col="red", size=5)
ggind(acm, 1, 3, d$groupes) +
geom_point(data=sel, aes(x=Dim.1, y=Dim.2), col="red", size=5)
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment