Skip to content

Commit c4561fd

Browse files
committed
Learnrs for module 10 ready
1 parent a21585b commit c4561fd

File tree

4 files changed

+42
-41
lines changed

4 files changed

+42
-41
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: 2023.9.0
2+
Version: 2023.10.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 2023.10.0
2+
3+
- Learnrs **A10La_anova** et **A10Lb_kruskal** ready.
4+
15
# BioDataScience1 2023.9.0
26

37
- Learnrs **A09La_ttest** and **A09Lb_ttest_wmw** ready.

inst/tutorials/A10La_anova/A10La_anova.Rmd.inactive renamed to inst/tutorials/A10La_anova/A10La_anova.Rmd

Lines changed: 19 additions & 22 deletions
Original file line numberDiff line numberDiff line change
@@ -15,7 +15,6 @@ runtime: shiny_prerendered
1515
```{r setup, include=FALSE}
1616
BioDataScience1::learnr_setup()
1717
SciViews::R("infer", "model", lang = "fr")
18-
library(BioDataScience1)
1918
```
2019

2120
```{r, echo=FALSE}
@@ -32,7 +31,7 @@ BioDataScience1::learnr_server(input, output, session)
3231

3332
Vous avez découvert il y a peu la moyenne et plusieurs tests d'hypothèses associés (différentes variantes du test *t* de Student). Le test *t* de Student indépendant vous permet de comparer les moyennes de deux populations.
3433

35-
Le [module 10](https://wp.sciviews.org/sdd-umons/?iframe=wp.sciviews.org/sdd-umons-2022/variance.html) du cours vous explique pourquoi c'est une mauvaise idée de l'appliquer pour comparer plus de deux moyennes simultanément via des comparaisons deux à deux multiples sans précautions particulières.
34+
Le [module 10](https://wp.sciviews.org/sdd-umons/?iframe=wp.sciviews.org/sdd-umons-2023/variance.html) du cours vous explique pourquoi c'est une mauvaise idée de l'appliquer pour comparer plus de deux moyennes simultanément via des comparaisons deux à deux multiples sans précautions particulières.
3635

3736
![](images/red-traffic-lights.png){width="10%"}
3837

@@ -116,7 +115,7 @@ toothgrowth %>.%
116115
supp = NA,
117116
dose = "mg/J"
118117
)
119-
) %->%
118+
) ->
120119
toothgrowth
121120
```
122121

@@ -130,7 +129,7 @@ tooth_vc <- sfilter(toothgrowth, supp == "VC")
130129

131130
### Description des données
132131

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

135134
### Description numérique
136135

@@ -165,7 +164,7 @@ ___ %>.%
165164
___(., ___) %>.%
166165
ssummarise(.,
167166
moyenne = ___(___), `écart type` = ___(___),
168-
n = fn(len))) %>.%
167+
n = fnobs(len))) %>.%
169168
___(.)
170169
```
171170

@@ -174,7 +173,7 @@ tooth_vc %>.%
174173
sgroup_by(., ___) %>.%
175174
ssummarise(.,
176175
moyenne = fmean(___), `écart type` = fsd(___),
177-
n = fn(len)) %>.%
176+
n = fnobs(len)) %>.%
178177
collect_dtx(.)
179178
180179
#### ATTENTION: Hint suivant = solution !####
@@ -186,12 +185,12 @@ tooth_vc %>.%
186185
sgroup_by(., dose) %>.%
187186
ssummarise(.,
188187
moyenne = fmean(len), `écart type` = fsd(len),
189-
n = fn(len)) %>.%
188+
n = fnobs(len)) %>.%
190189
collect_dtx(.)
191190
```
192191

193192
```{r tooth_tab_h2-check}
194-
grade_code("Vous obtenez le tableau adéquat en vue de réaliser ensuite une ANOVA : les moyennes correspondent à ce que nous comparons, les écart-types indiquent la dispersion des données dans chaque sous-population (nous aurions aussi pu représenter les variances qui sont le carré des écarts types) et le nombre d'observations permet de cerner la quantité d'information disponible.")
193+
grade_code("Vous obtenez le tableau adéquat en vue de réaliser ensuite une ANOVA : les moyennes correspondent à ce que nous comparons, les écart-types indiquent la dispersion des données dans chaque sous-population (nous aurions aussi pu représenter les variances qui sont le carré des écarts types) et le nombre d'observations permet de cerner la quantité d'information disponible (hors vlaeurs manquantes éventuelles).")
195194
```
196195

