BioDataScience2::learnr_setup() SciViews::R("model", lang = "fr")
BioDataScience2::learnr_banner()
BioDataScience2::learnr_server(input, output, session)
set.seed(42) x <- seq(from = 0, to = 25, by = 0.25) a <- x*1 + 10 + rnorm(length(x), sd = 0.5) b <- x*1.2 + 7 + rnorm(length(x), sd = 0.5) c <- x*1.4 + 6 + rnorm(length(x), sd = 0.5) area <- as.factor(rep(c("a", "b", "c"), each = length(x))) corn1 <- dtx( x = c(x, x, x), value = c(a, b, c), area = area )
Voici un nuage de points et un tableau résumé pour vous familiariser avec les données corn1
.
lm1 <- lm(data = corn1, value ~ x * area) #summary(lm1) lm1_param <- glance(lm1) lm1_result <- tidy(lm1) chart(corn1, value ~ x %col=% area) + geom_point()
skimr::skim(corn1)
Construisez un modèle linéaire (ANCOVA) pertinent pour expliquer la variable value
en fonction de x
et de area
de corn1
. Si vous souhaitez faire passer le modèle linéaire par l'origine, utilisez + 0
dans la formule, pas - 1
.
set.seed(42) x <- seq(from = 0, to = 25, by = 0.25) a <- x*1 + 10 + rnorm(length(x), sd = 0.5) b <- x*1.2 + 7 + rnorm(length(x), sd = 0.5) c <- x*1.4 + 6 + rnorm(length(x), sd = 0.5) area <- as.factor(rep(c("a", "b", "c"), each = length(x))) corn1 <- dtx( x = c(x, x, x), value = c(a, b, c), area = area )
corn1_lm <- lm(data = ___, ___) summary(corn1_lm) |> tabularise()
corn1_lm <- lm(data = DF, FORMULA) summary(corn1_lm) |> tabularise()
corn1_lm <- lm(data = DF, VAR1 ~ VAR2 * VAR3) summary(corn1_lm) |> tabularise() #### ATTENTION: Hint suivant = solution !####
## Solution ## corn1_lm <- lm(data = corn1, value ~ x * area) summary(corn1_lm) |> tabularise()
grade_code("Vous venez de réaliser votre premier modèle linéaire.")
question("Quelle est la valeur de la pente du modèle linéaire du niveau `a` de la variable `area` ?", answer(sprintf("%.3f", lm1_result$estimate[[2]]), correct = TRUE), answer(sprintf("%.3f", lm1_param$AIC)), answer(sprintf("%.3f", lm1_result$estimate[[3]])), answer(sprintf("%.3f", lm1_result$estimate[[1]])), allow_retry = TRUE, random_answer_order = TRUE)
set.seed(42) x <- seq(from = 0, to = 25, by = 0.25) a <- x*1 + 11 + rnorm(length(x), sd = 0.5) b <- x*1.2 + 11 + rnorm(length(x), sd = 0.5) c <- x*1.5 + 11 + rnorm(length(x), sd = 0.5) area <- as.factor(rep(c("a", "b", "c"), each = length(x))) corn2 <- dtx( x = c(x, x, x), value = c(a, b, c), area = area )
Voici un nuage de points et un tableau résumé pour vous familiariser avec les données corn2
.
chart(corn2, value ~ x %col=% area) + geom_point()
skimr::skim(corn2) #lm2 <- lm(data = corn2, value ~ x * area) # modèle le plus compliqué doit être simplifié #lm2 <- lm(data = corn2, value ~ x + area + x:area) lm2 <- lm(data = corn2, value ~ x + x:area) #summary(lm2) lm2_param <- glance(lm2) lm2_result <- tidy(lm2)
Construisez un modèle linéaire (ANCOVA) pertinent pour expliquer la variable value
en fonction de x
et de area
de corn2
. Si vous souhaitez faire passer le modèle linéaire par l'origine, utilisez + 0
dans la formule, pas - 1
.
set.seed(42) x <- seq(from = 0, to = 25, by = 0.25) a <- x*1 + 11 + rnorm(length(x), sd = 0.5) b <- x*1.2 + 11 + rnorm(length(x), sd = 0.5) c <- x*1.5 + 11 + rnorm(length(x), sd = 0.5) area <- as.factor(rep(c("a", "b", "c"), each = length(x))) corn2 <- dtx( x = c(x, x, x), value = c(a, b, c), area = area )
corn2_lm <- lm(data = ___, ___) summary(corn2_lm) |> tabularise()
corn2_lm <- lm(data = DF, VAR1 ~ VAR2 ___) summary(corn2_lm) |> tabularise()
corn2_lm <- lm(data = DF, VAR1 ~ VAR2 + VAR3) # ou corn2_lm <- lm(data = DF, VAR1 ~ VAR2 + VAR2:VAR3) # ou corn2_lm <- lm(data = DF, VAR1 ~ VAR2 + VAR3 + VAR2:VAR3) summary(corn2_lm) |> tabularise()
corn2_lm <- lm(data = corn2, value ~ x + area) # ou corn2_lm <- lm(data = corn2, value ~ x + x:area) # ou corn2_lm <- lm(data = corn2, value ~ x + area + x:area) summary(corn2_lm) |> tabularise() #### ATTENTION: Hint suivant = solution !####
## Solution ## corn2_lm <- lm(data = corn2, value ~ x + x:area) summary(corn2_lm) |> tabularise()
grade_code("Plus que quelques notions à vérifier pour bien maitriser le code R relatif à cette matière.")
question("Quelle est la valeur de la pente du modèle linéaire du niveau `c` de la variable `area` ?", answer(sprintf("%.3f", (lm2_result$estimate[[2]] + lm2_result$estimate[[4]])), correct = TRUE), answer(sprintf("%.3f", lm2_param$AIC)), answer(sprintf("%.3f", lm2_result$estimate[[4]])), answer(sprintf("%.3f", lm2_result$estimate[[1]])), allow_retry = TRUE, random_answer_order = TRUE)
set.seed(42) x <- seq(from = 0, to = 25, by = 0.25) a <- x*1 + 8 + rnorm(length(x), sd = 0.5) b <- x*1 + 12 + rnorm(length(x), sd = 0.5) c <- x*1 + 11 + rnorm(length(x), sd = 0.5) area <- as.factor(rep(c("a", "b", "c"), each = length(x))) corn3 <- dtx( x = c(x, x, x), value = c(a, b, c), area = area )
Voici un nuage de points et un tableau résumé pour vous familiariser avec les données corn3
.
#lm3 <- lm(data = corn3, value ~ x*area) #lm3 <- lm(data = corn3, value ~ x + area + x:area) lm3 <- lm(data = corn3, value ~ x + area) #summary(lm3) lm3_param <- glance(lm3) lm3_result <- tidy(lm3) chart(corn3, value ~ x %col=%area) + geom_point()
skimr::skim(corn3)
Construisez un modèle linéaire (ANCOVA) pertinent pour expliquer la variable value
en fonction de x
et de area
de corn3
. Si vous souhaitez faire passer le modèle linéaire par l'origine, utilisez + 0
dans la formule, pas - 1
.
set.seed(42) x <- seq(from = 0, to = 25, by = 0.25) a <- x*1 + 8 + rnorm(length(x), sd = 0.5) b <- x*1 + 12 + rnorm(length(x), sd = 0.5) c <- x*1 + 11 + rnorm(length(x), sd = 0.5) area <- as.factor(rep(c("a", "b", "c"), each = length(x))) corn3 <- dtx( x = c(x, x, x), value = c(a, b, c), area = area )
corn3_lm <- lm(data = ___, ___) summary(corn3_lm) |> tabularise()
corn3_lm <- lm(data = DF, VAR1 ~VAR2 ___) summary(corn3_lm) |> tabularise()
corn3_lm <- lm(data = DF, VAR1 ~ VAR2 + VAR3) # ou corn3_lm <- lm(data = DF, VAR1 ~ VAR2 + VAR2:VAR3) # ou corn3_lm <- lm(data = DF, VAR1 ~ VAR2 + VAR3 + VAR2:VAR3) summary(corn3_lm) |> tabularise()
corn3_lm <- lm(data = corn3, value ~ x + area) # ou corn3_lm <- lm(data = corn3, value ~ x + x:area) # ou corn3_lm <- lm(data = corn3, value ~ x + area + x:area) summary(corn3_lm) |> tabularise() #### ATTENTION: Hint suivant = solution !####
## Solution ## corn3_lm <- lm(data = corn3, value ~ x + area) summary(corn3_lm) |> tabularise()
grade_code("Ici le modèle n'a pas d'interactions et les pentes sont toutes considérées comme les mêmes.")
question("Quelle est la valeur de l'ordonnée à l'origine du modèle linéaire pour le niveau `b` de la variable `area` ?", answer(sprintf("%.3f", (lm3_result$estimate[[1]] + lm3_result$estimate[[3]])), correct = TRUE), answer(sprintf("%.3f", lm3_param$AIC)), answer(sprintf("%.3f", lm3_result$estimate[[4]])), answer(sprintf("%.3f", lm3_result$estimate[[1]])), allow_retry = TRUE, random_answer_order = TRUE)
set.seed(42) x <- seq(from = 0, to = 25, by = 0.25) a <- x*1 + rnorm(length(x), sd = 0.5) b <- x*1.5 + rnorm(length(x), sd = 0.5) c <- x*1.2 + rnorm(length(x), sd = 0.5) area <- as.factor(rep(c("a", "b", "c"), each = length(x))) corn4 <- dtx( x = c(x, x, x), value = c(a, b, c), area = area )
Voici un nuage de points et un tableau résumé pour vous familiariser avec les données corn4
.
#lm4 <- lm(data = corn4, value ~ x * area) #lm4 <- lm(data = corn4, value ~ x * area + 0) lm4 <- lm(data = corn4, value ~ x + x:area - 1) #summary(lm4) lm4_param <- glance(lm4) lm4_result <- tidy(lm4) chart(corn4, value ~ x %col=%area) + geom_point()
skimr::skim(corn4)
Construisez un modèle linéaire (ANCOVA) pertinent pour expliquer la variable value
en fonction de x
et de area
de corn4
. Si vous souhaitez faire passer le modèle linéaire par l'origine, utilisez + 0
dans la formule, pas - 1
.
set.seed(42) x <- seq(from = 0, to = 25, by = 0.25) a <- x*1 + rnorm(length(x), sd = 0.5) b <- x*1.5 + rnorm(length(x), sd = 0.5) c <- x*1.2 + rnorm(length(x), sd = 0.5) area <- as.factor(rep(c("a", "b", "c"), each = length(x))) corn4 <- dtx( x = c(x, x, x), value = c(a, b, c), area = area )
corn4_lm <- lm(data = ___, ___) summary(corn4_lm) |> tabularise()
corn4_lm <- lm(data = DF, VAR1 ~ Var2 ___) summary(corn4_lm) |> tabularise()
corn4_lm <- lm(data = DF, VAR1 ~ VAR2 + VAR2:VAR3 ___) summary(corn4_lm) |> tabularise()
corn4_lm <- lm(data = corn4, value ~ x + x:area ___) summary(corn4_lm) |> tabularise() #### ATTENTION: Hint suivant = solution !####
## Solution ## corn4_lm <- lm(data = corn4, value ~ x + x:area + 0) summary(corn4_lm) |> tabularise()
grade_code("Cette fois-ci, l'ordonnée à l'origine est forcée à zéro pour toutes les droites.")
question("Quelle est la valeur de l'ordonnée à l'origine du modèle linéaire pour le niveau `b` de la variable `area` ?", answer(sprintf("%.3f", 0), correct = TRUE), answer(sprintf("%.3f", lm4_param$AIC)), answer(sprintf("%.3f", lm4_result$estimate[[3]])), answer(sprintf("%.3f", lm4_result$estimate[[2]])), allow_retry = TRUE, random_answer_order = TRUE)
Vous venez de terminer votre séance d'exercices qui vise à vérifier que vous avez bien compris les différentes variantes du modèle linéaire de type ANCOVA, ainsi que le code R pour ajuster ces modèles.
question_text( "Laissez-nous vos impressions sur ce learnr", answer("", TRUE, message = "Pas de commentaires... C'est bien aussi."), incorrect = "Vos commentaires sont enregistrés.", placeholder = "Entrez vos commentaires ici...", allow_retry = TRUE )
Add the following code to your website.
For more information on customizing the embed code, read Embedding Snippets.