|
| 1 | +--- |
| 2 | +title: "Distributions continues" |
| 3 | +author: "Guyliann Engels & Philippe Grosjean" |
| 4 | +description: "**SDD I Module 6** Calculs avec une distributions normale." |
| 5 | +tutorial: |
| 6 | + id: "A07La_distri" |
| 7 | + version: 2.1.0/5 |
| 8 | +output: |
| 9 | + learnr::tutorial: |
| 10 | + progressive: true |
| 11 | + allow_skip: true |
| 12 | +runtime: shiny_prerendered |
| 13 | +--- |
| 14 | + |
| 15 | +```{r setup, include=FALSE} |
| 16 | +BioDataScience1::learnr_setup() |
| 17 | +SciViews::R("infer") |
| 18 | +library(BioDataScience1) |
| 19 | +``` |
| 20 | + |
| 21 | +```{r, echo=FALSE} |
| 22 | +BioDataScience1::learnr_banner() |
| 23 | +``` |
| 24 | + |
| 25 | +```{r, context="server"} |
| 26 | +BioDataScience1::learnr_server(input, output, session) |
| 27 | +``` |
| 28 | + |
| 29 | +------------------------------------------------------------------------ |
| 30 | + |
| 31 | +## Objectifs |
| 32 | + |
| 33 | +La loi de distribution normale est centrale en statistiques. Ce tutoriel vous permet d'auto-évaluer vos acquis à son sujet. Vous allez : |
| 34 | + |
| 35 | +- Vérifier que vous comprenez bien la logique des calculs autour de la distribution normale |
| 36 | + |
| 37 | +- Pouvoir calculer des quantiles à partir de probabilités |
| 38 | + |
| 39 | +- Être capable de calculer des probabilités à partir de quantiles |
| 40 | + |
| 41 | + |
| 42 | +Vous devez avoir étudié le contenu du [module 6](https://wp.sciviews.org/sdd-umons/?iframe=wp.sciviews.org/sdd-umons-2024/probacorr.html) du cours SDD I, et en particulier les sections relatives à la [distribution normale](https://wp.sciviews.org/sdd-umons/?iframe=wp.sciviews.org/sdd-umons-2024/distribution-normale.html). Assurez-vous également au préalable d'être à l'aise avec le calcul des probabilités (que vous vérifiez avec le learnr `BioDataScience1::run("A06La_proba")`). |
| 43 | + |
| 44 | +## Distribution normale |
| 45 | + |
| 46 | + |
| 47 | + |
| 48 | +La distribution normale (ou Gaussienne) est appelée comme cela parce que c'est celle qui se rencontre le plus souvent. Elle s'observe à chaque fois que le résultat est la somme de petits effets aléatoires qui se combinent. Elle a une forme caractéristique, dite "en cloche". |
| 49 | + |
| 50 | +### Graphique |
| 51 | + |
| 52 | +Employez R pour représenter la densité de probabilité de la distribution $Y \sim N(10, 9)$ (attention à la différence entre la variance ici et l'écart type "sigma" qui est utilisé dans la fonction de calcul) ! |
| 53 | + |
| 54 | +<!-- 💬 **Ce code correspond au snippet `.indens`** [`.in` = (d)`i`stribution: `n`ormal]. --> |
| 55 | + |
| 56 | +```{r normal1_h2, exercise=TRUE, exercise.lines=5} |
| 57 | +N1 <- dist_normal(mu = ___, sigma = ___) |
| 58 | +___(___) + |
| 59 | + ___("Densité de probabilité") |
| 60 | +``` |
| 61 | + |
| 62 | +```{r normal1_h2-hint-1} |
| 63 | +N1 <- dist_normal(mu = ___, sigma = ___) |
| 64 | +___(___) + |
| 65 | + ___("Densité de probabilité") |
| 66 | +
|
| 67 | + #### ATTENTION: Hint suivant = solution !#### |
| 68 | +``` |
| 69 | + |
| 70 | +```{r normal1_h2-solution} |
| 71 | +## Solution ## |
| 72 | +N1 <- dist_normal(mu = 10, sigma = 3) |
| 73 | +chart(N1) + |
| 74 | + ylab("Densité de probabilité") |
| 75 | +``` |
| 76 | + |
| 77 | +```{r normal1_h2-check} |
| 78 | +grade_code("Ceci est plutôt simple à réaliser une fois que l'on se rappelle que l'écart type \"sigma\" est la racine carrée dce la variance. La ligne avec `ylab()` n'est là que pour s'assurer d'avoir le label de l'axe en français.") |
| 79 | +``` |
| 80 | + |
| 81 | +Ajoutez maintenant sur le graphique une aire en rouge délimitée entre les quantiles 8 et 12 et annotez-là en son centre avec l'indication "P[8, 12]" en rouge. Pour ajouter une aire colorée sous la courbe, vous utilisez `geom_funfill()` avec l'argument `fun = dfun(...)` pour un graphique de densité de probabilité ou `fun = cdfun(...)` pour un graphique de densité de probabilité cumulée. Enfin pour annoter le graphique avec du texte, vous utilisez `annotate("text", ...)`. |
| 82 | + |
| 83 | +<!-- 💬 **Le code ajouté en dernière ligne après celui qui génère le graphique correspond au snippet `.inllabel`.** --> |
| 84 | + |
| 85 | +```{r normal2_h2, exercise=TRUE, exercise.lines=5} |
| 86 | +N1 <- dist_normal(mu = 10, sigma = 3) |
| 87 | +chart(N1) + |
| 88 | + ylab("Densité de probabilité") + |
| 89 | + ___(fun = ___(N1), from = ___, to = ___) + |
| 90 | + ___("text", x = ___, y = 0.06, label = "P[8, 12]", col = "red") |
| 91 | +``` |
| 92 | + |
| 93 | +```{r normal2_h2-hint-1} |
| 94 | +N1 <- dist_normal(mu = 10, sigma = 3) |
| 95 | +chart(N1) + |
| 96 | + ylab("Densité de probabilité") + |
| 97 | + geom_funfill(fun = ___(N1), from = ___, to = ___) + |
| 98 | + annotate("text", x = ___, y = 0.06, label = "P[8, 12]", col = "red") |
| 99 | +
|
| 100 | + #### ATTENTION: Hint suivant = solution !#### |
| 101 | +``` |
| 102 | + |
| 103 | +```{r normal2_h2-solution} |
| 104 | +## Solution ## |
| 105 | +N1 <- dist_normal(mu = 10, sigma = 3) |
| 106 | +chart(N1) + |
| 107 | + ylab("Densité de probabilité") + |
| 108 | + geom_funfill(fun = dfun(N1), from = 8, to = 12) + |
| 109 | + annotate("text", x = 10, y = 0.06, label = "P[8, 12]", col = "red") |
| 110 | +``` |
| 111 | + |
| 112 | +```{r normal2_h2-check} |
| 113 | +grade_code("Si `geom_funfill()` est une function spécifique à `SciViews::R` pour compléter les graphiques des distributions, `annotate(\"text\", ...)` est classique pour les graphiques de type {ggplot2} comme ici et est donc réutilisable pour annoter tous vos graphiques.") |
| 114 | +``` |
| 115 | + |
| 116 | +### Calculs avec la loi normale |
| 117 | + |
| 118 | +Comme pour les autres lois de distributions, il est vital de pouvoir calculer des probabilités en fonctions de quantiles et des quantiles à partir de probabilités. Nous nous référerons toujours à la probabilités d'avoir une valeur plus petite (aire à gauche avec `lower.tail = TRUE`) ou plus grande (aide à droite avec `lower.tail = FALSE`) que ce quantile. Une aire comprise entre deux quantiles doit se calculer en deux temps (Pr{Q2} - Pr{Q1}). |
| 119 | + |
| 120 | + |
| 121 | + |
| 122 | +Vous étudiez la croissance de plants de maïs. A partir d'un grand nombre de mesures, vous avez pu déterminer que la hauteur de vos plants suit une distribution normale avec une moyenne de 145 cm et une variance de 484 (donc un écart type de 22 cm). |
| 123 | + |
| 124 | +Calculez la probabilités d'avoir un plant de maïs pris au hasard de moins de 100 cm de haut dans votre champ. |
| 125 | + |
| 126 | +<!-- 💬 **Ce code correspond au snippet `.inproba`.** --> |
| 127 | + |
| 128 | +```{r normal3_h3, exercise=TRUE} |
| 129 | +pnorm(___, mean = ___, sd = ___, lower.tail = ___) |
| 130 | +``` |
| 131 | + |
| 132 | +```{r normal3_h3-hint-1} |
| 133 | +pnorm(100, mean = ___, sd = ___, lower.tail = ___) |
| 134 | +``` |
| 135 | + |
| 136 | +```{r normal3_h3-hint-2} |
| 137 | +pnorm(100, mean = 145, sd = ___, lower.tail = ___) |
| 138 | +
|
| 139 | + #### ATTENTION: Hint suivant = solution !#### |
| 140 | +``` |
| 141 | + |
| 142 | +```{r normal3_h3-solution} |
| 143 | +## Solution ## |
| 144 | +pnorm(100, mean = 145, sd = 22, lower.tail = TRUE) |
| 145 | +``` |
| 146 | + |
| 147 | +```{r normal3_h3-check} |
| 148 | +grade_code("Ici, c'est bien l'aire à gauche du quantile 100 cm qui nous intéresse. Elle correspond à la probabilité qu'un plant soit moins haut que ce quantile et se calcule en spécifiant `lower.tail = FALSE` dans la fonction `pnorm()`.") |
| 149 | +``` |
| 150 | + |
| 151 | +Calculez la probabilités d'avoir un plant de maïs prélevé au hasard dont la hauteur est comprise entre 120 et 150 cm en utilisant les aires à gauche des quantiles et toujours la fonction `pnorm()`. |
| 152 | + |
| 153 | +```{r normal4_h3, exercise=TRUE} |
| 154 | +pnorm(___, mean = ___, sd = ___, lower.tail = ___) - |
| 155 | + ___ |
| 156 | +``` |
| 157 | + |
| 158 | +```{r normal4_h3-hint-1} |
| 159 | +pnorm(150, mean = ___, sd = ___, lower.tail = ___) - |
| 160 | + pnorm(___, mean = ___, sd = ___, lower.tail = ___) |
| 161 | +``` |
| 162 | + |
| 163 | +```{r normal4_h3-hint-2} |
| 164 | +pnorm(150, mean = ___, sd = ___, lower.tail = ___) - |
| 165 | + pnorm(120, mean = ___, sd = ___, lower.tail = ___) |
| 166 | +
|
| 167 | + #### ATTENTION: Hint suivant = solution !#### |
| 168 | +``` |
| 169 | + |
| 170 | +```{r normal4_h3-solution} |
| 171 | +## Solution ## |
| 172 | +pnorm(150, mean = 145, sd = 22, lower.tail = TRUE) - |
| 173 | + pnorm(120, mean = 145, sd = 22, lower.tail = TRUE) |
| 174 | +``` |
| 175 | + |
| 176 | +```{r normal4_h3-check} |
| 177 | +grade_code("Une aire comprise entre deux quantiles se calcule toujours en soustrayant la plus petite de la plus grande (par rapport aux deux quantiles respectifs). Deux calculs sont possibles : via les aires à gauche comme ici, ou via les aires à droite en utilisant `lower.tail = FALSE`.") |
| 178 | +``` |
| 179 | + |
| 180 | +En partant de la distribution théorique $Y \sim N(10, 6.25)$, calculez le quantile délimitant une probabilités à droite de 0.1 (10% des plus grandes observations), en utilisant l'une des fonctions p/q/r/d. |
| 181 | + |
| 182 | +<!-- 💬 **Ce code correspond au snippet `.inquant`.** --> |
| 183 | + |
| 184 | +```{r normal5_h2, exercise=TRUE} |
| 185 | +qnorm(___, mean = ___, sd = __, lower.tail = ___) |
| 186 | +``` |
| 187 | + |
| 188 | +```{r normal5_h2-hint-1} |
| 189 | +qnorm(0.1, mean = ___, sd = ___, lower.tail = ___) |
| 190 | +
|
| 191 | + #### ATTENTION: Hint suivant = solution !#### |
| 192 | +``` |
| 193 | + |
| 194 | +```{r normal5_h2-solution} |
| 195 | +## Solution ## |
| 196 | +qnorm(0.1, mean = 10, sd = 2.5, lower.tail = FALSE) |
| 197 | +``` |
| 198 | + |
| 199 | +```{r normal5_h2-check} |
| 200 | +grade_code("La fonction `qnorm()` calcule un quantile à partir d'une probabilité, contrairement à `pnorm()` qui calcule une probabilité à partir d'un quantile. Vous auriez aussi pu utiliser `quantile(dist_normal(10, 2.5), 1 - 0.1)`... pourquoi `1 - 0.1` ? Parce que `quantile()` calcule toujours par rapport à l'aire à gauche, donc, l'aire complémentaire à nos 10%, soit 90% ici !") |
| 201 | +``` |
| 202 | + |
| 203 | +## Conclusion |
| 204 | + |
| 205 | +Vous rencontrerez très souvent la loi normale dans vos analyses de données biologiques. Être capable de vérifier si un échantillon suit cette distribution ou non sera également très utile. Faites tout de même attention à la **taille de l'échantillon**. Il vous faut plusieurs dizaines d'observations, sinon, vous n'aurez pas suffisamment de données pour l'estimer de manière valable. |
| 206 | + |
| 207 | +```{r comm_noscore, echo=FALSE} |
| 208 | +question_text( |
| 209 | + "Laissez-nous vos impressions sur cet outil pédagogique", |
| 210 | + answer("", TRUE, message = "Pas de commentaires... C'est bien aussi."), |
| 211 | + incorrect = "Vos commentaires sont enregistrés.", |
| 212 | + placeholder = "Entrez vos commentaires ici...", |
| 213 | + allow_retry = TRUE |
| 214 | +) |
| 215 | +``` |
0 commit comments