197196
### Description graphique
@@ -236,16 +235,16 @@ Pour réaliser une ANOVA, il faut respecter les conditions d'application suivant
236235
- observations indépendantes,
237236
- variable dite réponse quantitative,
238237
- une variable dite explicative qualitative à trois niveaux ou plus,
239-
- distribution Normale des résidus,
238+
- distribution normale des résidus,
240239
- homoscédasticité (même variance intragroupe).
241240

242241
Pour les deux premières conditions, vous lisez attentivement le protocole expérimental pour déterminer si l'échantillonnage est représentatif et les observations sont indépendantes les unes des autres. Il faut un processus aléatoire qui intervienne dans la sélection des individus dans l'expérience et pour leur attribution à un des niveaux (ration de vitamine C quotidienne). Chaque individu doit avoir une chance égale d'être tiré au sort si l'échantillonnage aléatoire est utilisé. Il ne doit pas y avoir de dépendance (par exemple, utiliser une portée de cobayes au sein d'une même sous-population est une mauvaise idée car la ressemblance génétique entre frères et sœurs rend les observations partiellement dépendantes entre elles).
243242

244243
Les contraintes relatives au type de variables en jeu se vérifient facilement. Nous insistons encore une fois sur la nécessité de s'assurer que la variable explicative (celle qui sépare l'échantillon en sous-populations) soit bien qualitative, donc sous la forme d'un objet `factor` ou `ordered` dans R.
245244

246-
Les deux dernières conditions **doivent être vérifiées sur les données de l'échantillon**. Si les données sont en nombre suffisant, soit au moins une petite dizaine par sous-population, nous pourrons appliquer un test d'homogénéité de variance et comparer la distribution des résidus du modèle à une distribution Normale. Nous sommes dans cette situation. Si le nombre d'observations est trop faible, il faut le tester ou l'avoir testé précédemment sur un plus gros échantillon similaire, ou se rabattre sur un test non paramétrique (Kruskal-Wallis) en cas de doute. **Rappelons aussi qu'il est possible de tester des transformations des données, si l'une ou les deux conditions ne sont pas rencontrées.**
245+
Les deux dernières conditions **doivent être vérifiées sur les données de l'échantillon**. Si les données sont en nombre suffisant, soit au moins une petite dizaine par sous-population, nous pourrons appliquer un test d'homogénéité de variance et comparer la distribution des résidus du modèle à une distribution normale. Nous sommes dans cette situation. Si le nombre d'observations est trop faible, il faut le tester ou l'avoir testé précédemment sur un plus gros échantillon similaire, ou se rabattre sur un test non paramétrique (Kruskal-Wallis) en cas de doute. **Rappelons aussi qu'il est possible de tester des transformations des données, si l'une ou les deux conditions ne sont pas rencontrées.**
247246

248-
En pratique, on commence par vérifier l'homoscédasticité, puis on réalise notre ANOVA et ensuite on vérifie la distribution Normale des résidus. La raison qui nous pousse à postposer la vérification de la Normalité des résidus sera expliquée plus loin dans ce tutoriel.
247+
En pratique, on commence par vérifier l'homoscédasticité, puis on réalise notre ANOVA et ensuite on vérifie la distribution normale des résidus. La raison qui nous pousse à postposer la vérification de la normalité des résidus sera expliquée plus loin dans ce tutoriel.
249248

250249
### Test de Bartlett
251250

