Site icon Michaël Val, Ostéopathe D.O. à Brunoy

Faire des statistiques de regroupement (clustering) avec R

Cluster

J’avais dû trouver l’année dernière pour une étudiante, un moyen d’interpréter son jeu de donnée. Plus de 30 variables, plus de 1000 sujets, j’avais besoin de plus que la sacro-sainte ANOVA pour m’en sortir dans un premier temps. J’ai donc relu mon livre de biostatistique et mon Mooc de statistique du Pr Falissard, pour me lancer dans du partitionnement de données ou data clustering. Souvent assimilée au Data mining et au Big data ce n’est en fait qu’une des méthodes parmi d’autres.

Comme on m’a redemandé plusieurs fois d’en faire depuis, je vais fixer ici mes notes sur le sujet, en espérant que cela puisse servir à quelqu’un. Le but n’est pas de se lancer dans l’interprétation des résultats, vous trouverez bien mieux que moi sur le reste du web, mais d’avoir des commandes rapides à mettre en place pour visualiser ses données. Ces statiques restent exploratoires, vous ne pourrez pas autant affirmer les choses que sur un test d’hypothèse, mais une fois vos variables explicatives identifiées, vous pourrez vous lancer dans une régression linéaire ou logistique par exemple et en fonction faire des tests post-hoc, pourquoi pas avec Rcommander ou JASP. Pour utiliser le code que je vous partage, il vous faudra un PC Linux, macOS ou Windows, à minima R et votre jeu de donnée au format csv. Comme le tuto était initialement destiné à mes étudiants, j’installe également RStudio pour préserver leur santé mentale, mais si vous êtes à l’aise avec la ligne de commande R c’est optionnel. Vous pouvez retrouver les commandes et les figures dans ce PDF.

Installation

Installation de R et RStudio

Lien pour installer R-base

Lien pour installer RStudio

Installation des paquets supplémentaires

install.packages("psy", repos = "https://cloud.r-project.org/")
install.packages("corrplot", repos = "https://cloud.r-project.org/")

Chargement des données

Fixer son environnement de travail

setwd("~/votredossier")

~ indique le répertoire courant, donc /home/votrenom sur Linux /Users/votrenom sur Mac et /c:/Users/votrenom/Documents sur Windows.

Importer des données

mesDonnees <- read.csv2("data.csv")

Matrice de corrélations

tab <- c("var1","var3","var4","var5","var6","var7","var8","var9")
round(cor(mesDonnees[,tab],use="complete.obs"),digits=3)
# use="pairwise.complete.obs" si pas besoin d'éliminer les données manquantes.
library(corrplot)
corrplot(cor(mesDonnees[,tab],use="complete.obs"),method="circle")

Analyse en Composante Principale

tab2 <- c("var1","var3","var4","var5","var6","var7","var8","var9")
library(psy)
mdspca(mesDonnees[,tab])
sphpca(mesDonnees[,tab],v=55)
# Ou si une variable à expliquer par rapport à des variables explicatives
expliquer <- "var5"
explicatives <- c("var1","var3","var4", "var6","var7","var8","var9")
fpca(data=mesDonnees,y=expliquer,x=explicatives,partial="No")

Classification ascendante hiérarchique

tab <- c("var1","var3","var4","var5","var6","var7","var8","var9")
cah <- hclust(dist(t(scale(mesDonnees[,tab]))),method="ward.D")
plot(cah,xlab="",ylab="",main="Classification hiérarchique")
obj <- cor(mesDonnees[,tab], use="pairwise.complete.obs")
heatmap(obj, col=gray(seq(1,0,length=16)))

Ce(tte) œuvre est mise à disposition selon les termes de la Licence Creative Commons Attribution – Pas d’Utilisation Commerciale – Partage dans les Mêmes Conditions 4.0 International.
Quitter la version mobile