Skip to content

Commit 322ab42

Browse files
Updating B01La_reg_lin : adding new questions
1 parent 4e80857 commit 322ab42

File tree

1 file changed

+88
-172
lines changed

1 file changed

+88
-172
lines changed

inst/tutorials/B01La_reg_lin/B01La_reg_lin.Rmd

Lines changed: 88 additions & 172 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.2.0/10
7+
version: 2.3.0/8
88
output:
99
learnr::tutorial:
1010
progressive: true
@@ -14,7 +14,23 @@ runtime: shiny_prerendered
1414

1515
```{r setup, include=FALSE}
1616
BioDataScience2::learnr_setup()
17-
SciViews::R()
17+
SciViews::R("model", lang = "fr")
18+
# datasets ----
19+
## crabs
20+
crabs <- read("crabs", package = "MASS")
21+
22+
## bull
23+
read(file = system.file("extdata", "belgianblue.xlsx",
24+
package = "BioDataScience2"), type = "xlsx") %>.%
25+
#labelise(.,
26+
# label = list(weight = "Masse", age = "Age", variety = "Variété"),
27+
# unit = list(weight = "kg", age = "mois")) %>.%
28+
sfilter(., age <= 40) ->
29+
bull
30+
31+
bull_lm <- lm(data = bull, weight ~ age)
32+
lm_result <- tidy(bull_lm)
33+
lm_param<- glance(bull_lm)
1834
```
1935

2036
```{r, echo=FALSE}
@@ -29,233 +45,121 @@ BioDataScience2::learnr_server(input, output, session)
2945

3046
## Objectifs
3147

48+
Ce tutoriel s'intéresse à la régression linéaire. Il 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). Les objectifs de ce tutoriel sont :
49+
3250
- Revoir la corrélation et les indices de Pearson et Spearman
3351

3452
- Maîtriser la régression linéaire dans R, en particulier la fonction `lm()`.
3553

36-
## Corrélation
37-
38-
```{r correlation-init}
39-
set.seed(43)
40-
min <- 5
41-
max <- 15
42-
43-
df <- dtx(
44-
x = seq(from = min, to = max, by = 0.25),
45-
y = x*2 + rnorm(length(x), sd = 0.5),
46-
z = 2^x + rnorm(length(x), sd = 50),
47-
a = sin(x) + rnorm(length(x), sd = 0.25),
48-
id = paste0("A", 1:length(x))
49-
)
50-
```
54+
## Biométrie des crabes
5155

52-
Vous avez à disposition le jeu de données `df` qui comprend les `r length(names(df))` variables suivantes : `r names(df)`.
56+
Cinq mesures morphologiques ont été étudiées sur 200 crabes. On retrouve quatre groupes composés de 50 individus. On retrouve les crabes bleu mâles et femelles et les crabes orange mâles et femelles.
5357

54-
```{r}
55-
summary(df)
58+
```{r, echo = TRUE}
59+
crabs <- read("crabs", package = "MASS")
60+
skimr::skim(crabs)
5661
```
5762

58-
- Réalisez une matrice de corrélation avec l'indice de Pearson.
63+
La fonction `skim()` vous permet d'obtenir de nombreuses informations sur le tableau `crabs`. N'hésitez pas à consulter la page d'aide du jeu de données pour en apprendre davantage.
5964

