Skip to content

Commit 7e4154b

Browse files
committed
Partial revision B00 and B01
1 parent eba5647 commit 7e4154b

File tree

6 files changed

+1140
-78
lines changed

6 files changed

+1140
-78
lines changed

DESCRIPTION

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
Package: BioDataScience2
2-
Version: 2023.0.0
2+
Version: 2023.1.0
33
Title: A Series of Learnr Documents for Biological Data Science 2
44
Description: Interactive documents using learnr for studying biological data science (second course).
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+
# BioDataScience2 2023.1.0
2+
3+
-
4+
15
# BioDataScience2 2023.0.0
26

37
- New version for the academic year 2023-2024.

inst/tutorials/B00La_refresh/B00La_refresh.Rmd

Lines changed: 58 additions & 38 deletions
Large diffs are not rendered by default.

inst/tutorials/B01La_reg_lin/B01La_reg_lin.Rmd

Lines changed: 22 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@ author: "Guyliann Engels & Philippe Grosjean"
44
description: "**SDD II Module 1** Réaliser une régression linéaire simple dans R."
55
tutorial:
66
id: "B01La_reg_lin"
7-
version: 2.3.0/8
7+
version: 2.4.0/8
88
output:
99
learnr::tutorial:
1010
progressive: true
@@ -45,19 +45,19 @@ BioDataScience2::learnr_server(input, output, session)
4545

4646
## Objectifs
4747