@@ -277,41 +276,39 @@ question("Y a-t-il homoscédasticité (égalité des variances entre sous-popula
277276

278277
## ANOVA
279278

280-
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.
279+
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.
281280

282281
```{r, echo=TRUE, eval=FALSE}
283-
anova(DF_anova <- lm(data = DF, YNUM ~ XFACTOR))
282+
anova(DF_anova <- lm(data = DF, YNUM ~ XFACTOR)) |> tabularise()
284283
```
285284

286285
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.
287286

288287
<!-- 💬 **Ce code correspond au snippet `.hmanova1`** -->
289288

290289
```{r tooth_anova_h2, exercise = TRUE, exercise.setup = "tg_prepare"}
291-
anova(tg_anova <- lm(data = ___, ___ ~ ___))
290+
anova(tg_anova <- lm(data = ___, ___ ~ ___)) |> tabularise()
292291
```
293292

294293
```{r tooth_anova_h2-hint-1}
295-
anova(tg_anova <- lm(data = tooth_vc, ___ ~ ___))
294+
anova(tg_anova <- lm(data = tooth_vc, ___ ~ ___)) |> tabularise()
296295
297296
#### ATTENTION: Hint suivant = solution !####
298297
```
299298

300299
```{r tooth_anova_h2-solution}
301300
## Solution ##
302-
anova(tg_anova <- lm(data = tooth_vc, len ~ dose))
301+
anova(tg_anova <- lm(data = tooth_vc, len ~ dose)) |> tabularise()
303302
```
304303

305304
```{r tooth_anova_h2-check}
306-
grade_code("Vous avez compris le principe. Mais attention : n'allez pas plus loin dans l'interprétation des résultats sans avoir vérifié la Normalité des résidus.")
305+
grade_code("Vous avez compris le principe. Mais attention : n'allez pas plus loin dans l'interprétation des résultats sans avoir vérifié la normalité des résidus.")
307306
```
308307

309-
Vérifiez maintenant la distribution Normale des résidus depuis votre objet `tg_anova`.
308+
Vérifiez maintenant la distribution normale des résidus depuis votre objet `tg_anova`.
310309

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

313-
<!-- Proposition : Remplacer par chart$qqresid(anova.)-->
314-
315312
```{r tooth_qqplot_h2, exercise = TRUE, exercise.setup = "tg_prepare"}
316313
chart$___(___, ___ = ___)
317314
```
@@ -328,7 +325,7 @@ chart$qqplot(tg_anova, lang = "fr")
328325
```
329326

330327
```{r tooth_qqplot_h2-check}
331-
grade_code("Tous les points de ce graphique quantile-quantile s'alignent assez bien le long de la droite. Les résidus de votre ANOVA ne montrent donc pas de dérive importante par rapport à une distribution Normale et nous avons réuni toutes les conditions d'application de ce test. Vous pouvez maintenant l'interpréter via le tableau d'analyse de la variance que vous avez réalisé dans l'exercice précédent.")
328+
grade_code("Tous les points de ce graphique quantile-quantile s'alignent assez bien le long de la droite. Les résidus de votre ANOVA ne montrent donc pas de dérive importante par rapport à une distribution normale et nous avons réuni toutes les conditions d'application de ce test. Vous pouvez maintenant l'interpréter via le tableau d'analyse de la variance que vous avez réalisé dans l'exercice précédent.")
332329
```
333330

334331
```{r anova_quiz}
@@ -386,7 +383,7 @@ Notre ANOVA est terminée. En situation réelle, il nous resterait à intégrer
386383

387384
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).
388385

389-
Dans la section "matériel et méthodes", vous devez expliquer que vous réaliser une ANOVA après avoir vérifié les conditions d'application (homoscédasticité attestée à l'aide d'un test de Bartlett au seuil $\alpha$ de 5% et Normalité des résidus vérifiée sur un graphique quantile-quantile). Vous devez aussi indiquer la version R (et éventuellement la version des packages additionnels R utilisés). Pensez à la fonction `sessionInfo()` pour obtenir la version de R et des packages R. Il n'est pas nécessaire de préciser la version de RStudio qui est ici essentiellement l'interface vous permettant d'écrire et lancer le code R de votre analyse. Par contre, si vous utilisez un environnement logiciel reproductible comme la SciViews Box, vous pouvez le préciser et en indiquer la version.
386+
Dans la section "matériel et méthodes", vous devez expliquer que vous réaliser une ANOVA après avoir vérifié les conditions d'application (homoscédasticité attestée à l'aide d'un test de Bartlett au seuil $\alpha$ de 5% et normalité des résidus vérifiée sur un graphique quantile-quantile). Vous devez aussi indiquer la version R (et éventuellement la version des packages additionnels R utilisés). Pensez aux fonctions `sessionInfo()` et `packageVersion()` pour obtenir la version de R et des packages R. Il n'est pas nécessaire de préciser la version de RStudio qui est ici essentiellement l'interface vous permettant d'écrire et lancer le code R de votre analyse. Par contre, si vous utilisez un environnement logiciel reproductible comme la SciViews Box, vous pouvez le préciser et en indiquer la version.
390387

391388
## Conclusion
392389

0 commit comments

Comments
 (0)