Science des données biologiques 2

Réalisé par le service d'Écologie numérique des Milieux aquatiques, Université de Mons (Belgique)

Préambule

Si vous n’avez jamais utilisé de tutoriel “learnr”, familiarisez-vous d’abord avec son interface ici.

Ne vous trompez pas dans votre adresse mail et votre identifiant Github

N’oubliez pas de soumettre votre réponse après chaque exercice

Conformément au RGPD (Règlement Général sur la Protection des Données), nous sommes tenus de vous informer de ce que vos résultats seront collecté afin de suivre votre progression. Les données seront enregistrées au nom de l’utilisateur apparaissant en haut de cette page. Corrigez si nécessaire ! En utilisant ce tutoriel, vous marquez expressément votre accord pour que ces données puissent être collectées par vos enseignants et utilisées pour vous aider et vous évaluer. Après avoir été anonymisées, ces données pourront également servir à des études globales dans un cadre scientifique et/ou éducatif uniquement.

Corrélation

Vous avez à disposition le jeu de données df qui comprend les 4 variables suivantes : x, y, z, a.

  • Réalisez une matrice de correlation avec l’indice de Pearson.
set.seed(43)
# duplicated chunk : corr1-init
min <- 5
max <- 15

df <- tibble(
  x = seq(from = min, to = max, by = 0.25),
  y = x*2 + rnorm(sd= 0.5, n = length(x)),
  z = 2^x + rnorm(sd= 50, n = length(x)),
  a = sin(x) + rnorm(sd = 0.25,  n = length(x))
)

#correlation(df[1:4])
#correlation(df[1:4], method = "spearman")
# snippet mis à disposition
correlation(DF[, INDEX_EXPRESSION], use = "complete.obs", method = "pearson")
correlation(df[, INDEX_EXPRESSION], use = "complete.obs", method = "pearson")
correlation(df[, 1:4], use = "complete.obs", method = "pearson")
# TODO

Répondez à la question ci-dessous

  • Réalisez une matrice de correlation avec la méthode de Spearman
# snippet mis à disposition
correlation(DF[, INDEX_EXPRESSION], use = "complete.obs", method = "pearson")
correlation(df[, INDEX_EXPRESSION], use = "complete.obs", method = "pearson")
correlation(df[, 1:4], use = "complete.obs", method = "spearman")
# TODO

Répondez à la question ci-dessous

  • Reproduisez le graphique ci-dessous en vous basant sur vos matrices réalisées précédements

plot(correlation(df[, 1:4], use = "complete.obs", method = "spearman"))
plot(correlation(df[, 1:4], use = "complete.obs", method = "spearman"), type = "upper")
# TODO

Régression linéaire

Réalisez la régression linéaire de value en fonction de x sur le jeu de données mais. Vous avez à votre dispositon un nuage de points et un résumé des données pour avoir une première connaissance de données.

       x              y                z                  a          
 Min.   : 5.0   Min.   : 9.713   Min.   :   -7.65   Min.   :-1.3572  
 1st Qu.: 7.5   1st Qu.:15.017   1st Qu.:  201.05   1st Qu.:-0.5209  
 Median :10.0   Median :19.920   Median : 1025.35   Median : 0.2750  
 Mean   :10.0   Mean   :20.052   Mean   : 5014.79   Mean   : 0.1406  
 3rd Qu.:12.5   3rd Qu.:25.728   3rd Qu.: 5822.55   3rd Qu.: 0.8179  
 Max.   :15.0   Max.   :30.941   Max.   :32734.84   Max.   : 1.3658  
set.seed(42)
x <- seq(from = 5, to = 15, by = 0.25)
  
a <- x*1 + 3 + rnorm(sd = 0.5, n = length(x))
b <- x*1.1 + 3 + rnorm(sd = 0.5, n = length(x))
c <- x*1.2 + 3 + rnorm(sd = 0.5, n = length(x))

area <- as.factor(rep(c("a", "b", "c"), each = length(x)))

mais <- tibble(
  x = c(x,x,x),
  value = c(a,b,c),
  area = area
)
#snippet
summary(lm. <- lm(data = DF, FORMULA))
summary(lm. <- lm(data = mais, value ~ x))
# TODO 

