Science des données biologiques

Réalisé par le service d'Écologie numérique des Milieux aquatiques, Université de Mons (Belgique)

Préambule

Si vous n’avez jamais utilisé de tutoriel “learnr”, familiarisez-vous d’abord avec son interface ici.

Conformément au RGPD (Règlement Général sur la Protection des Données), nous sommes tenus de vous informer de ce que vos résultats seront collecté afin de suivre votre progression. Les données seront enregistrées au nom de l’utilisateur apparaissant en haut de cette page. Corrigez si nécessaire ! En utilisant ce tutoriel, vous marquez expressément votre accord pour que ces données puissent être collectées par vos enseignants et utilisées pour vous aider et vous évaluer. Après avoir été anonymisées, ces données pourront également servir à des études globales dans un cadre scientifique et/ou éducatif uniquement.

Objectifs

  • Savoir effectuer une analyse de variance à 2 facteurs

Croissance des dents de cochons d’Inde

Vous avez à plusieurs reprise étudié le jeu de données portant sur la croissance des dents de cochons d’Inde.

Tentez de répondre à la question suivante :

Y a t’il une différence de croissance des dents de cochons d’Inde en fonction de la supplémentation et de la dose administrée?

Reprennons la suite logique de l’analyse d’un jeu de données étape par étape.

Importation des données

L’importation des données est la première étape lors de l’analyse des données.

# Importation
tooth <- read("ToothGrowth", package = "datasets")
# Première visualisation des données
tooth

Traitement des données

Commencez par convertir votre jeu de données afin que les variables y soient encodées de manière correcte. La variable dose doit être encodé selon une variable facteur ordonnée.

Utilisez pour ce faire la fonction as.ordered() et utilisez la fonction levels pour vérifier la bonne conversion.

tooth <- read("ToothGrowth", package = "datasets")
# utilisez la fonction as.ordered
tooth$dose <- as.ordered(tooth$dose)
# utilisez la fonction levels pour visualiser votre conversion de variable
levels(tooth$dose)
#TODO

Vous devez également ajouter via la fonction labelise() les labels et unités à chacune de vos variables

Variables Labels Unités
len Longueur des dents mm
supp Supplémentation NA
dose Dose mg/J
tooth <- read("ToothGrowth", package = "datasets")
tooth$dose <- as.ordered(tooth$dose)
DF <- labelise(DF, self = FALSE, label = list(), units = list())
tooth <- labelise(tooth, self = FALSE,
  label = list(
    len = "Longueur des dents",
    supp = "Supplémentation",
    dose = "Dose"
  ),
  units = list(
    len = "mm",
    supp = NA,
    dose = "mg/J"
  )
)
#TODO

Votre jeu de données est enfin prêt à être employé.

Visualisation des données sous la forme de graphique

tooth <- read("ToothGrowth", package = "datasets")
tooth$dose <- as.ordered(tooth$dose)
tooth <- labelise(tooth, self = FALSE,
  label = list(
    len = "Longueur des dents",
    supp = "Supplémentation",
    dose = "Dose"
  ),
  units = list(
    len = "mm",
    supp = NA,
    dose = "mg/J"
  )
)

Réalisez un premier graphique de type :

  • boites de dispersion

Reproduisez le graphique suivant

Le snippet correspondant à cette instructions est .cbbox

chart(data = DF, YNUM ~ XFACTOR) +
  geom_boxplot()
chart(data = tooth, len ~ supp %fill=% dose) +
  geom_boxplot()
#TODO
  • moyenne avec l’écart-type

Repoduisez le graphique suivant

Vous avez à votre dispostion les instructions suivantes :

chart(data = DF, YNUM ~ XFACTOR %col=% XFACTOR2) +
  geom_jitter(alpha = 0.4, position = position_dodge(0.4)) +
  stat_summary(geom = "point", fun.y = "mean", position = position_dodge(0.4)) +
  stat_summary(geom = "errorbar", width = 0.1, position = position_dodge(0.4),
    fun.data = "mean_sdl", fun.args = list(mult = 1))
chart(data = tooth, len ~ supp %col=% dose) +
  geom_jitter(alpha = 0.4, position = position_dodge(0.4)) +
  stat_summary(geom = "point", fun.y = "mean", position = position_dodge(0.4)) +
  stat_summary(geom = "errorbar", width = 0.1, position = position_dodge(0.4),
    fun.data = "mean_sdl", fun.args = list(mult = 1))