48-
Ce tutoriel sur la régression linéaire débute par un rappel sur la corrélation et les corrélogrammes. Cette matière est détaillée dans le [module 12 de science des données I](https://wp.sciviews.org/sdd-umons/?iframe=wp.sciviews.org/sdd-umons-2022/correlation.html). Les objectifs de ce tutoriel sont :
48+
Ce tutoriel sur la régression linéaire débute par un rappel sur la corrélation et les corrélogrammes. Cette matière est détaillée dans le [module 12 de science des données I](https://wp.sciviews.org/sdd-umons/?iframe=wp.sciviews.org/sdd-umons-2023/correlation.html). Les objectifs de ce tutoriel sont :
4949

5050
- Revoir la corrélation et les indices de Pearson et Spearman
5151

52-
- Maîtriser la régression linéaire dans R, en particulier la fonction `lm()`.
52+
- Découvrir la régression linéaire dans R, en particulier la fonction `lm()`.
5353

5454
<!-- TODO: paramétriser un modèle, c'est super-important! -->
5555

5656
## Biométrie des crabes
5757

5858
Cinq mesures morphologiques ont été étudiées sur 200 crabes. On retrouve quatre groupes composés de 50 individus, soit des crabes bleu mâles et femelles et des crabes orange mâles et femelles.
5959

60-
```{r, echo = TRUE}
60+
```{r, echo=TRUE}
6161
crabs <- read("crabs", package = "MASS")
6262
skimr::skim(crabs)
6363
```
@@ -94,7 +94,7 @@ plot(crabs_corr, type = "upper")
9494
```
9595

9696
```{r corr1_h3-check}
97-
grade_code("Vous avez compris comment réaliser une matrice de corrélation et un corrélogramme. Présenter une matrice de corrélation sous la forme d'un graphique, c'est quand même plus convivial.")
97+
grade_code("Vous vous rappelez comment réaliser une matrice de corrélation et un corrélogramme. Présenter une matrice de corrélation sous la forme d'un graphique, c'est quand même plus convivial.")
9898
```
9999

100100
Répondez à la question ci-dessous.
@@ -112,13 +112,17 @@ question("Quelles sont les combinaisons de variables les plus corrélées ? (sé
112112
try_again_button = "Resoumettre une réponse")
113113
```
114114

115+
*L'analyse de la corrélation est utile comme première approche afin de déterminer si une régression linéaire est intéressantes av ec nos données.*
116+
117+
<!-- PhG: je ne comprend pas du tout pourquoi on fait de la corrélation sur crabs, et puis on passe à la régression sur bull. C'est décousu et cela n'a aucun sens. Comment les étudiants penvent comprendre la logique d'une analyse autour d'une régression linéaire sur base de problèmes aussi peu construits !!!- -->
118+
115119
## Taureaux reproducteurs
116120

117-
L'association wallonne de l'élevage dispose de plusieurs centres d'insémination. Ils ont un recensement des différents taureaux reproducteurs. Vous avez à votre disposition le jeu de données `bull` qui comprend les variables suivantes : `r names(bull)`. Il souhaite que vous réalisiez une régression linéaire de la masse en fonction de l'âge. Il vous demande de vous intéressez uniquement au plus individus de moins de 40 mois.
121+
L'association wallonne de l'élevage dispose de plusieurs centres d'insémination. Elle possède un recensement des différents taureaux reproducteurs. Vous avez à votre disposition le jeu de données `bull` qui comprend les variables suivantes : `r names(bull)`. Elle souhaite que vous réalisiez une régression linéaire de la masse en fonction de l'âge. Elle vous demande de vous intéressez uniquement aux individus de moins de 40 mois.
118122

119123
Débutez votre analyse par réaliser un nuage de point de la masse en fonction de l'âge des taureaux.
120124

121-
```{r bull_np_h2, exercise = TRUE}
125+
```{r bull_np_h2, exercise=TRUE}
122126
chart(data = ___, ___ ___ ___) +
123127
___()
124128
```
@@ -140,25 +144,30 @@ chart(data = bull, weight ~ age) +
140144
grade_code("Bravo ! Vous avez réalisé le nuage de points souhaité.")
141145
```
142146

143-
Complétez à présent les instructions ci-dessous afin de réaliser une régression linéaire de la masse en fonction de l'âge.
147+
Complétez à présent les instructions ci-dessous afin de réaliser une régression linéaire de la masse en fonction de l'âge. *Souvenez-vous que `tabularise()` est une nouvelle fonction qui permet de réaliser un tableau propre des résultats (nous l'avons découvert dans le learnr précédent).*
144148

145149
```{r bull_lm_h2, exercise=TRUE, exercise.lines=2}
146-
summary(lm. <- lm(data = ___, ___ ~ ___))
150+
bull_lm <- lm(data = ___, ___ ~ ___)
151+
summary(___) |>
152+
tabularise()
147153
```
148154

149155
```{r bull_lm_h2-hint-1}
150-
summary(lm. <- lm(data = ___, ___ ~ age))
151-
156+
bull_lm <- lm(data = ___, ___ ~ age)
157+
summary(___) |>
158+
tabularise()
152159
#### ATTENTION: Hint suivant = solution !####
153160
```
154161

155162
```{r bull_lm_h2-solution}
156163
## Solution ##
157-
summary(lm. <- lm(data = bull, weight ~ age))
164+
bull_lm <- lm(data = bull, weight ~ age)
165+
summary(bull_lm) |>
166+
tabularise()
158167
```
159168

160169
```{r bull_lm_h2-check}
161-
grade_code("Vous avez réalisé votre première régression linéaire. Analysez le résumé de ce modèle et répondez aux questions ci-dessous.")
170+
grade_code("Vous avez réalisé votre première régression linéaire. Analysez le tableau issu de ce modèle et répondez aux questions qui suivent.")
162171
```
163172

164173
Suite à votre analyse, répondez aux questions suivantes :

inst/tutorials/B01Lb_residuals/B01Lb_residuals.Rmd

Lines changed: 80 additions & 26 deletions
Original file line numberDiff line numberDiff line change
@@ -17,8 +17,12 @@ BioDataScience2::learnr_setup()
1717
SciViews::R("model", lang = "fr")
1818
1919
rice <- read("rice", package = "BioDataScience2")
20+
rice <- labelise(rice, self = FALSE,
21+
label = list(area = "Surface", major_axis_length = "Longueur"),
22+
units = list(area = "pixels²", major_axis_length = "pixels")
23+
)
2024
21-
rice_lm <- lm(data = rice,area ~ major_axis_length)
25+
rice_lm <- lm(data = rice, area ~ major_axis_length)
2226
lm_result <- tidy(rice_lm)
2327
lm_param <- glance(rice_lm)
2428
```
@@ -35,27 +39,33 @@ BioDataScience2::learnr_server(input, output, session)
3539

3640
## Objectifs
3741

38-
- Utiliser la fonction `lm()` afin d'obtenir un modèle de régression linéaire simple.
42+
- Utiliser la fonction `lm()` pour obtenir un modèle de régression linéaire simple
3943

40-
- Étudier le résumé du modèle linéaire
44+
- Étudier le résumé et le graphique du modèle linéaire
4145

42-
- Être capable de réaliser une analyse des résidus
46+
- Paramétriser l'équation de la régression linéaire
47+
48+
- Découvrir l'analyse des résidus du modèle
4349

4450
## Description des données
4551

46-
Des scientifiques s'intéressent à deux variétés de riz cultivées en Turquie. Ils ont l'objectif de mettre en place un outil capable sur base d'analyse d'image de classer des grains de riz.
52+
Des ingénieurs agronomes s'intéressent à deux variétés de riz cultivées en Turquie. Ils ont pour objectif de mettre en place un outil capable, sur base d'analyse d'image, de classer des grains de riz. Les dimensions mesurées sur les images ne sont pas calibrées et sont exprimées en pixels. Nous rajoutons cette information dans `rice`.
4753

4854
```{r, echo = TRUE}
4955
rice <- read("rice", package = "BioDataScience2")
56+
rice <- labelise(rice, self = FALSE,
57+
label = list(area = "Surface", major_axis_length = "Longueur"),
58+
units = list(area = "pixels²", major_axis_length = "pixels")
59+
)
5060
```
5161

52-
Vous avez à disposition le tableau `rice` qui comprend les variables suivantes `r names(rice)`. Consultez la page d'aide afin d'en apprendre davantage.
62+
Vous avez à disposition le tableau `rice` constitué des variables suivantes `r names(rice)`. Consultez la page d'aide avec `?BioDataScience2::rice` afin d'en apprendre davantage.
5363

54-
Votre objectif est de réaliser une régression linéaire de la variable `area` sur à la variable `major_axis_length`. Vous devrez ensuite analyser le résumé de cette régression et utilser les outils de diagnostic des résidus.
64+
Votre objectif est de réaliser une régression linéaire de la variable `area` sur à la variable `major_axis_length`. Vous devrez ensuite analyser le résumé de cette régression et utiliser les outils de diagnostic des résidus.
5565

56-
Débutez cette analyse par proposer un nuage de point de la variable `area` en fonction de la variable `major_axis_length`.
66+
Débutez cette analyse en réalisant un nuage de point de la variable `area` en fonction de la variable `major_axis_length` pour voir comment se présentent les données.
5767

58-
```{r np_h2, exercise = TRUE}
68+
```{r np_h2, exercise=TRUE}
5969
chart(data = ___, ___ ~ ___) ___
6070
___()
6171
```
@@ -73,25 +83,41 @@ chart(data = rice, area ~ major_axis_length) +
7383
```
7484

7585
```{r np_h2-check}
76-
grade_code("Bien joué ! Vous avez réalisé un nuage de points afin de visualiser vos données avant de modéliser. C'est une bonne habitude à prendre.")
86+
grade_code("Ce graphique en nuage de points est un pré-requis indispensable pour visualiser vos données avant de modéliser. C'est une bonne habitude à prendre que de l'étudier systématiquement avant de faire un régression. Vous noterez que le nuage de point s'étire le long d'une droite... C'est plutôt bon signe, non ?")
87+
```
88+
89+
Nous pouvons continuer la description des données avec une matrice de corrélation de Pearson :
90+
91+
```{r, echo=TRUE}
92+
correlation(num_vars(rice), method = "pearson") |>
93+
tabularise()
7794
```
7895

96+
Nous voyons que `area` est raisonnablement bien corrélé à `major_axis_length`, même si ce n'est pas la corrélation la plus forte. Ensuite une description générale des données, notamment pour voir comment elles se répartissent et s'il y a des valeurs manquantes, complète notre description du jeu de données.
97+
98+
```{r, echo=TRUE}
99+
skimr::skim(rice)
100+
```
101+
102+
79103
## Modélisation
80104

81105
Réalisez à présent la régression linéaire demandée de la variable `area` en fonction de la variable `major_axis_length`du tableau `rice`.
82106

83-
```{r rice_lm_h2, exercise = TRUE}
107+
```{r rice_lm_h2, exercise=TRUE}
84108
rice_lm <- lm(data = ___, ___ ~ ___)
85109
# Résumé de la régression linéaire
86-
summary(___)
110+
summary(___) |>
111+
tabularise()
87112
# Graphique de la régression
88113
chart(___)
89114
```
90115

91116
```{r rice_lm_h2-hint-1}
92117
rice_lm <- lm(data = rice, ___ ~ ___)
93118
# Résumé de la régression linéaire
94-
summary(rice_lm)
119+
summary(rice_lm) |>
120+
tabularise()
95121
# Graphique de la régression
96122
chart(rice_lm)
97123
@@ -102,13 +128,14 @@ chart(rice_lm)
102128
## Solution ##
103129
rice_lm <- lm(data = rice, area ~ major_axis_length)
104130
# Résumé de la régression linéaire
105-
summary(rice_lm)
131+
summary(rice_lm) |>
132+
tabularise()
106133
# Graphique de la régression
107134
chart(rice_lm)
108135
```
109136

110137
```{r rice_lm_h2-check}
111-
grade_code("Bien joué ! Vous avez calculé votre objet `lm_rice`. Vous l'avez résumé et représenté graphiquement.")
138+
grade_code("Vous avez calculé votre objet `lm_rice`. Vous l'avez résumé et représenté graphiquement. Vous avez du matériel à examiner pour déterminer si cette régression tient la route.")
112139
```
113140

114141
```{r qu_lm}
@@ -122,7 +149,7 @@ quiz(
122149
answer(sprintf("%.2f", lm_result$statistic[2])),
123150
answer(sprintf("%.2f", lm_param$r.squared[1])),
124151
allow_retry = TRUE, random_answer_order = TRUE,
125-
correct = "Bien joué ! Vous savez analyser le tableau des résultats.",
152+
correct = "Vous semblez comprendre ce qu'il y a dans le tableau des résultats.",
126153
incorrect = "Oups, il semble que vous avez mal lu le tableau résumé de la régression linéaire.",
127154
submit_button = "Soumettre une réponse",
128155
try_again_button = "Resoumettre une réponse"),
@@ -135,21 +162,39 @@ quiz(
135162
answer(sprintf("%.2f", lm_result$statistic[2])),
136163
answer(sprintf("%.2f", lm_param$r.squared[1])),
137164
allow_retry = TRUE, random_answer_order = TRUE,
138-
correct = "Bien joué ! Vous savez analyser le tableau des résultats.",
165+
correct = "Vous avez repéré les valeurs estimées des deux paramètres du modèle, pente et ordonnée à l'origine. Un aspect très important est la paramétrisation du modèle.",
139166
incorrect = "Oups, il semble que vous avez mal lu le tableau résumé de la régression linéaire.",
140167
submit_button = "Soumettre une réponse",
141168
try_again_button = "Resoumettre une réponse")
142169
)
143170
```
144171

172+
### Paramétrisation du modèle
173+
174+
Une fois que vous avez les estimateurs des différents paramètres de votre modèle, vous pouvez placer ces valeurs dans son équation. Cette étape importante se nomme la **paramétrisation** du modèle. Dans la SciViews Box 2023, vous avez des outils pour vous y aider. La fonction `eq__()` extrait l'équation du modèle et son argument `use_coefs = TRUE` indique de remplacer les paramètres par les valeurs estimées. Ainsi, pour obtenir cette équation, vous pouvez écrire un chunk en ligne `` `r eq__(rice_lm, use_coefs = TRUE)` `` à l'intérieur de balises Markdown d'équation dite "display" (équation sur sa propre ligne, hors texte, par opposition à l'équation "inline", directement dans le texte). Cela s'écrit comme suit :
175+
176+
- à une nouvelle ligne, vous entrez deux dollars `$$`, c'est la balise Markdown d'entrée d'une équation
177+
- à la ligne suivante, vous écrivez le chunk en ligne `` `r eq__(...)` `` qui viendra placer le contenu de l'équation calculé par R lors du rendu du document
178+
- à la troisième ligne, vous fermer le balisage d'équation à nouveau avec deux dollars `$$` et prenez soin d'encader le tout par deux lignes vide (une au dessus de la balise d'entrée, et une au dessous de la balise de sortie)
179+
180+
Cela donne ceci :
181+
182+
$$
183+
`r eq__(rice_lm, use_coefs = TRUE, coef_digits = c(0, 2))`
184+
$$
185+
186+
Notez que vous contrôlez le nombre de chiffres derrière la virgule pour chaque estimation à l'aide de l'argument supplémentaire `coef_digits =` qui accepte un entier (même nombre de chiffres derrière la virgule pour tous les estimateurs), ou un vecteur d'entiers pour varier la précision de chaque estimateur successif. Notez aussi que `eq__()` ne remplace pas encore les noms des variables par les labels. L'équation ci-dessus a été obtenue à l'aide de `` `r eq__(rice_lm, use_coefs = TRUE, coef_digits = c(0, 2))` ``.
187+
188+
Maintenant que les aspects techniques sont expliqués, concentrez-vous sur cette équation *Comparez le modèle paramétrisé avec son équation générale qui est présentée dans le tableau résumé plus haut. Assurez-vous d'avoir bien compris la logique de la paramétrisation pour passer de l'un à l'autre avant de passer à la suite.*
189+
145190
## Analyse des résidus
146191

147-
Vous avez à votre disposition l'objet `rice_lm` que vous avez réalisé précédemment. Proposez quatre graphiques afin d'étudier la distribution des résidus, le graphique quantile-quantile des résidus, la position et l'échelle des résidus et la distance de Cook des résidus.
192+
Vous avez à votre disposition l'objet `rice_lm` que vous avez créé précédemment. Construisez quatre graphiques afin d'étudier (1) la distribution générale des résidus, (2) le graphique quantile-quantile des résidus, (3) la position et l'échelle des résidus et (4) la distance de Cook des résidus.
148193

149-
```{r resid_h2, exercise = TRUE}
150-
# distribution des résidus
194+
```{r resid_h2, exercise=TRUE}
195+
# Distribution des résidus
151196
chart$___(___)
152-
# graphique quantile-quantile
197+
# Graphique quantile-quantile
153198
chart$___(___)
154199
# Position et échelle des résidus
155200
chart$___(___)
@@ -158,16 +203,25 @@ chart$___(___)
158203
```
159204

160205
```{r resid_h2-hint-1}
161-
# Consultez la page d'aide `modelit::chart.lm()`
206+
# Consultez la page d'aide `?modelit::chart.lm`
207+
208+
# Distribution des résidus
209+
chart$___(___)
210+
# Graphique quantile-quantile
211+
chart$___(___)
212+
# Position et échelle des résidus
213+
chart$___(___)
214+
# Distance de Cook
215+
chart$___(___)
162216
163217
#### ATTENTION: Hint suivant = solution !####
164218
```
165219

166220
```{r resid_h2-solution}
167221
## Solution ##
168-
# distribution des résidus
222+
# Distribution des résidus
169223
chart$resfitted(rice_lm)
170-
# graphique quantile-quantile
224+
# Graphique quantile-quantile
171225
chart$qqplot(rice_lm)
172226
# Position et echelle des résidus
173227
chart$scalelocation(rice_lm)
@@ -176,7 +230,7 @@ chart$cooksd(rice_lm)
176230
```
177231

178232
```{r resid_h2-check}
179-
grade_code("Bravo ! Vous avez réalisé les quatres graphiques les plus courants de l'analyse des résidus. Saurez-vous à présent répondre à la question suivante.")
233+
grade_code("Ce sont les quatre graphiques les plus courants de l'analyse des résidus. Êtes-vous capable à présent de répondre à la question qui suit ?")
180234
```
181235

182236
```{r qu_resid}
@@ -195,7 +249,7 @@ question("Sélectionnez parmi les éléments suivants les affirmations vraies.",
195249

196250
## Conclusion
197251

198-
Vous progressez dans votre apprentissage. Vous êtes à présent capable de réaliser une régression linéaire dans R, d'étudier le résumé de l'objet créé et d'analyser les résidus en lien avec cette régression.
252+
Vous progressez dans votre apprentissage. Vous venez de découvrir comment réaliser une régression linéaire simple dans R, d'en produire un tableau résumé et une visualisation graphique. Vous avez abordé la paramétrisation de l'équation du modèle et vous avez entrepris une première approche de l'analyse des résidus du modèle.
199253

200254
```{r comm_noscore, echo=FALSE}
201255
question_text(

0 commit comments

Comments
 (0)