Begin'R
Les statistiques avec R
Navigation
[Retour au sommaire]
# Mise en place de classification ascendante hiérarchique :Objectifs {#CAH3} * Mettre en place une classification ascendante hiérarchique (CAH) * Découper le dendrogramme * Ajouter les classes au jeu de données :Remarque : Besoin de quelques rappels pour l'importation et la préparation du jeu de données? {#rq_ACP_presentation_jeu_donnees, toggle=collapse, title-display=show} Le jeu de données utilisé dans les exemples est celui sur les données `Tomates`. Les liens ci-dessous permettent de télécharger les fichiers de données, de voir une description associée et d'obtenir les lignes de code pour importer le jeu de données sur R. | Jeu de données | Excel | CSV | Présentation | Commande R | Explication | |----------------|--------|-------------|----------------|------------|-------------| | Données Tomates | [](donnees/DonneesTomates.xlsx) | [](donnees/DonneesTomates.csv) | [Tomates](#tomatesexp) | [Importer le jeu de données](#ligne_code_importation_tomates) | [Préparation du jeu de données Tomates](#explication_preparation_importation_tomates) | :Exemple{#tomatesexp, toggle=popup, title-display=hidden} Un jeu de données considéré ici est issu d'une étude expérimentale menée sur la tomate à l'UMR 1332 Biologie du fruit et Pathologie (Centre INRA Bordeaux-Nouvelle Aquitaine). L'objectif est de repérer les facteurs qui influencent le calibre des fruits de tomate. Les données se présentent sous la forme d'un tableau Individus (en lignes) x Variables (en colonnes). Chaque individu statistique correspond à un individu-fruit dont les caractéristiques sont présentées en ligne. Les individus sont décrits par 7 variables, dont 2 qualitatives (nominales ou ordinales) et 5 quantitatives (numériques) présentées en colonnes. * La variable `Genotype` (qualitative nominale): Génotype de plante de tomate sur laquelle le fruit a été récolté. Il s'agit soit de plantes de type sauvage (C), soit de lignées transgéniques (L) ; * La variable `Stade` (qualitative ordinale): Stades de développement du fruit. Les stades 1 à 3 sont des stades de croissance (fruits verts) et les stades 4 et 5 des stades de maturité (fruits rouges); * La variable `Aire_Pericarpe` (quantitative): Aire du péricarpe, la partie charnue du fruit de tomate sans le gel (en mm²) ; * La variable `PerimetreExt_Fruit` (quantitative): Périmètre externe des fruits de tomate (en mm) ; * La variable `DiametreExt_Fruit` (quantitative): Diamètre des fruits de tomate (en mm) ; * La variable `Epaisseur_Pericarpe` (quantitative): Epaisseur du péricarpe, c'est à dire la partie charnue du fruit de tomate, sans le gel (en mm) ; * La variable `Nombre_Loge` (quantitative): Nombre de carpelles formant des loges dans le fruit de tomate, dénombrés sur une coupe transversale du fruit. :Exemple {#ligne_code_importation_vins, toggle=popup} ```r Donnees <- read.csv2("DonneesVins.csv", header = TRUE, stringsAsFactors = TRUE) X <- Donnees[, 4:11] ``` :Exemple {#ligne_code_importation_tomates, toggle=popup} ```r Donnees <- read.csv2("DonneesTomates.csv", header = TRUE, stringsAsFactors = TRUE) X <- Donnees[, 4:8] ``` :Exemple {#explication_preparation_importation_tomates, toggle=popup} Dans un premier temps, [importer le jeu de données tomates sur R Studio](caps_2_3_importation_csv.html). ```r Donnees <- read.csv2("DonneesTomates.csv", header = TRUE, stringsAsFactors = TRUE) ``` Les 6 premiers individus sont affichés ci-dessous : ``` ## Nom Genotype Stade Aire_Pericarpe PerimetreExt_Fruit DiametreExt_Fruit ## 1 C1st1_1 C1 st1 105.43 62.08 19.68 ## 2 C1st1_2 C1 st1 38.60 41.31 13.11 ## 3 C1st1_3 C1 st1 34.47 41.01 13.00 ## 4 C1st2_1 C1 st2 578.09 134.43 42.66 ## 5 C1st2_2 C1 st2 509.71 126.82 40.11 ## 6 C1st2_3 C1 st2 622.92 137.36 43.41 ## Epaisseur_Pericarpe Nombre_Loge ## 1 1.74 2 ## 2 1.00 2 ## 3 0.82 3 ## 4 4.55 3 ## 5 4.33 2 ## 6 4.95 2 ``` Pour appliquer une méthode d'analyse de données multivariées (analyse en composantes principales, classification ascendante hiérarchique, classification par la méthode des centres mobiles), il faut extraire du jeu de données uniquement les variables quantitatives. Pour ce jeu de données, comme elles se trouvent sur les colonnes 4 à 8, il faut utiliser l'instruction suivante pour [extraire les colonnes du jeu de données](caps_2_9_extraire_sous_ensemble.html): ```r X <- Donnees[, 4:8] ``` La variable `X` contient ainsi uniquement les variables quantitatives. Les 6 premiers individus sont affichés ci-dessous ``` ## Aire_Pericarpe PerimetreExt_Fruit DiametreExt_Fruit Epaisseur_Pericarpe ## 1 105.43 62.08 19.68 1.74 ## 2 38.60 41.31 13.11 1.00 ## 3 34.47 41.01 13.00 0.82 ## 4 578.09 134.43 42.66 4.55 ## 5 509.71 126.82 40.11 4.33 ## 6 622.92 137.36 43.41 4.95 ## Nombre_Loge ## 1 2 ## 2 2 ## 3 3 ## 4 3 ## 5 2 ## 6 2 ``` Le tableau ci-dessous présente les fonctions R pour mettre en place une classification ascendante hiérarchique. | Rôle | Commande R | Arguments | Exemple | |-------------------------------------------------------|--------------------|-------------------------|------------------------| | Calculer la matrice de distances entre les individus | `dist()` | | [ici](#exemple_matrice_distance) | | Mettre en place une classification ascendante hiérarchique | `hclust()` | `method` | [ici](#exemple_mise_en_place_CAH) | | Afficher le dendrogramme | `fviz_dend()` | | [ici](#exemple_dendrogramme) | | Afficher le dendrogramme avec les groupes créés | `fviz_dend()` | `k`, `color_labels_by_k`, `rect` | [ici](#exemple_dendrogramme_groupes) | | Couper le dendrogramme et ajouter les classes au jeu de données pour faire une ACP | `cutree()` | `k` | [ici](#exemple_couper_dendrogramme) | :Exemple {#exemple_matrice_distance, toggle=popup} La fonction `dist()` permet de calculer la matrice de distances entre les individus. Par défaut, la distance euclidienne est utilisée. Pour utiliser la [métrique des inverses des variances](caps_13_2_acp_metrique.html), il faut au préalable centrer et réduire le jeu de données en utilisant la fonction `scale()`. ```r Z <- scale(X) distance <- dist(Z) ``` :Exemple {#exemple_mise_en_place_CAH, toggle=popup} La fonction `hclust()` permet de mettre en place la classification ascendante hiérarchique. Le premier argument correspond à la matrice de distances obtenue avec la fonction `dist()`. Tandis que l'argument `method` défini la stratégie d'agrégation. Il peut être égal à : * `"ward.D2"` pour la méthode de Ward, * `"single"` pour la méthode des liens simples, * `"average"` pour la méthode des liens moyens, * `"complete"` pour la méthode des liens complets. ```r model <- hclust(distance, method = "ward.D2") ``` :Exemple {#exemple_dendrogramme, toggle=popup} La fonction `fviz_dend()` permet de visualiser le dendrogramme. Comme cette fonction fait partie du package `factoextra`, il faut au préalable [installer et charger ce package](caps_1_6_packages.html). Dans la fonction `fviz_dend()`, le premier argument correspond au résultat de la classification ascendante hiérarchique obtenu avec la fonction `hclust()`. ```r library("factoextra") fviz_dend(model) ```  Les individus sont représentés sur l'axe des abscisses, tandis que l'axe des ordonnées représente la mesure de similarité pour fusionner deux groupes ensembles. :Exemple {#exemple_dendrogramme_groupes, toggle=popup} La fonction `fviz_dend()` permet de visualiser le dendrogramme. Comme cette fonction fait partie du package `factoextra`, il faut au préalable [installer et charger ce package](caps_1_packages.html). Dans la fonction `fviz_dend()`, le premier argument correspond au résultat de la classification ascendante hiérarchique obtenu avec la fonction `hclust()`. Le paramètre `k` correspond au nombre de groupes. L'argument `color_labels_by_k = TRUE` permet de mettre en couleur le dendrogramme (avec une couleur différente par groupe formé). L'argument `rect = TRUE` permet d'ajouter les rectangles gris entourant les groupes formés. ```r library("factoextra") fviz_dend(model, k = 4, color_labels_by_k = TRUE, rect = TRUE ) ```  :Remarque pour afficher le nom des modalités d'une variable qualitative sur le dendrogramme {#rq_dendrogramme_modalite, toggle=collapse} Afin de savoir où couper le dendrogramme, il peut être utile d'afficher le nom des modalités d'une variable qualitative sur le dendrogramme. Par défaut, R affiche le nom des individus dans le dendrogramme. Pour afficher une autre information, il faut [modifier le nom des lignes du dataframe étudié](caps_2_13_dataframe.html). Cela se fait en utilisant la fonction `rownames()`. ```r rownames(Z) <- Donnees$Stade distance <- dist(Z) model <- hclust(distance, method = "ward.D2") fviz_dend(model, k = 4, color_labels_by_k = TRUE, rect = TRUE) ```  Le groupe représenté en bleu (respectivement en violet) contient uniquement des individus au stade de croissance `st1` (respectivement `st2`). Les groupes rouge et vert ont quant à eux des individus à un stade de croissance plus avancé (`st3` à `st5`). Un découpage du dendrogramme en 4 groupes est donc approprié pour ce jeu de données. :Exemple {#exemple_couper_dendrogramme, toggle=popup} La fonction `cutree()` permet de découper le dendrogramme et ainsi obtenir la partition du jeu de données en `k` classes (groupes). Le nombre de classes est fixé à l'aide de l'argument `k`. La variable `classe` prend des valeurs entre `1` et `k`. Elle indique à quelle classe est affectée chacun des individus. Ces valeurs `1`, `2`, ... sont bien les modalités `classe n°1`, `classe n°2`, ... Par la suite, pour utiliser la variable `classe`, il faut la [convertir en variable qualitative nominale](caps_2_7_corriger_type_variables.html) en utilisant la fonction `as.factor()`. ```r classe <- cutree(model, k = 4) Donnees$classe <- as.factor(classe) ``` Une analyse en composantes principales (ACP) peut ensuite être mise en place afin de [visualiser les classes sur le graphique des individus](caps_13_6_acp_graphique_individus.html). Pour cela, on peut colorer les individus selon les modalités de la variable qualitative `classe`. :Suite Classification non supervisée :{#classif, toggle=collapse} Classification ascendante hiérarchique : [Choix de la métrique](caps_13_2_acp_metrique.html) [Mise en place de la CAH](caps_14_3_cah_dendrogramme.html) [Visualisation des classes sur le graphique des individus de l'ACP](caps_13_6_acp_graphique_individus.html) [Exercice bilan](caps_14_4_cah_exercice_bilan.html) Méthode K-means [Choix de la métrique](caps_13_2_acp_metrique.html) [Mise en place de la méthode des K-means](caps_14_6_kmeans_mise_en_oeuvre.html) [Visualisation des classes sur le graphique des individus de l'ACP](caps_13_6_acp_graphique_individus.html) [Exercice bilan](caps_14_7_kmeans_exercice_bilan.html)