60-
```{r correlation-prep}
61-
set.seed(43)
62-
min <- 5
63-
max <- 15
65+
C'est à vous de jouer ! Réalisez une matrice de corrélation avec l'indice de Pearson. N'utilisez que les variables pertinentes. Sélectionnez ces variables sur base de leur nom. Affichez un corrélogramme avec la partie supérieure uniquement (`upper`).
6466

65-
df <- dtx(
66-
x = seq(from = min, to = max, by = 0.25),
67-
y = x*2 + rnorm(length(x), sd = 0.5),
68-
z = 2^x + rnorm(length(x), sd = 50),
69-
a = sin(x) + rnorm(length(x), sd = 0.25),
70-
id = paste0("A", 1:length(x))
71-
)
72-
73-
#correlation(df[1:4])
74-
#correlation(df[1:4], method = "spearman")
75-
```
76-
77-
💬 *Un snippet peut vous aider à réaliser cet exercice.*
78-
79-
```{r corr1_h3, exercise=TRUE, exercise.lines=2, exercise.setup="correlation-prep"}
80-
correlation(___[, ___:___], use = ___, method = ___)
67+
```{r corr1_h3, exercise=TRUE, exercise.lines=2}
68+
crabs_corr <- correlation(sselect(___, ___:___), use = ___, method = ___)
69+
plot(crabs_corr, ___ = ___)
8170
```
8271

8372
```{r corr1_h3-hint-1}
84-
##Snippet utile ## .escor: correlation matrix (enhanced) [SciViews]
85-
correlation(DF[, INDEX_EXPRESSION], use = "complete.obs", method = "pearson")
86-
73+
crabs_corr <- correlation(sselect(___, ___:___), use = "complete.obs", method = "pearson")
74+
plot(crabs_corr, type = ___)
8775
# Relisez le chapitre 12 du livre science des données 1 <https://wp.sciviewg/sdd-umons/>
8876
```
8977

9078
```{r corr1_h3-hint-2}
91-
correlation(df[, ___:___], use = "complete.obs", method = "pearson")
92-
79+
correlation(sselect(crabs, ___:___), use = "complete.obs", method = "pearson")
80+
plot(crabs_corr, type = "upper")
9381
#### ATTENTION: Hint suivant = solution !####
9482
```
9583

9684
```{r corr1_h3-solution}
9785
## Solution ##
98-
correlation(df[, 1:4], use = "complete.obs", method = "pearson")
86+
crabs_corr <- correlation(sselect(crabs, front:depth), use = "complete.obs", method = "pearson")
87+
plot(crabs_corr, type = "upper")
9988
```
10089

10190
```{r corr1_h3-check}
102-
grade_code("Vous avez compris comment réaliser une matrice de corrélation.")
91+
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.")
10392
```
10493

10594
Répondez à la question ci-dessous.
10695

107-
```{r qu_corr1}
108-
question("Quelles sont les combinaisons de variables les plus corrélées ?",
109-
answer("x-y", correct = TRUE),
110-
answer("x-z"),
111-
answer("x-a"),
112-
answer("y-z"),
113-
answer("y-a"),
114-
answer("z-a"),
115-
allow_retry = TRUE, random_answer_order = TRUE)
96+
```{r qu_corr}
97+
question("Quelles sont les combinaisons de variables les plus corrélées ? (sélectionnez donc les deux variables)",
98+
answer("front", correct = TRUE),
99+
answer("width"),
100+
answer("depth", correct = TRUE),
101+
answer("rear"),
102+
answer("lenght"),
103+
type = "multiple",
104+
allow_retry = TRUE, random_answer_order = TRUE,
105+
submit_button = "Soumettre une réponse",
106+
try_again_button = "Resoumettre une réponse")
116107
```
117108

118-
- Réalisez une matrice de corrélation avec la méthode de Spearman.
119-
120-
💬 **Un snippet peut vous aider à réaliser cet exercice.**
109+
## Taureaux reproducteurs
121110

122-
```{r corr2_h3, exercise=TRUE, exercise.lines=2, exercise.setup="correlation-prep"}
123-
correlation(___[, ___:___], use = ___, method = ___)
124-
```
111+
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.
125112

126-
```{r corr2_h3-hint-1}
127-
##Snippet utile ## .escor: correlation matrix (enhanced) [SciViews]
128-
correlation(DF[, INDEX_EXPRESSION], use = "complete.obs", method = "___")
113+
Débutez votre analyse par réaliser un nuage de point de la masse en fonction de l'âge des taureaux.
129114

130-
# Relisez le chapitre 12 du livre science des données 1 <https://wp.sciviewg/sdd-umons/>
115+
```{r bull_np_h2, exercise = TRUE}
116+
chart(data = ___, ___ ___ ___) +
117+
___()
131118
```
132119

133-
```{r corr2_h3-hint-2}
134-
correlation(df[, 1:4], use = "complete.obs", method = "___")
120+
```{r bull_np_h2-hint-1}
121+
chart(data = ___, ___ ___ ___) +
122+
geom_point()
135123
136124
#### ATTENTION: Hint suivant = solution !####
137125
```
138126

