Skip to content

Commit 9c55ba4

Browse files
first version of B01Lb_residuals
1 parent 322ab42 commit 9c55ba4

File tree

2 files changed

+181
-10
lines changed

2 files changed

+181
-10
lines changed

inst/tutorials/B01La_reg_lin/B01La_reg_lin.Rmd

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -213,6 +213,8 @@ question_text(
213213
answer("", TRUE, message = "Pas de commentaires... C'est bien aussi."),
214214
incorrect = "Vos commentaires sont enregistrés.",
215215
placeholder = "Entrez vos commentaires ici...",
216-
allow_retry = TRUE
216+
allow_retry = TRUE,
217+
submit_button = "Soumettre une réponse",
218+
try_again_button = "Resoumettre une réponse"
217219
)
218220
```

inst/tutorials/B01Lb_residuals/B01Lb_residuals.Rmd

Lines changed: 178 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@ author: "Guyliann Engels & Philippe Grosjean"
44
description: "**SDD II Module 1** Analyser les résidus d'une régression linéaire simple."
55
tutorial:
66
id: "B01Lb_residuals"
7-
version: 2.0.0/0
7+
version: 2.0.0/6
88
output:
99
learnr::tutorial:
1010
progressive: true
@@ -13,27 +13,196 @@ runtime: shiny_prerendered
1313
---
1414

1515
```{r setup, include=FALSE}
16-
BioDataScience3::learnr_setup()
17-
SciViews::R()
18-
library(pastecs)
16+
BioDataScience2::learnr_setup()
17+
SciViews::R("model", lang = "fr")
18+
# datasets ----
19+
rice <- read("rice", package = "BioDataScience3")
1920
20-
# ...
21+
# lm -----
22+
rice_lm <- lm(data = rice,area ~ major_axis_length)
23+
lm_result <- tidy(rice_lm)
24+
lm_param <- glance(rice_lm)
2125
```
2226

2327
```{r, echo=FALSE}
24-
BioDataScience3::learnr_banner()
28+
BioDataScience2::learnr_banner()
2529
```
2630

2731
```{r, context="server"}
28-
BioDataScience3::learnr_server(input, output, session)
32+
BioDataScience2::learnr_server(input, output, session)
2933
```
3034

3135
------------------------------------------------------------------------
3236

3337
## Objectifs
3438

35-
- ...
39+
TODO: ce tutoriel doit encore être écrit. Vous devez probablement penser à installer une version plus récente du package qui contient les exercices finalisés !
40+
41+
Utiliser la fonction lm() afin d'obtenir un modèle qui touche à la régression linéaire est simple. Il est plus compliqué de réaliser une fonction linéaire pertinente. Étudier le résumé du modèle linéaire et s'intéresser à l'analyse des résidus est plus complexe. L'objectif de ce tutoriel est.
42+
43+
- d'étudier les graphiques dédiés à l'analyse des résidus.
44+
45+
## Description des données
46+
47+
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.
48+
49+
```{r, echo = TRUE}
50+
rice <- read("rice", package = "BioDataScience3")
51+
```
52+
53+
Vous avez à disposition le tableau `rice` qui comprend les variables suivantes `r names(rice)`. Consultez la page d'aide afin d'en apprendre davantage.
54+
55+
Votre objectif est de réaliser une régression linéaire de la variable `area` grâce à la variable `major_axis_length`. Vous devrez ensuite analyser le résumé de cette régression et les outils de diagnostic des résidus.
56+
57+
Débutez cette analyse par proposer un nuage de point de la variable `area` en fonction de la variable `major_axis_length`.
58+
59+
```{r np_h2, exercise = TRUE}
60+
chart(data = ___, ___ ~ ___) ___
61+
___()
62+
```
63+
64+
```{r np_h2-hint-1}
65+
chart(data = rice, ___ ~ ___) +
66+
___()
67+
#### ATTENTION: Hint suivant = solution !####
68+
```
69+
70+
```{r np_h2-solution}
71+
chart(data = rice, area ~ major_axis_length) +
72+
geom_point()
73+
```
74+
75+
```{r np_h2-check}
76+
grade_code("Bien joué ! Vous avez réalisé un nuage de points afin de visualiser la problématique avant de tenter de la modéliser.")
77+
```
78+
79+
## Modélisation de la problématique
80+
81+
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`.
82+
83+
```{r rice_lm_h2, exercise = TRUE}
84+
rice_lm <- lm(data = ___, ___ ~ ___)
85+
# Résumé de la régression linéaire
86+
summary(___)
87+
# Graphique de la régression
88+
chart(___)
89+
```
90+
91+
```{r rice_lm_h2-hint-1}
92+
rice_lm <- lm(data = rice, ___ ~ ___)
93+
# Résumé de la régression linéaire
94+
summary(rice_lm)
95+
# Graphique de la régression
96+
chart(rice_lm)
97+
98+
#### ATTENTION: Hint suivant = solution !####
99+
```
100+
101+
```{r rice_lm_h2-solution}
102+
rice_lm <- lm(data = rice, area ~ major_axis_length)
103+
# Résumé de la régression linéaire
104+
summary(rice_lm)
105+
# Graphique de la régression
106+
chart(rice_lm)
107+
```
108+
109+
```{r rice_lm_h2-check}
110+
grade_code("Bien joué ! Vous avez calculé votre objet `lm_rice`.")
111+
```
112+
113+
```{r qu_lm}
114+
#TODO
115+
quiz(
116+
question(text = "Quelle est la valeur de l'ordonnée à l'origine ?",
117+
answer(sprintf("%.2f", lm_result$estimate[1]), correct = TRUE),
118+
answer(sprintf("%.2f", lm_result$estimate[2])),
119+
answer(sprintf("%.2f", lm_result$std.error[1])),
120+
answer(sprintf("%.2f", lm_result$std.error[2])),
121+
answer(sprintf("%.2f", lm_result$statistic[1])),
122+
answer(sprintf("%.2f", lm_result$statistic[2])),
123+
answer(sprintf("%.2f", lm_param$r.squared[1])),
124+
allow_retry = TRUE, random_answer_order = TRUE,
125+
correct = "Bien joué ! Vous savez analyser le tableau des résultats.",
126+
incorrect = "Oups, il semble que vous avez mal lu le tableau résumé de la régression linéaire.",
127+
submit_button = "Soumettre une réponse",
128+
try_again_button = "Resoumettre une réponse"),
129+
question(text = "Quelle est la valeur de la pente ?",
130+
answer(sprintf("%.2f", lm_result$estimate[1])),
131+
answer(sprintf("%.2f", lm_result$estimate[2]), correct = TRUE),
132+
answer(sprintf("%.2f", lm_result$std.error[1])),
133+
answer(sprintf("%.2f", lm_result$std.error[2])),
134+
answer(sprintf("%.2f", lm_result$statistic[1])),
135+
answer(sprintf("%.2f", lm_result$statistic[2])),
136+
answer(sprintf("%.2f", lm_param$r.squared[1])),
137+
allow_retry = TRUE, random_answer_order = TRUE,
138+
correct = "Bien joué ! Vous savez analyser le tableau des résultats.",
139+
incorrect = "Oups, il semble que vous avez mal lu le tableau résumé de la régression linéaire.",
140+
submit_button = "Soumettre une réponse",
141+
try_again_button = "Resoumettre une réponse")
142+
)
143+
```
36144

