BioDataScience2::learnr_setup() SciViews::R("model", lang = "fr") set.seed(42) tumor <- dtx( time = seq(1, 60, by = 1), volume = SSgompertz(time, Asym = 8, b2 = 11, b3 = 0.9) + rnorm(length(time), 0, 0.05) )
BioDataScience2::learnr_banner()
BioDataScience2::learnr_server(input, output, session)
Réalisez une régression non linéaire sur le jeu de données df1
de la variable y
en fonction de la variable t
.
exponent <- function(x, y0, k) y0 * exp(k * x) set.seed(42) df1 <- dtx( t = seq(0.3, 3, by = 0.1), y = exponent(t, y0 = 1.5, k = 1.1) + rnorm(n = length(t), sd = 0.3) )
Vous avez à votre disposition :
chart(data = df1, formula = y ~ t) + geom_point()
exponent <- function(x, y0, k) y0 * exp(k * x)
Fixez vos paramètres de départ à 1 pour y0
et à 0.5 pour k
et affichez les différentes étapes du calcul itératif.
exponent <- function(x, y0, k) y0 * exp(k * x) set.seed(42) df1 <- dtx( t = seq(0.3, 3, by = 0.1), y = exponent(t, y0 = 1.5, k = 1.1) + rnorm(n = length(t), sd = 0.3) )
expo <- ___(data = ___, ___ ~ ___(t, ___, ___), start = list(___ = ___, ___ = ___), trace = TRUE) chart(___) summary(___)
expo <- nls(data = df1, y ~ exponent(t, ___, ___), start = list(y0 = ___, k = ___), trace = TRUE) chart(___) summary(___) #### ATTENTION: Hint suivant = solution !####
## Solution ## expo <- nls(data = df1, y ~ exponent(t, y0, k), start = list(y0 = 1, k = 0.5), trace = TRUE) chart(expo) summary(expo)
grade_code("C'est votre premier modèle non linéaire... et certainement pas le dernier.")
Des chercheurs en cancérologie essayent de modéliser la croissance d'une tumeur. Pour cela, ils ont mesuré l'évolution du volume de la tumeur au cours du temps. Ils obtiennent le graphique suivant :
chart(data = tumor, formula = volume ~ time) + geom_point() + labs(x = "Temps [Jours]", y = "Volume tumoral [10^9 µm^3]")
Aidez-les en réalisant les différents modèles proposés ci-dessous et sélectionnez le meilleur.
A partir du jeu de données tumor
, modélisez la croissance tumorale (volume
) en fonction du temps (time
) en utilisant une courbe logistique. Calculez le critère d'Akaïke pour votre modèle.
logis <- nls(data = ___, ___ ~ ___(___, ___, ___, ___)) chart(___) summary(___) ___(___)
logis <- nls(data = tumor, volume ~ SSlogis(time, ___, ___, ___)) chart(___) summary(___) ___(logis) #### ATTENTION: Hint suivant = solution !####
## Solution ## logis <- nls(data = tumor, volume ~ SSlogis(time, Asym, xmid, scal)) chart(logis) summary(logis) AIC(logis)
grade_code("Essayons un autre modèle pour voir si l'on peut faire mieux.")
A partir du jeu de données tumor
, modélisez la croissance tumorale (volume
) en fonction du temps (time
) en utilisant le modèle de Gompertz. Calculez le critère d'Akaïke pour votre modèle.
gomp <- nls(data = ___, ___ ~ ___(___, ___, ___, ___)) chart(___) summary(___) ___(___)
gomp <- nls(data = tumor, volume ~ SSgompertz(time, ___, ___, ___)) chart(___) summary(___) ___(gomp) #### ATTENTION: Hint suivant = solution !####
## Solution ## gomp <- nls(data = tumor, volume ~ SSgompertz(time, Asym, b2, b3)) chart(gomp) summary(gomp) AIC(gomp)
grade_code("Et si on en testait un dernier...")
A partir du jeu de données tumor
, modélisez la croissance tumorale (volume
) en fonction du temps (time
) en utilisant le modèle de Weibull. Calculez le critère d'Akaïke pour votre modèle.
wb <- nls(data = ___, ___ ~ ___(___, ___, ___, ___, ___)) chart(___) summary(___) ___(___)
wb <- nls(data = tumor, volume ~ SSweibull(time, ___, ___, ___, ___)) chart(___) summary(___) ___(wb) #### ATTENTION: Hint suivant = solution !####
## Solution ## wb <- nls(data = tumor, volume ~ SSweibull(time, Asym, Drop, lrc, pwr)) chart(wb) summary(wb) AIC(wb)
grade_code("Ce modèle s'ajuste aussi dans ces données.")
question("Quelle est le meilleur modèle ?", answer("Modèle de Gompertz", correct = TRUE), answer("Courbe logistique"), answer("Modèle de von Bertalanffy"), allow_retry = TRUE, random_answer_order = TRUE)
Vous venez de terminer votre séance d'exercices relative à la régression non linéaire. L'utilisation de modèles 'selfStart' rend les calculs bien plus faciles dans R. La difficulté reste, comme toujours, de choisir le bon modèle.
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.