139-
```{r corr2_h3-solution}
140-
## Solution ##
141-
correlation(df[, 1:4], use = "complete.obs", method = "spearman")
142-
```
143-
144-
```{r corr2_h3-check}
145-
grade_code("C'est cela. Rappelez-vous bien la différence entre Spearman (corrélation non linéaire) et Pearson (corrélation linéaire).")
146-
```
147-
148-
Répondez à la question ci-dessous.
149-
150-
```{r qu_corr2}
151-
question("Quelles sont les combinaisons de variables les moins corrélées ?",
152-
answer("x-y"),
153-
answer("x-z"),
154-
answer("x-a"),
155-
answer("y-z"),
156-
answer("y-a", correct = TRUE),
157-
answer("z-a"),
158-
allow_retry = TRUE, random_answer_order = TRUE
159-
)
160-
```
161-
162-
- Reproduisez le graphique ci-dessous en vous basant sur vos matrices réalisées précédemment?
163-
164-
```{r, echo=FALSE}
165-
plot(correlation(df[, 2:4], use = "complete.obs", method = "pearson"), type = "upper")
166-
```
167-
168-
```{r corr3_h3, exercise=TRUE, exercise.lines=2, exercise.setup="correlation-prep"}
169-
___(correlation(___[,___:___], use = ___, method = ___), ___ = ___)
170-
```
171-
172-
```{r corr3_h3-hint-1}
173-
plot(correlation(___[,___:___], use = ___, method = ___), type = ____)
174-
```
175-
176-
```{r corr3_h3-hint-2}
177-
plot(correlation(___[,___:____], use = ___, method = ___), type = "upper")
127+
```{r bull_np_h2-solution}
128+
chart(data = bull, weight ~ age) +
129+
geom_point()
178130
179131
#### ATTENTION: Hint suivant = solution !####
180132
```
181133

182-
```{r corr3_h3-solution}
183-
plot(correlation(df[, 2:4], use = "complete.obs", method = "pearson"), type = "upper")
184-
```
185-
186-
```{r corr3_h3-check}
187-
grade_code("Présenter une matrice de corrélation sous la forme d'un graphique, c'est quand même plus convivial.")
188-
```
189-
190-
## Régression linéaire
191-
192-
```{r reglin1_init}
193-
set.seed(42)
194-
x <- seq(from = 5, to = 15, by = 0.25)
195-
a <- x * 1.0 + 3 + rnorm(sd = 0.5, n = length(x))
196-
b <- x * 1.1 + 3 + rnorm(sd = 0.5, n = length(x))
197-
c <- x * 1.2 + 3 + rnorm(sd = 0.5, n = length(x))
198-
area <- as.factor(rep(c("a", "b", "c"), each = length(x)))
199-
200-
maize <- dtx(
201-
x = c(x, x, x),
202-
value = c(a, b, c),
203-
area = area
204-
)
205-
206-
lm_reg <- lm(data = maize, value ~ x)
207-
208-
lm_param <- glance(lm_reg)
209-
lm_result <- tidy(lm_reg)
210-
```
211-
212-
Réalisez la régression linéaire de `value` en fonction de `x` sur le jeu de données `maize` (des données dont il n'est pas important de connaître l'origine ni la signification pour l'exercice, et mesurées sur des plans de maïs). Le graphique en nuage de points permet de visualiser les données.
213-
214-
```{r}
215-
chart(data = maize, value ~ x) +
216-
geom_point()
217-
```
218-
219-
```{r reglin1-prep}
220-
set.seed(42)
221-
x <- seq(from = 5, to = 15, by = 0.25)
222-
a <- x * 1.0 + 3 + rnorm(sd = 0.5, n = length(x))
223-
b <- x * 1.1 + 3 + rnorm(sd = 0.5, n = length(x))
224-
c <- x * 1.2 + 3 + rnorm(sd = 0.5, n = length(x))
225-
area <- as.factor(rep(c("a", "b", "c"), each = length(x)))
226-
227-
maize <- dtx(
228-
x = c(x, x, x),
229-
value = c(a, b, c),
230-
area = area
231-
)
134+
```{r bull_np_h2-check}
135+
grade_code("Bravo ! Vous avez réalisez le nuage de points souhaité.")
232136
```
233137

234-
💬 **Un snippet peut vous aider à réaliser cet exercice.**
138+
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.
235139