37145
## Analyse des résidus
38146

39-
TODO: ce tutoriel doit encore être écrit. Vous devez probablement penser à installer une version plus récente du package qui contient les exercices finalisés !
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.
148+
149+
```{r resid_h2, exercise = TRUE}
150+
# distribution des résidus
151+
chart$___(___)
152+
# graphique quantile-quantile
153+
chart$___(___)
154+
# Position et echelle des résidus
155+
chart$___(___)
156+
# Distance de Cook
157+
chart$___(___)
158+
```
159+
160+
```{r resid_h2-hint-1}
161+
# Consultez la page d'aide `modelit::chart.lm()`
162+
#### ATTENTION: Hint suivant = solution !####
163+
```
164+
165+
```{r resid_h2-solution}
166+
# distribution des résidus
167+
chart$resfitted(rice_lm)
168+
# graphique quantile-quantile
169+
chart$qqplot(rice_lm)
170+
# Position et echelle des résidus
171+
chart$scalelocation(rice_lm)
172+
# Distance de Cook
173+
chart$cooksd(rice_lm)
174+
```
175+
176+
```{r resid_h2-check}
177+
grade_code("Bravo ! Vous avez réalisé les quatres graphiques les plus courants de l'analyse des résidus. Serez vous à présent répondre à la question suivante.")
178+
```
179+
180+
```{r qu_resid}
181+
question("Sélectionnez parmi les éléments suivants les affirmations vraies.",
182+
answer("Aucune valeur n'influence trop fortement la régression linéaire.", correct = TRUE, message = "La régression linéaire est très influencée par les valeurs extrêmes. La distance de cook est parfaite pour étudier ces valeurs extrêmes."),
183+
answer("On observe autant de résidus positifs que négatifs.", correct = TRUE, message = "La distribution des résidus montre permet d'observer qu'il y a autant de résidus positifs que négatifs. La répartition des résidus est homogène tout le long de l'axe X (les valeurs prédites)."),
184+
answer("Les résidus suivent une distribution presque normale.", correct = TRUE, message = "Le graphique quantile-quantile permet d'étudier la distribution normale. On observe que les résidus les plus faible et les plus élévé s'éloigne de la droite. Il serait intéressant de tenter des transformations mathématique sur les variables pour rendre la distribution des résidus noramle."),
185+
answer("Les résidus positif et négatif ont des valeurs similaires dans l'absolu.", correct = TRUE, message = "La position et l'échelle des résidus permet dd superposer les résidus positifs et négatifs. On peut observer que la courbe bleue est presque horizontale."),
186+
correct = "Bien joué ! Vous avez sélectionné les affirmations correctes.",
187+
incorrect = "Oups, il semble que vous avez mal interpété les graphiques ci-dessus. C'est très complexe d'étudier les graphiques de diagnostic.",
188+
allow_retry = TRUE, random_answer_order = TRUE,
189+
submit_button = "Soumettre une réponse",
190+
try_again_button = "Resoumettre une réponse"
191+
)
192+
```
193+
194+
## Conclusion
195+
196+
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.
197+
198+
```{r comm_noscore, echo=FALSE}
199+
question_text(
200+
"Laissez-nous vos impressions sur ce learnr",
201+
answer("", TRUE, message = "Pas de commentaires... C'est bien aussi."),
202+
incorrect = "Vos commentaires sont enregistrés.",
203+
placeholder = "Entrez vos commentaires ici...",
204+
allow_retry = TRUE,
205+
submit_button = "Soumettre une réponse",
206+
try_again_button = "Resoumettre une réponse"
207+
)
208+
```

0 commit comments

Comments
 (0)