Suite à votre analyse répondez aux questions suivantes

Quiz

Outils de diagnostic 1

Vous avez à votre disposition un jeu de données df1 qui comprend les variable suivante a et b.

Réalisez un régression linéaire de la variable a en fonciton de la variable b avec la fonction lm() et réalisez ensuite le premier graphique de l’analyse des résidus.

set.seed(42)
x <- seq(from = 5, to = 50, by = 0.25)
a <- x + rnorm(sd = 3, n = length(x))
b <- a*1.25 + 3 + rnorm(sd = 3, n = length(x))

df1 <- tibble(
  a = a,
  b = b
)

#chart(df1, a ~ b) +
#  geom_point()
# résumé des données
summary(df1)
#
#
# ensemble des snippets utiles 
# ...models 
#####
summary(lm. <- lm(data = DF, FORMULA))
#####
summary(lm. <- lm(data = DF, YNUM ~ XNUM))
lm. %>.% (function (lm, model = lm[["model"]], vars = names(model))
  chart(model, aes_string(x = vars[2], y = vars[1])) +
  geom_point() +
  stat_smooth(method = "lm", formula = y ~ x))(.)
#####
summary(lm. <- lm(data = DF, YNUM ~ XNUM + 0))
lm. %>.% (function (lm, model = lm[["model"]], vars = names(model))
  chart(model, aes_string(x = vars[2], y = vars[1])) +
  geom_point() +
  stat_smooth(method = "lm", formula = y ~ x + 0))(.)
#####
#plot(lm., which = 1)
lm. %>.%
  chart(broom::augment(.), .resid ~ .fitted) +
  geom_point() +
  geom_hline(yintercept = 0) +
  geom_smooth(se = FALSE, method = "loess", formula = y ~ x) +
  labs(x = "Fitted values", y = "Residuals") +
  ggtitle("Residuals vs Fitted")
#####
#plot(lm., which = 2)
lm. %>.%
  chart(broom::augment(.), aes(sample = .std.resid)) +
  geom_qq() +
  geom_qq_line(colour = "darkgray") +
  labs(x = "Theoretical quantiles", y = "Standardized residuals") +
  ggtitle("Normal Q-Q")
#####
#plot(lm., which = 3)
lm. %>.%
  chart(broom::augment(.), sqrt(abs(.std.resid)) ~ .fitted) +
  geom_point() +
  geom_smooth(se = FALSE, method = "loess", formula = y ~ x) +
  labs(x = "Fitted values",
    y = expression(bold(sqrt(abs("Standardized residuals"))))) +
  ggtitle("Scale-Location")
# il faut d'abord réaliser le modèle
summary(lm. <- lm(data = DF, FORMULA))
# il faut ensuite réaliser le premier graphique de l'analyse des résidus
#
# CHoix des bons snippets
# il faut d'abord réaliser le modèle
summary(lm. <- lm(data = DF, FORMULA))
# il faut ensuite réaliser le premier graphique de l'analyse des résidus
#plot(lm., which = 1)
lm. %>.%
  chart(broom::augment(.), .resid ~ .fitted) +
  geom_point() +
  geom_hline(yintercept = 0) +
  geom_smooth(se = FALSE, method = "loess", formula = y ~ x) +
  labs(x = "Fitted values", y = "Residuals") +
  ggtitle("Residuals vs Fitted")
# il faut d'abord réaliser le modèle
summary(lm. <- lm(data = df1, a ~ b))
# il faut ensuite réaliser le premier graphique de l'analyse des résidus
#plot(lm., which = 1)
lm. %>.%
  chart(broom::augment(.), .resid ~ .fitted) +
  geom_point() +
  geom_hline(yintercept = 0) +
  geom_smooth(se = FALSE, method = "loess", formula = y ~ x) +
  labs(x = "Fitted values", y = "Residuals") +
  ggtitle("Residuals vs Fitted")
# TODO
Quiz

Outils de diagnostic 2

Vous avez à votre disposition un jeu de données df2 qui comprend les variable suivante a et b.

