Introduction

La cirrhose du foie est une maladie très fréquente à travers le monde ; en France, 700 000 cas étaient répertoriés en 2012. Les principales causes connues de cette maladie sont l’obésité, les infections virales (hépatites) et l’alcool. Selon la gravité de la cirrhose, celle-ci peut conduire à un cancer, voire à un arrêt du fonctionnement du foie, ce qui nécessite une transplantation. Les signes et symptômes de la cirrhose ou de ses complications sont nombreux et variés. Nombre d’entre eux ne sont pas spécifiques et peuvent se produire en l’absence de cirrhose. Réciproquement, leur absence ne permet pas d’exclure définitivement le diagnostic. Pendant une période plus ou moins longue, dite non compliquée, seul un examen clinique ou biologique peut mettre en évidence la maladie. Aujourd’hui, le diagnostic de la maladie se fait essentiellement à l’aide d’une biopsie du foie qui représente certaines contraintes (hospitalisation, méthode invasive parfois contre-indiquée).

Une étude a été menée pour chercher à caractériser les populations bactériennes de l’intestin chez les patients ayant une cirrhose du foie (Qin et al. ”Alterations of the human gut microbiome in liver cirrhosis.” Nature, 2014). Pour cela, le microbiote (ensemble des gènes bactériens de l’intestin) de 237 individus a été analysé. La moitié (123 individus) étaient atteints d’une cirrhose du foie et l’autre (114 individus) étaient sains. La méthodologie suivie pour obtenir les données a été la suivante :

  1. Un échantillon du microbiote intestinal a été prévelé chez chaque individu.
  2. L’ADN contenu dans l’échantillon (principalement l’ADN des bactéries présentes dans cet écosystème) est extrait puis séquencé. Des milions de petites séquences (appelées lectures) sont produites par les séquenceurs à haut débit.
  3. Ces lectures sont comparées à un catalogue de référence de 5.4 millions de gènes, lui-même clusterisé en 523 espèces bactériennes.
  4. La quantité de chaque gène est dénombrée et ces comptages sont divisés par la taille des gènes.
  5. Le comptage des gènes de cette matrice d’abondance est regroupé par espèce.

Les données

La matrice d’abondance est contenue dans le fichier microbiota.abundance.log.RDS, les métadonnées associées à ce jeu de données sont dans le fichier metadata.RDS.

Le fichier microbiota.abundance.RDS contient l’abondance (transformée en log) des 523 espèces bactériennes (colonnes) pour les 237 individus (lignes).

Le fichier metadata.RDS contient les informations suivantes :

# Charger les library
library(tidyverse)
library(FactoMineR)
library(factoextra)
# Charger les jeux de données
microbiota.abundance = readRDS(file = "microbiota.abundance.log.RDS")
metadata = readRDS(file = "metadata.RDS")

Analyse en composante principale

Jeu de données metadata

  1. Réalisez une ACP sur ce jeu de données
res.pca = metadata %>% select(Age, BMI, INR:GC) %>% 
  PCA(scale.unit = TRUE, # Centrage et réduction
      graph = FALSE)

Remarque : on ne sélectionne que les variables quantitatives. On exclu également la variable Enterotype car bien que codé 1/2/3, il s’agit d’une variable qualitative indiquant l’enterotype de la personne.

  1. Quel pourcentage de la variance expliquée est représentée dans le premier plan factoriel ?
fviz_eig(res.pca, addlabels = TRUE, ylim = c(0, 50))

Le premier plan factoriel représente 52.3 % de la variance.

  1. Proposez une représentation graphique des individus avec les individus malades d’une couleur et les individus sains d’une autre.
fviz_pca_ind(res.pca, geom.ind = "point", habillage = metadata$status, addEllipses = TRUE)

On remarque que les individus sains sont regroupés entre eux, contrairement aux individus malades qui sont beaucoup plus dispersés. À noter : il y a moins de variables descriptives pour les individus sains (vu que toutes les variables propres à la caractérisation de la maladie ne sont pas mesurées chez les individus sains et sont codées NA). Les individus malades ont donc naturellement plus de variance.

  1. Pouvez-vous donner une interprétation de ce graphique ? Vous pouvez pour cela vous aider du cercle des corrélations.
fviz_pca_var(res.pca, col.var = "contrib", gradient.cols = c("#00AFBB", "#E7B800", "#FC4E07"))

Les individus sains sont surtout caractérisés par de grandes valeurs de GC (Gene Count) et Alb (taux d’albumine), et des petites valeurs de BMI (indice de masse corporelle) et d’Age. Les variables INR, PT, MELD et CTP sont très corrélées entres-elles. Elles caractérisent uniquement les malades. La variable Crea est très mal représentée par les deux premiers axes.

Jeu de données microbiota.abundance

  1. Réalisez une ACP centrée réduite sur ce jeu de données.
res.pca = PCA(microbiota.abundance, graph = FALSE)
  1. Quel pourcentage de la variance expliquée est représentée dans le premier plan factoriel ?
fviz_eig(res.pca, addlabels = TRUE, ylim = c(0, 50))

Seulement 8% de la variance est expliquée par le premier plan factoriel. Ceci s’explique par le fait que le jeu de données contient beaucoup de variables qui ne sont pas très redondantes, il est donc difficilement “résumable” avec un petit nombre de composantes principales.

  1. Proposez une représentation graphique des individus avec les individus malades d’une couleur et les individus sains d’une autre.
fviz_pca_ind(res.pca, 
             geom.ind = "point", 
             habillage = metadata$status, 
             addEllipses = TRUE)

On voit que le microbiote intestinal permet de séparer partiellement les individus sains des individus malades. Il y a tout de même un recouvrement : certains individus malades ne sont pas distinguables des individus sains sur la seule base de la structure de leur microbiote.

  1. Proposez une représentation graphique des individus avec les enterotypes de trois couleurs différentes. Que constatez-vous ?
 metadata = metadata %>% mutate(Enterotype = replace(Enterotype, is.na(Enterotype), "NA"))
 fviz_pca_ind(res.pca, geom.ind = "point", habillage = as.factor(metadata$Enterotype), addEllipses = TRUE)

Note : comme la variable Enterotype contient des NA, on peut décider de les garder dans la représentation graphique pour voir s’ils forment un groupe distinct des autres. Pour cela, il suffit de remplacer les NA par des "NA" (ou une autre chaine de caractère de votre choix). C’est possible de faire cela avec la fonction replace().

Conclusion :

  • Les individus dont l’enterotype n’avait pas été caractérisés ne forment pas un groupe distinct des autres.

  • La représentation des individus sains est principalement superposée avec la représentation de l’enterotype 2. Celle des individus malades avec l’enterotype 3.

  • L’enterotype 1 semble concerner à la fois des individus sains et des individus malades.