236-
```{r reglin1_h2, exercise=TRUE, exercise.lines=2, exercise.setup="reglin1-prep"}
140+
```{r bull_lm_h2, exercise=TRUE, exercise.lines=2}
237141
summary(lm. <- lm(data = ___, ___ ~ ___))
238142
```
239143

240-
```{r reglin1_h2-hint-1}
144+
```{r bull_lm_h2-hint-1}
241145
##Snippet utile ## .mlin: linear model
242146
summary(lm. <- lm(data = DF, FORMULA))
243147
244148
#### ATTENTION: Hint suivant = solution !####
245149
```
246150

247-
```{r reglin1_h2-solution}
151+
```{r bull_lm_h2-solution}
248152
## Solution ##
249-
summary(lm. <- lm(data = maize, value ~ x))
153+
summary(lm. <- lm(data = bull, weight ~ age))
250154
```
251155

252-
```{r reglin1_h2-check}
253-
grade_code("Vous avez réalisé votre première régression linéaire.")
156+
```{r bull_lm_h2-check}
157+
grade_code("Vous avez réalisé votre première régression linéaire. Analysez le résumé de ce model et répondez aux questions ci-dessous.")
254158
```
255159

256-
Suite à votre analyse répondez aux questions suivantes :
160+
Suite à votre analyse, répondez aux questions suivantes :
257161

258-
```{r qu_reglin1}
162+
```{r qu_reglin}
259163
quiz(
260164
question(text = "Quelle est la valeur de l'ordonnée à l'origine ?",
261165
answer(sprintf("%.2f", lm_result$estimate[1]), correct = TRUE),
@@ -265,7 +169,11 @@ quiz(
265169
answer(sprintf("%.2f", lm_result$statistic[1])),
266170
answer(sprintf("%.2f", lm_result$statistic[2])),
267171
answer(sprintf("%.2f", lm_param$r.squared[1])),
268-
allow_retry = TRUE, random_answer_order = TRUE),
172+
allow_retry = TRUE, random_answer_order = TRUE,
173+
correct = "Bien joué ! Vous savez analyser le tableau des résultats.",
174+
incorrect = "Oups, il semble que vous avez mal lu le tableau résumé de la régression linéaire.",
175+
submit_button = "Soumettre une réponse",
176+
try_again_button = "Resoumettre une réponse"),
269177
question(text = "Quelle est la valeur de la pente ?",
270178
answer(sprintf("%.2f", lm_result$estimate[1])),
271179
answer(sprintf("%.2f", lm_result$estimate[2]), correct = TRUE),
@@ -274,22 +182,30 @@ quiz(
274182
answer(sprintf("%.2f", lm_result$statistic[1])),
275183
answer(sprintf("%.2f", lm_result$statistic[2])),
276184
answer(sprintf("%.2f", lm_param$r.squared[1])),
277-
allow_retry = TRUE, random_answer_order = TRUE),
185+
allow_retry = TRUE, random_answer_order = TRUE,
186+
correct = "Bien joué ! Vous savez analyser le tableau des résultats.",
187+
incorrect = "Oups, il semble que vous avez mal lu le tableau résumé de la régression linéaire.",
188+
submit_button = "Soumettre une réponse",
189+
try_again_button = "Resoumettre une réponse"),
278190
question(text = "Est ce que la valeur de l'ordonnée à l'origne est significativement différente de zéro au seuil alpha de 5% ?",
279191
answer("oui", correct = TRUE),
280192
answer("non"),
281-
allow_retry = TRUE),
193+
allow_retry = TRUE,
194+
submit_button = "Soumettre une réponse",
195+
try_again_button = "Resoumettre une réponse"),
282196
question(
283197
text = "Est ce que la valeur de la pente est significativement différente de zéro au seuil alpha de 5% ?",
284198
answer("oui", correct = TRUE),
285199
answer("non"),
286-
allow_retry = TRUE)
200+
allow_retry = TRUE,
201+
submit_button = "Soumettre une réponse",
202+
try_again_button = "Resoumettre une réponse")
287203
)
288204
```
289205

290206
## Conclusion
291207

292-
Votre auto-évaluation concernant la régression linéaires dans R (première partie) arrive à son terme. Il est temps de revenir au syllabus et de poursuivre vers des exercices pratiques maintenant.
208+
Votre auto-évaluation concernant la régression linéaire dans R (première partie) arrive à son terme. Il est temps de revenir au syllabus et de poursuivre vers des exercices pratiques maintenant.
293209

294210
```{r comm_noscore, echo=FALSE}
295211
question_text(

0 commit comments

Comments
 (0)