Science des données biologiques

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.

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és 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.

Objectifs

  • Appréhender les lois de distributions

Distribution binomiale

Répondez aux questions suivantes avec une calculatrice.

Quiz

Employez les snippets pour produire la table qui retourne l’ensemble des valeurs possibles pour j allant de 1 à n. Le snippet est .ibtable et renvoit ces instructions.

Veuillez copier les instructions proposées ci-dessous, les snippets ne sont pas accessible dans les learnr

(.table <- data.frame(success = 0:N_TRIALS,
    probability = dbinom(0:N_TRIALS, size = N_TRIALS, prob = SUCCESS_PROB)))
(.table <- data.frame(success = 0:10,
    probability = dbinom(0:10, size = 10, prob = 0.5)))
#TODO

Employez les snippets afin de répondre à la question posée lors du quiz : “Calculer la probabilité d’obtenir au maximum 3 fois pile lors de 10 lancés de pièce ?”

Le snippet est .ibproba et renvoit les instructions suivantes :

pbinom(QUANTILES, size = N_TRIALS, prob = SUCCESS_PROB, lower.tail = TRUE)
pbinom(3, size = 10, prob = 0.5, lower.tail = TRUE)
#TODO

Employez les snippets afin de répondre à la question : Calculez la probabilité d’obtenir 4 fois pile lors de 10 lancés de pièce ? Attention, la pièce utilisée est légérement modifiée pour favoriser le côté pile. La probabilité d’obtenir pile n’est plus de 0.5 mais de 0.75

Le snippet est .ibproba et renvoit les instructions suivantes :

pbinom(QUANTILES, size = N_TRIALS, prob = SUCCESS_PROB, lower.tail = TRUE)
pbinom(4, size = 10, prob = 0.75, lower.tail = TRUE) - pbinom(3, size = 10, prob = 0.75, lower.tail = TRUE)
#TODO

Employez les snippets afin de représentez le graphique de densité lié à l’exercice ci-dessus :

Le snippet est .ibdens et renvoit les instructions suivantes :

plot(0:N_TRIALS, dbinom(0:N_TRIALS, size = N_TRIALS, prob = SUCCESS_PROB), type = "h",
  col = "black", xlab = "Quantiles", ylab = "Probability mass")
plot(0:10, dbinom(0:10, size = 10, prob = 0.75), type = "h",
  col = "black", xlab = "Quantiles", ylab = "Probability mass")
#TODO

Distribution de poisson

Répondez à la question suivante avec une calculatrice.

Quiz

Représentez la table de probabilités lié à l’exercice ci-dessus. Le snippet est .iptable et renvoit les instructions suivantes :

(.table <- data.frame(occurences = 0:(MEAN_OCCURENCES+20), probability = dpois(0:(MEAN_OCCURENCES+20),
  lambda = MEAN_OCCURENCES)))
(.table <- data.frame(occurences = 0:(3+20), probability = dpois(0:(3+20),
  lambda = 3)))
#TODO

Représentez le graphique de densité pour un \(\lambda = 20\). Le snippet est .ipdens et renvoit les instructions suivantes :

plot(0:(MEAN_OCCURENCES+20), dpois(0:(MEAN_OCCURENCES+20), lambda = MEAN_OCCURENCES)
     , type = "h", col = "black", xlab = "Quantiles", ylab = "Probability mass")
plot(0:(20+20), dpois(0:(20+20), lambda = 20)
     , type = "h", col = "black", xlab = "Quantiles", ylab = "Probability mass")
# TODO

Distribution normale

Employez les snippets pour représenter \(Y \sim N(10,3)\). Le snippet est .indens et renvoit les instructions suivantes :

# Normal distribution (density probability) with parameters:
.mu <- 0; .s <- 1 #  mu = .mu and sigma = .s
.col <- 1; .add <- FALSE # Plot parameters
.x <- seq(-3.5*.s+.mu, 3.5*.s+.mu, l = 1000)     # Quantiles
.d <- function (x) dnorm(x, mean = .mu, sd = .s) # Distribution function
.q <- function (p) qnorm(p, mean = .mu, sd = .s) # Quantile for lower-tail prob
.label <- bquote(N(.(.mu), .(.s)))               # Curve parameters
curve(.d(x), xlim = range(.x), xaxs = "i", n = 1000, col = .col,
  add = .add, xlab = "Quantiles", ylab = "Probability density") # Curve
abline(h = 0, col = "gray") # Baseline  
# Normal distribution (density probability) with parameters:
.mu <- 10; .s <- 3 #  mu = .mu and sigma = .s
.col <- 1; .add <- FALSE # Plot parameters
.x <- seq(-3.5*.s+.mu, 3.5*.s+.mu, l = 1000)     # Quantiles
.d <- function (x) dnorm(x, mean = .mu, sd = .s) # Distribution function
.q <- function (p) qnorm(p, mean = .mu, sd = .s) # Quantile for lower-tail prob
.label <- bquote(N(.(.mu), .(.s)))               # Curve parameters
curve(.d(x), xlim = range(.x), xaxs = "i", n = 1000, col = .col,
  add = .add, xlab = "Quantiles", ylab = "Probability density") # Curve
abline(h = 0, col = "gray") # Baseline  
# TODO

Ajoutez maintenant l’équation sur le graphique à l’aide du snippets. Le snippet est .inllabel et renvoit les instructions suivantes :