Réalisez un régression linéaire de la variable a en fonciton de la variable b avec la fonction lm() et réalisez ensuite le second graphique de l’analyse des résidus.

set.seed(42)
x <- seq(from = 5, to = 15, by = 0.25)
  
a1 <- x*1 + 3 + rnorm(sd = 0.5, n = length(x))
b1 <- x*1.1 + 3 + rnorm(sd = 0.5, n = length(x))
c1 <- x*0.7 + 3 + rnorm(sd = 0.5, n = length(x))


df2 <- tibble(
  a = c(x,x,x),
  b = c(a1,b1,c1),
)

#chart(df1, a ~ b) +
#  geom_point()
# résumé des données
summary(df2)
#
#
# ensemble des snippets utiles 
# ...models 
#####
summary(lm. <- lm(data = DF, FORMULA))
#####
summary(lm. <- lm(data = DF, YNUM ~ XNUM))
lm. %>.% (function (lm, model = lm[["model"]], vars = names(model))
  chart(model, aes_string(x = vars[2], y = vars[1])) +
  geom_point() +
  stat_smooth(method = "lm", formula = y ~ x))(.)
#####
summary(lm. <- lm(data = DF, YNUM ~ XNUM + 0))
lm. %>.% (function (lm, model = lm[["model"]], vars = names(model))
  chart(model, aes_string(x = vars[2], y = vars[1])) +
  geom_point() +
  stat_smooth(method = "lm", formula = y ~ x + 0))(.)
#####
#plot(lm., which = 1)
lm. %>.%
  chart(broom::augment(.), .resid ~ .fitted) +
  geom_point() +
  geom_hline(yintercept = 0) +
  geom_smooth(se = FALSE, method = "loess", formula = y ~ x) +
  labs(x = "Fitted values", y = "Residuals") +
  ggtitle("Residuals vs Fitted")
#####
#plot(lm., which = 2)
lm. %>.%
  chart(broom::augment(.), aes(sample = .std.resid)) +
  geom_qq() +
  geom_qq_line(colour = "darkgray") +
  labs(x = "Theoretical quantiles", y = "Standardized residuals") +
  ggtitle("Normal Q-Q")
#####
#plot(lm., which = 3)
lm. %>.%
  chart(broom::augment(.), sqrt(abs(.std.resid)) ~ .fitted) +
  geom_point() +
  geom_smooth(se = FALSE, method = "loess", formula = y ~ x) +
  labs(x = "Fitted values",
    y = expression(bold(sqrt(abs("Standardized residuals"))))) +
  ggtitle("Scale-Location")
# il faut d'abord réaliser le modèle
summary(lm. <- lm(data = DF, FORMULA))
# il faut ensuite réaliser le premier graphique de l'analyse des résidus
#
# CHoix des bons snippets
# il faut d'abord réaliser le modèle
summary(lm. <- lm(data = DF, FORMULA))
# il faut ensuite réaliser le premier graphique de l'analyse des résidus
#plot(lm., which = 2)
lm. %>.%
  chart(broom::augment(.), aes(sample = .std.resid)) +
  geom_qq() +
  geom_qq_line(colour = "darkgray") +
  labs(x = "Theoretical quantiles", y = "Standardized residuals") +
  ggtitle("Normal Q-Q")
# il faut d'abord réaliser le modèle
summary(lm. <- lm(data = df2, a ~ b))
# il faut ensuite réaliser le premier graphique de l'analyse des résidus
#plot(lm., which = 2)
lm. %>.%
  chart(broom::augment(.), aes(sample = .std.resid)) +
  geom_qq() +
  geom_qq_line(colour = "darkgray") +
  labs(x = "Theoretical quantiles", y = "Standardized residuals") +
  ggtitle("Normal Q-Q")
# TODO

Outils de diagnostic 3

Vous avez à votre disposition un jeu de données df3 qui comprend les variable suivante a et b.

Réalisez un régression linéaire de la variable a en fonciton de la variable b avec la fonction lm() et réalisez ensuite le second graphique de l’analyse des résidus.