#TODO
  • moyenne avec l’intervalle de confiance

Reproduisez le graphique suivant

Le snippet correspondant à cette instructions est .cberrbar2

chart(data = DF, YNUM ~ XFACTOR1 %col=% XFACTOR2) +
  geom_jitter(alpha = 0.4, position = position_dodge(0.4)) +
  stat_summary(geom = "point", fun.y = "mean", position = position_dodge(0.4)) +
  stat_summary(geom = "errorbar", width = 0.1, position = position_dodge(0.4),
    fun.data = "mean_cl_normal", fun.args = list(conf.int = 0.95))
chart(data = tooth, len ~ supp %col=% dose) +
  geom_jitter(alpha = 0.4, position = position_dodge(0.4)) +
  stat_summary(geom = "point", fun.y = "mean", position = position_dodge(0.4)) +
  stat_summary(geom = "errorbar", width = 0.1, position = position_dodge(0.4),
    fun.data = "mean_cl_normal", fun.args = list(conf.int = 0.95))
#TODO

Visualisation des données sous la forme d’un tableau

Reproduisez le tableau de données suivants :

Le snippet correspondant à cette instructions est .hmanovadesc2

DF %>.%
  group_by(., XFACTOR1, XFACTOR2) %>.%
  summarise(., mean = mean(YNUM), sd = sd(YNUM), count = sum(!is.na(YNUM)))
tooth %>.%
  group_by(., supp, dose) %>.%
  summarise(., mean = mean(len), sd = sd(len), count = sum(!is.na(len)))
#TODO

Vous avez employé différents outils afin de visualiser vos données. Vous pouvez à présent répondre à la question suivante avec un regard plus avisé :

Y a t’il une différence de croissance des dents de cochons d’Inde en fonction de la supplémentation et de la dose administrée?

Anova à 2 facteurs

Avant de pouvoir utiliser une analyse de variance à 2 faceurs, vous devez vérifier l’homoscédasticité.

Utilisez un test de bartlett avec intéraction. Le snippet correspondant à cette instructions est .hvbartlett

bartlett.test(data = DF, YNUM ~ interaction(XFACTOR1, XFACTOR2)
bartlett.test(data = tooth, len ~ interaction(supp,dose))
#TODO

Vous pouvez maintenant réaliser une analyse de variances à 2 facteurs. Le snippet correspondant à cette instructions est .hmanova2.

anova(anova. <- lm(data = DF, YNUM ~ XFACTOR1 * XFACTOR2))
anova(anova. <- lm(data = tooth, len ~ supp * dose))
#TODO
Quiz

Réalisez à présent une analyse complémentaire de l’anova. Le snippet correspondant à cette instructions est .hmanovamult.

tooth <- read("ToothGrowth", package = "datasets")
tooth$dose <- as.ordered(tooth$dose)
tooth <- labelise(tooth, self = FALSE,
  label = list(
    len = "Longueur des dents",
    supp = "Supplémentation",
    dose = "Dose"
  ),
  units = list(
    len = "mm",
    supp = NA,
    dose = "mg/J"
  )
)
anova. <- lm(data = tooth, len ~ supp * dose)
summary(anovaComp. <- confint(multcomp::glht(anova.,
  linfct = multcomp::mcp(XFACTOR = "Tukey")))) # Add a second factor if you want
.oma <- par(oma = c(0, 5.1, 0, 0)); plot(anovaComp.); par(.oma); rm(.oma)
summary(anovaComp. <- confint(multcomp::glht(anova.,
  linfct = multcomp::mcp(supp = "Tukey", dose = "Tukey")))) # Add a second factor if you want
.oma <- par(oma = c(0, 5.1, 0, 0)); plot(anovaComp.); par(.oma); rm(.oma)
#TODO

Vous venez de boucler votre analyse, sur l’analyse de la croissance des dents de cochons d’Inde.

Conclusion

Bravo! Vous venez de terminer votre séance d’exercices dans un tutoriel “learnr”.

Laissez nous vos impressions sur cet outil pédagogique ou expérimentez encore dans la zone ci-dessous. Rappelez-vous que pour placer un commentaire dans une zone de code R, vous devez utilisez un dièse (#) devant vos phrases.

# Ajout de commentaires 
# ...
# Not yet...

Traitement des données I

Guyliann Engels & Philippe Grosjean