@@ -4,7 +4,7 @@ author: "Guyliann Engels & Philippe Grosjean"
4
4
description : " **SDD II Module 2** Régression linéaire multiple."
5
5
tutorial :
6
6
id : " B02La_reg_multi"
7
- version : 2.2.0 /7
7
+ version : 2.2.1 /7
8
8
output :
9
9
learnr::tutorial :
10
10
progressive : true
@@ -29,56 +29,59 @@ BioDataScience2::learnr_server(input, output, session)
29
29
30
30
## Objectifs
31
31
32
- - Savoir lire la sortie renvoyée par ` summary() ` lorsqu'il est appliqué à un objet ` lm ` .
32
+ - Être capable de lire la sortie renvoyée par ` summary() ` lorsqu'il est appliqué à un objet ` lm ` .
33
33
- Maîtriser la régression linéaire multiple dans R avec la fonction ` lm() ` .
34
34
35
35
## Régression linéaire
36
36
37
37
Réalisez une régression linéaire simple sur le jeu de données ` df1 ` de la variable ` y ` en fonction de la variable ` x ` .
38
38
39
39
``` {r reglin-init}
40
- # edition de l'exercice
40
+ # Edition de l'exercice
41
41
set.seed(42)
42
42
43
- reg_lin <- function(x, a, b){
44
- y <- a*x + b
45
- y
46
- }
43
+ reg_lin <- function(x, a, b)
44
+ a * x + b
47
45
48
- vec1 <- seq(from = 5, to = 20, by = 0.25)
49
- vec2 <- vec1 + rnorm(sd=0.5, n = length(vec1))
46
+ v1 <- seq(from = 5, to = 20, by = 0.25)
47
+ n_v1 <- length(v1)
48
+ v2 <- v1 + rnorm(sd = 0.5, n = n_v1)
50
49
51
50
df1 <- tibble(
52
- x = vec2,
53
- y = reg_lin(vec2, 0.5, 0) + rnorm(sd=0.5, n = length(vec1)))
51
+ x = v2,
52
+ y = reg_lin(v2, 0.5, 0.001) + rnorm(sd = 0.5, n = n_v1)
53
+ )
54
54
55
- lm_lin <- lm(df1, formula = y ~ x - 1 )
55
+ lm_lin <- lm(data = df1, y ~ x)
56
56
lm_lin_param <- broom::glance(lm_lin)
57
57
lm_lin_result <- broom::tidy(lm_lin)
58
58
```
59
59
60
- Vous avez à votre disposition le graphique suivant pour visualiser les données.
60
+ Vous avez à votre disposition le graphique suivant pour visualiser les données\ :
61
61
62
62
``` {r}
63
- chart(df1, formula= y ~ x) +
63
+ chart(data = df1, y ~ x) +
64
64
geom_point()
65
65
```
66
66
67
67
``` {r reglin-prep}
68
- # edition de l'exercice
68
+ # Edition de l'exercice
69
69
set.seed(42)
70
70
71
- reg_lin <- function(x, a, b){
72
- y <- a*x + b
73
- y
74
- }
71
+ reg_lin <- function(x, a, b)
72
+ a * x + b
75
73
76
- vec1 <- seq(from = 5, to = 20, by = 0.25)
77
- vec2 <- vec1 + rnorm(sd=0.5, n = length(vec1))
74
+ v1 <- seq(from = 5, to = 20, by = 0.25)
75
+ n_v1 <- length(v1)
76
+ v2 <- v1 + rnorm(sd = 0.5, n = n_v1)
78
77
79
78
df1 <- tibble(
80
- x = vec2,
81
- y = reg_lin(vec2, 0.5, 0) + rnorm(sd=0.5, n = length(vec1)))
79
+ x = v2,
80
+ y = reg_lin(v2, 0.5, 0.001) + rnorm(sd = 0.5, n = n_v1)
81
+ )
82
+ lm_lin <- lm(data = df1, y ~ x)
83
+ lm_lin_param <- broom::glance(lm_lin)
84
+ lm_lin_result <- broom::tidy(lm_lin)
82
85
```
83
86
84
87
💬 ** Un snippet peut vous aider à réaliser cet exercice.**
@@ -89,78 +92,73 @@ summary(lm. <- lm(data = ___, ___ ~ ___))
89
92
90
93
``` {r reglin_h2-hint}
91
94
summary(lm. <- lm(data = DF, FORMULA))
95
+
92
96
#### ATTENTION: Hint suivant = solution !####
93
97
```
94
98
95
99
``` {r reglin_h2-solution}
96
100
## Solution ##
97
- summary(lm. <- lm(data = df1, y ~ x + 0 ))
101
+ summary(lm. <- lm(data = df1, y ~ x))
98
102
```
99
103
100
104
``` {r reglin_h2-check}
101
- grade_code("Vous avez réalisé votre premier modèle linéaire.")
105
+ grade_code("D'accord, on a maintenant un modèle linéaire simple comme point de départ .")
102
106
```
103
107
104
- Suite à votre analyse répondez aux questions suivantes :
108
+ Suite à votre analyse répondez aux questions suivantes\ :
105
109
106
110
``` {r qu_reglin}
107
111
quiz(
108
112
question(text = "Quelle est la valeur de l'ordonnée à l'origine ?",
109
- answer(sprintf("%.2f", 0 ), correct = TRUE),
110
- answer(sprintf("%.2f", lm_lin_result$estimate[1] )),
113
+ answer(sprintf("%.2f", lm_lin_result$estimate[1] ), correct = TRUE),
114
+ answer(sprintf("%.2f", 0 )),
111
115
answer(sprintf("%.2f", lm_lin_param$sigma[1])),
112
- answer(sprintf("%.2f", lm_lin_param$AIC[1 ])),
116
+ answer(sprintf("%.2f", lm_lin_result$estimate[2 ])),
113
117
answer(sprintf("%.2f", lm_lin_param$r.squared[1])),
114
118
allow_retry = TRUE, random_answer_order = TRUE
115
- ),
119
+ ),
116
120
question(text = "Quelle est la valeur de la pente ?",
117
121
answer(sprintf("%.2f", 0)),
118
- answer(sprintf("%.2f", lm_lin_result$estimate[1 ]), correct = TRUE),
122
+ answer(sprintf("%.2f", lm_lin_result$estimate[2 ]), correct = TRUE),
119
123
answer(sprintf("%.2f", lm_lin_param$BIC[1])),
120
- answer(sprintf("%.2f", lm_lin_param$AIC [1])),
124
+ answer(sprintf("%.2f", lm_lin_result$estimate [1])),
121
125
answer(sprintf("%.2f", lm_lin_param$r.squared[1])),
122
126
allow_retry = TRUE, random_answer_order = TRUE
123
- ),
127
+ ),
124
128
question(text = "Quelle est la fraction de la variance exprimée par la régression linéaire ?",
125
129
answer(sprintf("%.3f", lm_lin_param$r.squared), correct = TRUE),
126
130
answer(sprintf("%.3f", lm_lin_param$statistic)),
127
- answer(sprintf("%.3f", lm_lin_param$df)),
131
+ answer(sprintf("%.3f", as.numeric( lm_lin_param$df) )),
128
132
answer(sprintf("%.3f", lm_lin_result$estimate[1])),
129
133
allow_retry = TRUE, random_answer_order = TRUE
130
- )
134
+ )
131
135
)
132
136
```
133
137
134
138
## Régression linéaire multiple
135
139
136
140
``` {r regmulti-init}
137
- # edition de l'exercice
138
- set.seed(42 )
141
+ # Edition de l'exercice
142
+ set.seed(381 )
139
143
140
- vec <- seq(from = 1, to = 15, by = .2)
141
- x <- vec + rnorm(sd = 3, n = length(vec))
144
+ v <- seq(from = 1, to = 15, by = .2)
145
+ n_v <- length(v)
146
+ x <- v + rnorm(sd = 3, n = n_v)
142
147
143
- reg_lin_rand <- function(x, a, b, random = 0.5){
144
- y <- (a*x) + b + rnorm(sd=random, n = length(x))
145
- y
146
- }
147
- reg_mutli3_rand <- function(x1, a1, x2, a2, x3, a3, b, random = 5){
148
- y <- a1*x1 + a2*x2 + a3*x3 + b + rnorm(sd=random, n = length(x1))
149
- y
150
- }
148
+ reg_lin_rand <- function(x, a, b, random = 0.5)
149
+ a * x + b + rnorm(sd = random, n = n_v)
150
+
151
+ reg_mutli3_rand <- function(x1, a1, x2, a2, x3, a3, b, random = 5)
152
+ a1 * x1 + a2 * x2 + a3 * x3 + b + rnorm(sd = random, n = length(x1))
151
153
152
154
df2 <- tibble::tibble(
153
155
x = x,
154
156
x0 = reg_lin_rand(x = x, a = 1.26, b = 2, random = 3.5),
155
157
x1 = reg_lin_rand(x = x, a = 1.5, b = 1, random = 10),
156
- y = reg_mutli3_rand(x1 = x,
157
- x2 = x0,
158
- x3 = x1,
159
- a1 = 0.2, a2 = 0.3, a3 = 1.1,
160
- b = 2))
161
-
158
+ y = reg_mutli3_rand(x1 = x, x2 = x0, x3 = x1,
159
+ a1 = 0.2, a2 = 0.3, a3 = 1.1, b = 2))
162
160
163
- lm_mult <- lm(data = df2, formula = y ~ x + x1 )
161
+ lm_mult <- lm(data = df2, y ~ x + x1)
164
162
lm_mult_coef <- broom::tidy(lm_mult)
165
163
lm_mult_param <- broom::glance(lm_mult)
166
164
```
@@ -173,30 +171,29 @@ summary(df2)
173
171
Réalisez une régression linéaire simple sur le jeu de données ` df2 ` de la variable ` y ` en fonction de la variable ` x ` et ` x1 ` .
174
172
175
173
``` {r regmulti-prep}
176
- # edition de l'exercice
177
- set.seed(42 )
174
+ # Edition de l'exercice
175
+ set.seed(381 )
178
176
179
- vec <- seq(from = 1, to = 15, by = .2)
180
- x <- vec + rnorm(sd = 3, n = length(vec))
177
+ v <- seq(from = 1, to = 15, by = .2)
178
+ n_v <- length(v)
179
+ x <- v + rnorm(sd = 3, n = n_v)
181
180
182
- reg_lin_rand <- function(x, a, b, random = 0.5){
183
- y <- (a*x) + b + rnorm(sd=random, n = length(x))
184
- y
185
- }
186
- reg_mutli3_rand <- function(x1, a1, x2, a2, x3, a3, b, random = 5){
187
- y <- a1*x1 + a2*x2 + a3*x3 + b + rnorm(sd=random, n = length(x1))
188
- y
189
- }
181
+ reg_lin_rand <- function(x, a, b, random = 0.5)
182
+ a * x + b + rnorm(sd = random, n = n_v)
183
+
184
+ reg_mutli3_rand <- function(x1, a1, x2, a2, x3, a3, b, random = 5)
185
+ a1 * x1 + a2 * x2 + a3 * x3 + b + rnorm(sd = random, n = length(x1))
190
186
191
187
df2 <- tibble::tibble(
192
188
x = x,
193
189
x0 = reg_lin_rand(x = x, a = 1.26, b = 2, random = 3.5),
194
190
x1 = reg_lin_rand(x = x, a = 1.5, b = 1, random = 10),
195
- y = reg_mutli3_rand(x1 = x,
196
- x2 = x0,
197
- x3 = x1,
198
- a1 = 0.2, a2 = 0.3, a3 = 1.1,
199
- b = 2))
191
+ y = reg_mutli3_rand(x1 = x, x2 = x0, x3 = x1,
192
+ a1 = 0.2, a2 = 0.3, a3 = 1.1, b = 2))
193
+
194
+ lm_mult <- lm(data = df2, y ~ x + x1)
195
+ lm_mult_coef <- broom::tidy(lm_mult)
196
+ lm_mult_param <- broom::glance(lm_mult)
200
197
```
201
198
202
199
💬 ** Un snippet peut vous aider à réaliser cet exercice.**
@@ -216,10 +213,10 @@ summary(lm. <- lm(data = df2, y ~ x + x1))
216
213
```
217
214
218
215
``` {r regmulti_h2-check}
219
- grade_code("Vous venez de réaliser votre première régression linéaire multiple. Elles n'auront bientôt plus de secret pour vous !")
216
+ grade_code("Vous venez de réaliser votre première régression linéaire multiple. Elles n'auront bientôt plus de secrets pour vous !")
220
217
```
221
218
222
- Suite à votre analyse répondez aux questions suivantes :
219
+ Suite à votre analyse répondez aux questions suivantes\ :
223
220
224
221
``` {r qu_regmulti}
225
222
quiz(
@@ -230,20 +227,20 @@ quiz(
230
227
answer(sprintf("%.2f", lm_mult_param$AIC[1])),
231
228
answer(sprintf("%.2f", lm_mult_param$r.squared[1])),
232
229
allow_retry = TRUE, random_answer_order = TRUE
233
- ),
230
+ ),
234
231
question(text = "Quelle est la fraction de la variance exprimée par la régression linéaire ?",
235
232
answer(sprintf("%.3f", lm_mult_param$adj.r.squared), correct = TRUE),
236
233
answer(sprintf("%.3f", lm_mult_param$r.squared)),
237
234
answer(sprintf("%.3f", lm_mult_param$df)),
238
235
answer(sprintf("%.3f", lm_mult_coef$estimate[1])),
239
236
allow_retry = TRUE, random_answer_order = TRUE
240
- )
237
+ )
241
238
)
242
239
```
243
240
244
241
## Conclusion
245
242
246
- Vous venez de terminer votre séance d'exercices.
243
+ Vous venez de terminer votre séance d'exercices relive à la régression multiple .
247
244
248
245
``` {r comm_noscore, echo=FALSE}
249
246
question_text(
0 commit comments