cette instruction doit être combinée avec le graphique comme le montre les instructions suivantes

# Normal distribution (density probability) with parameters:
.mu <- 0; .s <- 1 #  mu = .mu and sigma = .s
.col <- 1; .add <- FALSE # Plot parameters
.x <- seq(-3.5*.s+.mu, 3.5*.s+.mu, l = 1000)     # Quantiles
.d <- function (x) dnorm(x, mean = .mu, sd = .s) # Distribution function
.q <- function (p) qnorm(p, mean = .mu, sd = .s) # Quantile for lower-tail prob
.label <- bquote(N(.(.mu), .(.s)))               # Curve parameters
curve(.d(x), xlim = range(.x), xaxs = "i", n = 1000, col = .col,
  add = .add, xlab = "Quantiles", ylab = "Probability density") # Curve
abline(h = 0, col = "gray") # Baseline  
# add text on the plot
text(.mu-.s, .d(.mu-.s), .label, pos = 2, col = .col) # Label at left

Réalisez à nouveau le graphique demandé ci-dessus afin d’obtenir un graphique avec l’annotation. Représentez la distribution \(Y \sim N(10,3)\)

# Normal distribution (density probability) with parameters:
.mu <- 10; .s <- 3 #  mu = .mu and sigma = .s
.col <- 1; .add <- FALSE # Plot parameters
.x <- seq(-3.5*.s+.mu, 3.5*.s+.mu, l = 1000)     # Quantiles
.d <- function (x) dnorm(x, mean = .mu, sd = .s) # Distribution function
.q <- function (p) qnorm(p, mean = .mu, sd = .s) # Quantile for lower-tail prob
.label <- bquote(N(.(.mu), .(.s)))               # Curve parameters
curve(.d(x), xlim = range(.x), xaxs = "i", n = 1000, col = .col,
  add = .add, xlab = "Quantiles", ylab = "Probability density") # Curve
abline(h = 0, col = "gray") # Baseline  
# add text on the plot
text(.mu-.s, .d(.mu-.s), .label, pos = 2, col = .col) # Label at left
# TODO

Répondez aux questions suivantes, sur base de la situation : “Maïs dont la hauteur est de 145 cm en moyenne, avec un écart-type de 22 cm”.

Le snippet est .inproba et renvoit les instructions suivantes :

pnorm(QUANTILES, mean = 0, sd = 1, lower.tail = TRUE)

Calculez la probabilités d’avoir un epis de maïs de moins de 100 cm

pnorm(100, mean = 145, sd = 22, lower.tail = TRUE)
# TODO

Calculez la probabilités d’avoir un epis de maïs entre 120 et 150cm ?

pnorm(150, mean = 145, sd = 22, lower.tail = TRUE) - pnorm(120, mean = 145, sd = 22, lower.tail = TRUE)
# TODO

En partant de la distribution suivantes : \(Y \sim N(10,2.5)\), calculez le quantile correspondant à la probabilités à droite de 0.1

qnorm(PROBABILITIES, mean = 0, sd = 1, lower.tail = TRUE)
qnorm(0.1, mean = 10, sd = 2.5, lower.tail = FALSE)
#TODO

Graphique quantile-quantile

Utilisez les données provenant du jeu de données urchin_bio du package data.io.

# importation d'un ensemble de package
SciViews::R
# importation des données
(urchin <- read("urchin_bio", package = "data.io", lang = "fr"))

Réalisez un graphique quantile-quantile afin de mettre en avant, si la masse totale des oursins du jeu de données urchin_bio suit une distribution normale.

Nom du jeu de données et des variables importantes

variable <- c("urchin", names(urchin))
sample(variable)
 [1] "dry_digestive_tract" "maturity"            "test"               
 [4] "weight"              "spines"              "sex"                
 [7] "integuments"         "skeleton"            "origin"             
[10] "diameter2"           "diameter1"           "urchin"             
[13] "dry_integuments"     "dry_gonads"          "height"             
[16] "buoyant_weight"      "digestive_tract"     "lantern"            
[19] "solid_parts"         "gonads"             

Le snippet à votre disposition est .cuqqnorm

car::qqPlot(DF[["XNUM"]], distribution = "norm",
  envelope = 0.95, col = "Black", ylab = "XNUM")
car::qqPlot(urchin[["weight"]], distribution = "norm",
  envelope = 0.95, col = "Black", ylab = "Sepal.Length")
#TODO

Est ce que le variable portant sur la masse totale des oursins suit une distribution normale ?

Utilisez les données provenant du jeu de données crabs du package MASS.

# importation d'un ensemble de package
SciViews::R
# importation des données
(crabs <- read("crabs", package = "MASS", lang = "fr"))

Réalisez un graphique quantile-quantile afin de mettre en avant, si la longueur de la carapace des crabes suit une distribution normale.

Nom du jeu de données et des variables importantes

variable <- c("crabs", names(crabs))
sample(variable)
[1] "length"  "rear"    "index"   "depth"   "crabs"   "width"   "front"  
[8] "species" "sex"    
car::qqPlot(crabs[["length"]], distribution = "norm",
  envelope = 0.95, col = "Black", ylab = "Sepal.Length")
#TODO

Est ce que le variable portant sur la masse totale des oursins suit une distribution normale ?

Conclusion

Bravo! Vous venez de terminer votre séance d’exercices dans un tutoriel “learnr”.

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...

Traitement des données I

Guyliann Engels & Philippe Grosjean