Skip to content

Commit ed6c7c3

Browse files
committed
Learnrs for module 9 ready
1 parent 60f6a1d commit ed6c7c3

File tree

4 files changed

+28
-24
lines changed

4 files changed

+28
-24
lines changed

DESCRIPTION

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
Package: BioDataScience1
2-
Version: 2024.8.0
2+
Version: 2024.9.0
33
Title: A Series of Learnr Documents for Biological Data Science 1
44
Description: Interactive documents using learnr and shiny applications for studying biological data science.
55
Authors@R: c(

NEWS.md

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,7 @@
1+
# BioDataScience1 2024.9.0
2+
3+
- Learnrs **A09La_anova**, **A09Lb_kruskal** revised.
4+
15
# BioDataScience1 2024.8.0
26

37
- Learnrs **A08La_ttest**, **A08Lb_ttest_wmw** revised.

inst/tutorials/A09La_anova/A09La_anova.Rmd.inactivated renamed to inst/tutorials/A09La_anova/A09La_anova.Rmd

Lines changed: 11 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -121,15 +121,15 @@ toothgrowth %>.%
121121

122122
**Cette étape est la première à réaliser après avoir importé les données. Il faut vérifier et adapter les types et les labels des variables.** Il est particulièrement important que les variables qui définissent les sous-populations comparées soient bien encodées sous forme d'objets `factor` ou `ordered` ! Le piège lorsqu'il s'agit de valeurs numériques, comme ici, est de laisser la variable sous forme `integer` ou `numeric`, car alors, la fonction `lm()` fera une autre analyse (régression linéaire que nous verrons au cours SDD II).
123123

124-
Nous allons nous concentrer uniquement sur les individus qui ont reçu de la vitamine C. La question biologique est la suivante : **y a-t-il une différence de la longueur des odontoblastes en fonction de la ration journalière de vitamine C administrée sous forme d'acide ascorbique ?**
124+
Nous allons nous concentrer uniquement sur les individus qui ont reçu de la vitamine C. La question biologique est la suivante : **y a-t-il une différence de la longueur des odontoblastes en fonction de la ration journalière de vitamine C administrée sous forme d'acide ascorbique ?**
125125

126126
```{r, echo=TRUE}
127127
tooth_vc <- sfilter(toothgrowth, supp == "VC")
128128
```
129129

130130
### Description des données
131131

132-
Rappelez-vous que la description des données est une étape indispensable avant l'analyse (voir modules [1](https://wp.sciviews.org/sdd-umons/?iframe=wp.sciviews.org/sdd-umons-2024/visu1.html), [2](https://wp.sciviews.org/sdd-umons/?iframe=wp.sciviews.org/sdd-umons-2024/visu2.html) et [3](https://wp.sciviews.org/sdd-umons/?iframe=wp.sciviews.org/sdd-umons-2024/visu3.html) de SDD I).
132+
Rappelez-vous que la description des données est une étape indispensable avant l'analyse (voir modules [1](https://wp.sciviews.org/sdd-umons/?iframe=wp.sciviews.org/sdd-umons-2024/introvisu.html), [2](https://wp.sciviews.org/sdd-umons/?iframe=wp.sciviews.org/sdd-umons-2024/visu2.html) et [3](https://wp.sciviews.org/sdd-umons/?iframe=wp.sciviews.org/sdd-umons-2024/visu3.html) de SDD I).
133133

134134
### Description numérique
135135

@@ -195,18 +195,18 @@ grade_code("Vous obtenez le tableau adéquat en vue de réaliser ensuite une ANO
195195

196196
### Description graphique
197197

198-
Plusieurs graphiques différents permettent de visualiser correctement vos observations avant de réaliser une ANOVA. Étant donné que nous avons trois groupes avec dix individus par groupe, nous vous proposons de réaliser des boites de dispersion parallèles avec l'ajout des valeurs sous la forme de point (tout en évitant le chevauchement des observations) et des moyennes.
198+
Plusieurs graphiques différents permettent de visualiser correctement vos observations avant de réaliser une ANOVA. Étant donné que nous avons trois groupes avec dix individus par groupe, nous vous proposons de réaliser des boites à moustaches parallèles avec l'ajout des valeurs sous la forme de point (tout en évitant le chevauchement des observations) et des moyennes.
199199

200200
```{r tooth_graph_h2, exercise=TRUE, exercise.setup="tg_prepare"}
201201
chart(data = ___, ___ ~ ___) ___
202-
geom____() ___ # boites de dispersion parallèles
202+
geom____() ___ # boites à moustaches parallèles
203203
geom____(width = 0.05, alpha = 0.5) ___ # points évitant le chevauchement
204204
stat_summary(geom = "point", fun = "mean", color = "red", size = 2) # points représentant les moyennes
205205
```
206206

207207
```{r tooth_graph_h2-hint-1}
208208
chart(data = ___, ___ ~ ___) +
209-
geom_boxplot() + # boites de dispersion parallèles
209+
geom_boxplot() + # boites à moustaches parallèles
210210
geom____(width = 0.05, alpha = 0.5) + # points évitant le chevauchement
211211
stat_summary(geom = "point", fun = "mean", color = "red", size = 2) # points représentant les moyennes
212212
@@ -216,13 +216,13 @@ chart(data = ___, ___ ~ ___) +
216216
```{r tooth_graph_h2-solution}
217217
## Solution ##
218218
chart(data = tooth_vc, len ~ dose) +
219-
geom_boxplot() + # boites de dispersion parallèles
219+
geom_boxplot() + # boites à moustaches parallèles
220220
geom_jitter(width = 0.05, alpha = 0.5) + # points évitant le chevauchement
221221
stat_summary(geom = "point", fun = "mean", color = "red", size = 2) # points représentant les moyennes
222222
```
223223

224224
```{r tooth_graph_h2-check}
225-
grade_code("Ce graphique est adéquat pour visualiser les données avant une ANOVA à un facteur avec dix individus par groupe dont le but est de comparer la longueur des dents en fonction de la dose administrée. Avec un nombre plus important d'individus, vous auriez pu remplacer les boites de dispersion par par un graphique en \"violon\". Avec un nombre plus faible d'observation, l'affichage plus simple des points et de la moyenne de chaque groupe est encore le meilleur choix.")
225+
grade_code("Ce graphique est adéquat pour visualiser les données avant une ANOVA à un facteur avec dix individus par groupe dont le but est de comparer la longueur des dents en fonction de la dose administrée. Avec un nombre plus important d'individus, vous auriez pu remplacer les boites à moustaches par un graphique en \"violon\". Avec un nombre plus faible d'observation, l'affichage plus simple des points et de la moyenne de chaque groupe est encore le meilleur choix.")
226226
```
227227

228228
Maintenant que vous avez pris connaissance de vos données grâce à un tableau et un graphique, vous pouvez réaliser votre test d'hypothèse... tout en vous assurant de bien vérifier que les conditions d'application du test sont respectées.
@@ -278,15 +278,15 @@ question("Y a-t-il homoscédasticité (égalité des variances entre sous-popula
278278

279279
Dans R, nous avons plusieurs fonctions pour réaliser une ANOVA. Nous utilisons `lm()` qui demande un jeu de données et une formule. Nous lui appliquons ensuite la fonction `anova()` pour produire le tableau de l'analyse de la variance. Si le résultat doit être propre, nous pouvons ensuite utiliser `tabularise()` pour formater le tableau de l'ANOVA.
280280

281-
```{r, echo=TRUE, eval=FALSE}
281+
```{r, echo=TRUE, eval=FALSE, warning=FALSE}
282282
anova(DF_anova <- lm(data = DF, YNUM ~ XFACTOR)) |> tabularise()
283283
```
284284

285285
Vous êtes habitué à cette interface formule que vous utilisez dans la réalisation de vos graphiques ou de vos tests d'hypothèse précédents. Cette fonction calcule un objet de classe `lm` (pour "linear model", que nous aborderons plus en détails au cours SDD II) duquel la fonction `anova()` va extraire l'information qui nous intéresse pour interpréter ce test. Réalisez votre modèle ANOVA sur la longueur des odontoblastes en fonction de la dose de vitamine C administrée pour votre sous-tableau relatif aux cochons d'Inde ayant reçu de l'acide ascorbique.
286286

287287
<!-- 💬 **Ce code correspond au snippet `.hmanova1`** -->
288288

289-
```{r tooth_anova_h2, exercise = TRUE, exercise.setup = "tg_prepare"}
289+
```{r tooth_anova_h2, exercise=TRUE, exercise.setup="tg_prepare"}
290290
anova(tg_anova <- lm(data = ___, ___ ~ ___)) |> tabularise()
291291
```
292292

@@ -309,7 +309,7 @@ Vérifiez maintenant la distribution normale des résidus depuis votre objet `tg
309309

310310
<!-- 💬 **Il existe une snippet pour vous aider `.hmanovaqqplot`** -->
311311

312-
```{r tooth_qqplot_h2, exercise = TRUE, exercise.setup = "tg_prepare"}
312+
```{r tooth_qqplot_h2, exercise=TRUE, exercise.setup="tg_prepare"}
313313
chart$___(___, ___ = ___)
314314
```
315315

@@ -379,7 +379,7 @@ question("Quels sont les niveaux significativement différents au seuil alpha de
379379

380380
## Interprétation biologique
381381

382-
Notre ANOVA est terminée. En situation réelle, il nous resterait à intégrer ces résultats dans notre rapport ou notre présentation pour les communiquer au public intéressé. Rappelez-vous que la formulation est importante. Vous utiliserez une phrase du genre : "chez le cochon d'Inde, la longueur des odontoblastes s'accroît de manière significative au seuil $\alpha$ de 5% en passant de rations quotidiennes de vitamine C ration de 0.5 à 1, et à 2 mg/J (ANOVA à 2 et 27 ddl, F = 67,1, valeur P \< 3,3•10^-11^ ; voir aussi tests post-hoc de Tukey Table X et Fig. Y)". Ceci correspond à l'interprétation sur le plan statistique de vos résultats. Vous discuterez ensuite des mécanismes qui entrent possiblement en jeu ici, en réfléchissant au rôle de l'acide ascorbique dans les réactions biochimiques de formation de la dentine et de l'émail, par exemple (interprétation biologique de vos résultats).
382+
Notre ANOVA est terminée. En situation réelle, il nous resterait à intégrer ces résultats dans notre rapport ou notre présentation pour les communiquer au public intéressé. Rappelez-vous que la formulation est importante. Vous utiliserez une phrase du genre : "chez le cochon d'Inde, la longueur des odontoblastes s'accroît de manière significative au seuil $\alpha$ de 5% en passant de rations quotidiennes de vitamine C ration de 0.5 à 1, et à 2 mg/J (ANOVA à 2 et 27 ddl, F = 67,1, valeur *p* \< 3,3•10^-11^ ; voir aussi tests post-hoc de Tukey Table X et Fig. Y)". Ceci correspond à l'interprétation sur le plan statistique de vos résultats. Vous discuterez ensuite des mécanismes qui entrent possiblement en jeu ici, en réfléchissant au rôle de l'acide ascorbique dans les réactions biochimiques de formation de la dentine et de l'émail, par exemple (interprétation biologique de vos résultats).
383383

384384
Comme la formulation du test dans la parenthèse est fort longue pour l'ANOVA, on utilise souvent un renvoi vers la table de l'analyse de la variance que vous pouvez intégrer dans le document pour plus de lisibilité à la fois du texte et du résultat de l'ANOVA. Naturellement, si un test post-hoc est réalisé, il doit aussi être présenté, soit sous forme de tableau, soit sous forme de graphique, ou encore les deux si la place dans le document le permet (pour les articles scientifiques on est souvent fort limité en nombre de figures et de tables, et il faut parfois se résoudre à les placer dans les annexes ou dans le matériel complémentaire).
385385

inst/tutorials/A09Lb_kruskal/A09Lb_kruskal.Rmd.inactivated renamed to inst/tutorials/A09Lb_kruskal/A09Lb_kruskal.Rmd

Lines changed: 12 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -39,7 +39,7 @@ BioDataScience1::learnr_server(input, output, session)
3939

4040
## Objectifs
4141

42-
Tout comme le test de Wilcoxon/Mann-Whitney est l'équivalent non paramétrique du test *t* de Student, le test de Kruskal-Wallis est l'équivalent non paramétrique de l'analyse de variance à un facteur.
42+
Tout comme le test de Wilcoxon-Mann-Whitney est l'équivalent non paramétrique du test *t* de Student, le test de Kruskal-Wallis est l'équivalent non paramétrique de l'analyse de variance à un facteur.
4343

4444
Dans ce tutoriel, vous allez pouvoir auto-évaluer votre capacité à :
4545

@@ -71,7 +71,7 @@ plant <- dtx(
7171
skimr::skim(plant)
7272
```
7373

74-
Vous pouvez observer que ce tableau comprend deux variables dont une variable facteur à trois niveaux et une variable numérique. Chaque groupe est constitué de 30 réplicas. Il n'y a pas de valeurs manquantes dans ce tableaux. Votre objectif est de comparer les rendements obtenus pour les trois groupes (moyennes ou médianes).
74+
Vous pouvez observer que ce tableau comprend deux variables dont une variable facteur à trois niveaux et une variable numérique. Chaque groupe est constitué de 30 réplicats. Il n'y a pas de valeurs manquantes dans ce tableaux. Votre objectif est de comparer les rendements obtenus pour les trois groupes (moyennes ou médianes).
7575

7676
## Un peu de théorie
7777

@@ -84,33 +84,33 @@ Lorsque l'on souhaite comparer les valeurs moyennes ou médianes d'une variable
8484
- distribution normale des résidus,
8585
- homoscédasticité (même variance intragroupe).
8686

87-
Les quatre premières conditions sont similaires pour le test de Kruskal-Wallis. Les deux dernières conditions sont propres à l'ANOVA. Le raisonnement pour faire un choix entre ANOVA (test paramétrique) et Kruskal-Wallis (test non paramétrique) est le même que pour décider entre l'utilisation d'un test *t* de Student ou d'un test de Wilcoxon/Mann-Whitney. Lorsque les conditions sont remplies, l'ANOVA est un test plus puissant que le Kruskal-Wallis. Il est donc à utiliser en priorité, sauf dans les cas impossibles où aucune transformation des données ne permet d'obtenir une distribution acceptable des résidus ou l'homoscédasticité.
87+
Les quatre premières conditions sont similaires pour le test de Kruskal-Wallis. Les deux dernières conditions sont propres à l'ANOVA. Le raisonnement pour faire un choix entre ANOVA (test paramétrique) et Kruskal-Wallis (test non paramétrique) est le même que pour décider entre l'utilisation d'un test *t* de Student ou d'un test de Wilcoxon-Mann-Whitney. Lorsque les conditions sont remplies, l'ANOVA est un test plus puissant que le Kruskal-Wallis. Il est donc à utiliser en priorité, sauf dans les cas impossibles où aucune transformation des données ne permet d'obtenir une distribution acceptable des résidus ou l'homoscédasticité.
8888

8989
Concernant le test de Kruskal-Wallis, le calcul se fait dans R comme suit :
9090

9191
```{r, echo=TRUE, eval=FALSE}
9292
kruskal.test(data = DF, YNUM ~ XFACTOR)
9393
```
9494

95-
- DF : le tableau de données
96-
- YNUM : la variable quantitative
97-
- XFACTOR : la variable qualitative
95+
- DF : le tableau de données
96+
- YNUM : la variable quantitative
97+
- XFACTOR : la variable qualitative
9898

9999
À présent que vous êtes au point concernant les conditions d'application, il est temps de répondre à la question posée.
100100

101101
## Description graphique
102102

103103
Toute analyse débute par la description des données à l'aide de descripteurs numériques et de graphiques **pertinents**. Vous voulez comparer les **moyennes** de trois groupes (si ANOVA). Il semble évident de présenter graphiquement les moyennes de chaque groupe de telle façon que la comparaison visuelle sur le graphique est facile à réaliser. C'est ce que nous avons fait dans le tutoriel learnr précédent consacré à l'ANOVA.
104104

105-
Par contre, si au cours de votre analyse, vous réalisez que c'est plutôt un test de Kruskal-Wallis, alors il faudra revenir sur votre description initiale des données et vous tourner vers un graphique qui comparera plutôt les **médianes** des trois groupes. Ici, nous savons d'avance que nous réaliserons un test de Kruskal-Wallis au final. Donc, afin d'économiser notre temps, nous ferons directement un graphique en boites de dispersion parallèles. Vous annoterez le graphique avec le nombre d'observations au-dessus de chaque boite de dispersion.
105+
Par contre, si au cours de votre analyse, vous réalisez que c'est plutôt un test de Kruskal-Wallis, alors il faudra revenir sur votre description initiale des données et vous tourner vers un graphique qui comparera plutôt les **médianes** des trois groupes. Ici, nous savons d'avance que nous réaliserons un test de Kruskal-Wallis au final. Donc, afin d'économiser notre temps, nous ferons directement un graphique en boites à moustaches parallèles. Vous annoterez le graphique avec le nombre d'observations au-dessus de chaque boite à moustache.
106106

107107
```{r boxplot_h2, exercise=TRUE, exercise.lines=10}
108108
# Fonction comptant les observations
109109
give_n <- function(x)
110110
c(y = max(x) * 1.1, label = length(x))
111111
# Graphique
112112
chart(data = __, ___ ~ ___) +
113-
geom____() + # boites de dispersion parallèles
113+
geom____() + # boites à moustaches parallèles
114114
___(fun.data = give_n, geom = "text", hjust = 0.5) +
115115
xlab("Traitement") +
116116
ylab("Rendement [q/ha]")
@@ -122,7 +122,7 @@ give_n <- function(x)
122122
c(y = max(x) * 1.1, label = length(x))
123123
# Graphique
124124
chart(data = __, yield ~ group) +
125-
geom_boxplot() + # boites de dispersion parallèles
125+
geom_boxplot() + # boites à moustaches parallèles
126126
stat_summary(fun.data = give_n, geom = "text", hjust = 0.5) +
127127
xlab("Traitement") +
128128
ylab("Rendement [q/ha]")
@@ -137,14 +137,14 @@ give_n <- function(x)
137137
c(y = max(x) * 1.1, label = length(x))
138138
# Graphique
139139
chart(data = plant, yield ~ group) +
140-
geom_boxplot() + # boites de dispersion parallèles
140+
geom_boxplot() + # boites à moustaches parallèles
141141
stat_summary(fun.data = give_n, geom = "text", hjust = 0.5) +
142142
xlab("Traitement") +
143143
ylab("Rendement [q/ha]")
144144
```
145145

146146
```{r boxplot_h2-check}
147-
grade_code("Les boites de dispersion parallèles sont tout indiquées pour représenter les données avant un test de Wilcoxon/Mann-Whitney indépendant ou un test de Kruskal-Wallis.")
147+
grade_code("Les boites à moustaches parallèles sont tout indiquées pour représenter les données avant un test de Wilcoxon/Mann-Whitney indépendant ou un test de Kruskal-Wallis.")
148148
```
149149

150150
Que cela soit un tableau résumé ou un graphique, ils ne permettent pas d'affirmer ou d'infirmer qu'il y a une différence significative entre les groupes présentés. Vous devez réaliser un test d'hypothèse pour décider si les différences observées sont probablement issues de ces différences ou si elles sont plutôt imputables à la variations entre individus et aux erreurs de mesure (variations aléatoires).
@@ -213,7 +213,7 @@ question("Sélectionnez l'interprétation adaptée au test réalisé ci-dessus",
213213
answer("Au moins la moyenne d'un groupe diffère des autres significativement au seuil alpha de 5%."),
214214
answer("Les rangs moyens (médianes) ne différent pas significativement au seuil alpha de 5%"),
215215
answer("Les rangs moyens (médianes) différent significativement au seuil alpha de 5%"),
216-
answer("Au moins un rang moyen (médianes) d'un groupe diffère des autres significativement au seuil alpha de 5%.", correct = TRUE), correct = "L'interprétation complète est la suivante : Au moins un rang moyen d'un groupe diffère des autres significativement au seuil alpha de 5% (Chi^2 = 54,95, ddl = 2, valeur p = 1,17e-12).",
216+
answer("Au moins un rang moyen (médianes) d'un groupe diffère des autres significativement au seuil alpha de 5%.", correct = TRUE), correct = "L'interprétation complète est la suivante : Au moins un rang moyen d'un groupe diffère des autres significativement au seuil alpha de 5% (Chi^2 = 54,95, ddl = 2, valeur p < 1e-3).",
217217
allow_retry = TRUE,
218218
random_answer_order = TRUE)
219219
```

0 commit comments

Comments
 (0)