@@ -4,7 +4,7 @@ author: "Guyliann Engels & Philippe Grosjean"
44description : " **SDD II Module 2** Régression linéaire multiple."
55tutorial :
66 id : " B02La_reg_multi"
7- version : 2.2.0 /7
7+ version : 2.2.1 /7
88output :
99 learnr::tutorial :
1010 progressive : true
@@ -29,56 +29,59 @@ BioDataScience2::learnr_server(input, output, session)
2929
3030## Objectifs
3131
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 ` .
3333- Maîtriser la régression linéaire multiple dans R avec la fonction ` lm() ` .
3434
3535## Régression linéaire
3636
3737Réalisez une régression linéaire simple sur le jeu de données ` df1 ` de la variable ` y ` en fonction de la variable ` x ` .
3838
3939``` {r reglin-init}
40- # edition de l'exercice
40+ # Edition de l'exercice
4141set.seed(42)
4242
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
4745
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)
5049
5150df1 <- 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+ )
5454
55- lm_lin <- lm(df1, formula = y ~ x - 1 )
55+ lm_lin <- lm(data = df1, y ~ x)
5656lm_lin_param <- broom::glance(lm_lin)
5757lm_lin_result <- broom::tidy(lm_lin)
5858```
5959
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\ :
6161
6262``` {r}
63- chart(df1, formula= y ~ x) +
63+ chart(data = df1, y ~ x) +
6464 geom_point()
6565```
6666
6767``` {r reglin-prep}
68- # edition de l'exercice
68+ # Edition de l'exercice
6969set.seed(42)
7070
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
7573
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)
7877
7978df1 <- 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)
8285```
8386
8487💬 ** Un snippet peut vous aider à réaliser cet exercice.**
@@ -89,78 +92,73 @@ summary(lm. <- lm(data = ___, ___ ~ ___))
8992
9093``` {r reglin_h2-hint}
9194summary(lm. <- lm(data = DF, FORMULA))
95+
9296#### ATTENTION: Hint suivant = solution !####
9397```
9498
9599``` {r reglin_h2-solution}
96100## Solution ##
97- summary(lm. <- lm(data = df1, y ~ x + 0 ))
101+ summary(lm. <- lm(data = df1, y ~ x))
98102```
99103
100104``` {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 .")
102106```
103107
104- Suite à votre analyse répondez aux questions suivantes :
108+ Suite à votre analyse répondez aux questions suivantes\ :
105109
106110``` {r qu_reglin}
107111quiz(
108112 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 )),
111115 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 ])),
113117 answer(sprintf("%.2f", lm_lin_param$r.squared[1])),
114118 allow_retry = TRUE, random_answer_order = TRUE
115- ),
119+ ),
116120 question(text = "Quelle est la valeur de la pente ?",
117121 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),
119123 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])),
121125 answer(sprintf("%.2f", lm_lin_param$r.squared[1])),
122126 allow_retry = TRUE, random_answer_order = TRUE
123- ),
127+ ),
124128 question(text = "Quelle est la fraction de la variance exprimée par la régression linéaire ?",
125129 answer(sprintf("%.3f", lm_lin_param$r.squared), correct = TRUE),
126130 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) )),
128132 answer(sprintf("%.3f", lm_lin_result$estimate[1])),
129133 allow_retry = TRUE, random_answer_order = TRUE
130- )
134+ )
131135)
132136```
133137
134138## Régression linéaire multiple
135139
136140``` {r regmulti-init}
137- # edition de l'exercice
138- set.seed(42 )
141+ # Edition de l'exercice
142+ set.seed(381 )
139143
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)
142147
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))
151153
152154df2 <- tibble::tibble(
153155 x = x,
154156 x0 = reg_lin_rand(x = x, a = 1.26, b = 2, random = 3.5),
155157 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))
162160
163- lm_mult <- lm(data = df2, formula = y ~ x + x1 )
161+ lm_mult <- lm(data = df2, y ~ x + x1)
164162lm_mult_coef <- broom::tidy(lm_mult)
165163lm_mult_param <- broom::glance(lm_mult)
166164```
@@ -173,30 +171,29 @@ summary(df2)
173171Ré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 ` .
174172
175173``` {r regmulti-prep}
176- # edition de l'exercice
177- set.seed(42 )
174+ # Edition de l'exercice
175+ set.seed(381 )
178176
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)
181180
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))
190186
191187df2 <- tibble::tibble(
192188 x = x,
193189 x0 = reg_lin_rand(x = x, a = 1.26, b = 2, random = 3.5),
194190 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)
200197```
201198
202199💬 ** Un snippet peut vous aider à réaliser cet exercice.**
@@ -216,10 +213,10 @@ summary(lm. <- lm(data = df2, y ~ x + x1))
216213```
217214
218215``` {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 !")
220217```
221218
222- Suite à votre analyse répondez aux questions suivantes :
219+ Suite à votre analyse répondez aux questions suivantes\ :
223220
224221``` {r qu_regmulti}
225222quiz(
@@ -230,20 +227,20 @@ quiz(
230227 answer(sprintf("%.2f", lm_mult_param$AIC[1])),
231228 answer(sprintf("%.2f", lm_mult_param$r.squared[1])),
232229 allow_retry = TRUE, random_answer_order = TRUE
233- ),
230+ ),
234231 question(text = "Quelle est la fraction de la variance exprimée par la régression linéaire ?",
235232 answer(sprintf("%.3f", lm_mult_param$adj.r.squared), correct = TRUE),
236233 answer(sprintf("%.3f", lm_mult_param$r.squared)),
237234 answer(sprintf("%.3f", lm_mult_param$df)),
238235 answer(sprintf("%.3f", lm_mult_coef$estimate[1])),
239236 allow_retry = TRUE, random_answer_order = TRUE
240- )
237+ )
241238)
242239```
243240
244241## Conclusion
245242
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 .
247244
248245``` {r comm_noscore, echo=FALSE}
249246question_text(
0 commit comments