set.seed(42)
x <- seq(from = 5, to = 15, by = 0.25)
  
a1 <- x*1 + 4.5 + rnorm(sd = 0.5, n = length(x))
b1 <- x*1 + 2.5 + rnorm(sd = 0.5, n = length(x))
c1 <- x*0.7 + 3 + rnorm(sd = 0.5, n = length(x))


df3 <- tibble(
  a = c(x,x,x),
  b = c(a1,b1,c1),
)
# résumé des données
summary(df3)
#
#
# ensemble des snippets utiles 
# ...models 
#####
summary(lm. <- lm(data = DF, FORMULA))
#####
summary(lm. <- lm(data = DF, YNUM ~ XNUM))
lm. %>.% (function (lm, model = lm[["model"]], vars = names(model))
  chart(model, aes_string(x = vars[2], y = vars[1])) +
  geom_point() +
  stat_smooth(method = "lm", formula = y ~ x))(.)
#####
summary(lm. <- lm(data = DF, YNUM ~ XNUM + 0))
lm. %>.% (function (lm, model = lm[["model"]], vars = names(model))
  chart(model, aes_string(x = vars[2], y = vars[1])) +
  geom_point() +
  stat_smooth(method = "lm", formula = y ~ x + 0))(.)
#####
#plot(lm., which = 1)
lm. %>.%
  chart(broom::augment(.), .resid ~ .fitted) +
  geom_point() +
  geom_hline(yintercept = 0) +
  geom_smooth(se = FALSE, method = "loess", formula = y ~ x) +
  labs(x = "Fitted values", y = "Residuals") +
  ggtitle("Residuals vs Fitted")
#####
#plot(lm., which = 2)
lm. %>.%
  chart(broom::augment(.), aes(sample = .std.resid)) +
  geom_qq() +
  geom_qq_line(colour = "darkgray") +
  labs(x = "Theoretical quantiles", y = "Standardized residuals") +
  ggtitle("Normal Q-Q")
#####
#plot(lm., which = 3)
lm. %>.%
  chart(broom::augment(.), sqrt(abs(.std.resid)) ~ .fitted) +
  geom_point() +
  geom_smooth(se = FALSE, method = "loess", formula = y ~ x) +
  labs(x = "Fitted values",
    y = expression(bold(sqrt(abs("Standardized residuals"))))) +
  ggtitle("Scale-Location")
# il faut d'abord réaliser le modèle
summary(lm. <- lm(data = DF, FORMULA))
# il faut ensuite réaliser le premier graphique de l'analyse des résidus
#
# CHoix des bons snippets
# il faut d'abord réaliser le modèle
summary(lm. <- lm(data = DF, FORMULA))
# il faut ensuite réaliser le premier graphique de l'analyse des résidus
#plot(lm., which = 3)
lm. %>.%
  chart(broom::augment(.), sqrt(abs(.std.resid)) ~ .fitted) +
  geom_point() +
  geom_smooth(se = FALSE, method = "loess", formula = y ~ x) +
  labs(x = "Fitted values",
    y = expression(bold(sqrt(abs("Standardized residuals"))))) +
  ggtitle("Scale-Location")
# il faut d'abord réaliser le modèle
summary(lm. <- lm(data = df3, a ~ b))
# il faut ensuite réaliser le premier graphique de l'analyse des résidus
#plot(lm., which = 3)
lm. %>.%
  chart(broom::augment(.), sqrt(abs(.std.resid)) ~ .fitted) +
  geom_point() +
  geom_smooth(se = FALSE, method = "loess", formula = y ~ x) +
  labs(x = "Fitted values",
    y = expression(bold(sqrt(abs("Standardized residuals"))))) +
  ggtitle("Scale-Location")
# TODO
Quiz

Conclusion

Vous venez de terminer votre séance d’exercice.

Laissez nous vos impressions sur cet outil pédagogique ou expérimentez encore dans la zone ci-dessous. Rappelez-vous que pour placer un commentaire dans une zone de code R, vous devez utilisez un dièse (#) devant vos phrases.

# Ajout de commentaires 
# ...
# Not yet...

Guyliann Engels & Philippe Grosjean