La stabilité des classes
Vous êtes sociologue et vous avez décidé, parce que vous avez un beau jeu de données, de réaliser une analyse des correspondances multiples suivie d’une classification ascendante hiérarchique (ACM puis CAH). Mais deux choses vous gênent : vous savez que certains petits effectifs (ceux des modalités de certaines variables) vont se retrouver aux extrémités des axes, et vous doutez de la stabilité des classifications produites. Or les diagnostics habituels de l’ACM ne proposent aucun « intervalle de confiance ».
J’essaye ici de proposer une méthode, très empirique, pour se faire une idée de la stabilité des classes. Le code est sur github et doit permettre très simplement la réplication sur d’autres données.
Commençons par un petit graphique. J’y représente les résultats d’une ACM, axes 1 et 2, où les points sont coloriés en fonction d’un des trois clusters déterminés par une CAH.
Que se serait-il passé si, au lieu des 400 individus du jeu de données utilisé ici, il n’y avait eu que 320 individus… est-ce que des individus auraient changé de cluster ?
Pour le savoir, je sélectionne au hasard 320 individus parmi les 400 de l’échantillon de départ, je fais une ACM suivie d’une CAH et je regarde le résultat. Je fais ça à 1000 reprises, en sélectionnant à chaque fois 320 individus au hasard, et je calcule la fréquence à laquelle ces individus changent de cluster.
Voici ce que ça donne. Les gros points sont les individus qui changent de cluster relativement souvent.
72 individus changent de clusters dans plus de 5% des simulations. Ils se répartissent sur tout le deuxième axe, et à proximité de “x = 0” sur le premier axe.
Techniquement, repérer « quels sont les individus de la simulation qui ont changé de cluster par rapport à la situation de départ » a posé un petit problème. Je pensais utiliser les numéros de cluster (1, 2 ou 3) et repérer les individus qui sont passés de « cluster 1 » à « cluster 2 ». Mais ces numéros ne sont pas stables. Je suis donc passé par une comparaison des « voisins ». Etre dans un cluster, c’est avoir les individus du cluster comme voisins. Si les voisins changent entre la situation de départ et la simulation, alors ça signifie un changement de cluster… mais pas pour tout le monde, uniquement pour la/les personne/s qui n’a/ont plus, dans la simulation, les voisins qu’elle/s avait/avaient au départ.
Vous verrez dans le script R sur github, si vous allez jusque là, comment j’ai fait.
Enfin se pose un autre problème : 72 individus qui changent de cluster, est-ce que c’est un indicateur de stabilité ou d’instabilité ? Quel seuil prendre ? À quoi comparer ce chiffre ?