You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Copy file name to clipboardExpand all lines: inst/tutorials/A09La_ttest/A09La_ttest.Rmd
+43-56Lines changed: 43 additions & 56 deletions
Original file line number
Diff line number
Diff line change
@@ -14,8 +14,7 @@ runtime: shiny_prerendered
14
14
15
15
```{r setup, include=FALSE}
16
16
BioDataScience1::learnr_setup()
17
-
SciViews::R("infer")
18
-
library(BioDataScience1)
17
+
SciViews::R("infer", lang = "fr")
19
18
```
20
19
21
20
```{r, echo=FALSE}
@@ -38,174 +37,162 @@ La moyenne est un descripteur statistique très employé pour résumer l'informa
38
37
39
38
- Comprendre le test *t* de Student et être capable de l'utiliser pour résoudre des questions pratiques en biologie
40
39
41
-
Vous devez maîtriser le calcul de probabilités ([module 7](https://wp.sciviews.org/sdd-umons/?iframe=wp.sciviews.org/sdd-umons-2022/proba.html)) et avoir compris la logique d'un test d'hypothèse telle que nous l'avons développée dans le [module 8](https://wp.sciviews.org/sdd-umons/?iframe=wp.sciviews.org/sdd-umons-2022/chi2.html) relatif au test du Chi^2^. Enfin, vous devez avoir vu la première partie du [module 9](https://wp.sciviews.org/sdd-umons/?iframe=wp.sciviews.org/sdd-umons-2022/moyenne.html) avant d'aborder ces exercices d'auto-évaluation de vos acquis.
40
+
Vous devez maîtriser le calcul de probabilités ([module 7](https://wp.sciviews.org/sdd-umons/?iframe=wp.sciviews.org/sdd-umons-2023/proba.html)) et avoir compris la logique d'un test d'hypothèse telle que nous l'avons développée dans le [module 8](https://wp.sciviews.org/sdd-umons/?iframe=wp.sciviews.org/sdd-umons-2023/chi2.html) relatif au test du Chi^2^. Enfin, vous devez avoir vu la première partie du [module 9](https://wp.sciviews.org/sdd-umons/?iframe=wp.sciviews.org/sdd-umons-2023/moyenne.html) avant d'aborder ces exercices d'auto-évaluation de vos acquis.
42
41
43
42
## Moyenne
44
43
45
44
Commençons par revoir les bases. Un échantillon peut être décrit par plusieurs descripteurs statistiques comme la moyenne, l'écart-type ou la variance. La moyenne de la variable $y$ se note $\bar{y}$ (qui se lit "y barre"). Son calcul se fait comme ceci :
46
45
47
46
$$\bar{y} = \sum_{i = 1}^n \frac{{y_i}}{n}$$
48
47
49
-
### Moyenne du vecteur `vec`
48
+
### Moyenne du vecteur `v`
50
49
51
-
Utilisez une fonction spécialisée dans R afin de calculer la moyenne du vecteur `vec`.
50
+
Utilisez une fonction spécialisée dans R pour calculer la moyenne du vecteur `v`.
52
51
53
52
```{r, echo=TRUE}
54
-
vec <- c(14, 24, 32, 18, 19)
53
+
v <- c(14, 24, 32, 18, 19)
55
54
```
56
55
57
56
```{r mean1_h2, exercise=TRUE}
58
-
vec <- c(14, 24, 32, 18, 19)
57
+
v <- c(14, 24, 32, 18, 19)
59
58
___(___)
60
59
61
60
```
62
61
63
62
```{r mean1_h2-hint-1}
64
-
vec <- c(14, 24, 32, 18, 19)
63
+
v <- c(14, 24, 32, 18, 19)
65
64
mean(___)
66
65
67
66
#### ATTENTION: Hint suivant = solution !####
68
67
```
69
68
70
-
```{=html}
71
-
<!--
72
-
Obfuscation trial: use this argument in the parameters of h2-hint-1
grade_code("La fonction mean() effectue ce calcul. Si des valeurs manquantes (exercice suivant) se trouvent dans le vecteur, il faut prendre une précaution supplémentaire pour obtenir une estimation de la moyenne. Il existe également une fonction similaire qui est plus rapide fmean() du package {collapse}.")
76
+
grade_code("La fonction mean() effectue ce calcul. Si des valeurs manquantes (exercice suivant) se trouvent dans le vecteur, il faut prendre une précaution supplémentaire pour obtenir une estimation de la moyenne. Il existe également une fonction similaire qui est plus rapide : la fonction fmean() du package {collapse}.")
90
77
```
91
78
92
-
### Moyenne du vecteur `vec2`
79
+
### Moyenne du vecteur `v2`
93
80
94
-
Calculez la moyenne du vecteur `vec2` qui contient une valeur manquante, toujours à l'aide d'une fonction dédiée dans R (n'utilisez pas `fmean()` ici).
81
+
Calculez la moyenne du vecteur `v2` qui contient une valeur manquante, toujours à l'aide d'une fonction dédiée dans R (n'utilisez pas `fmean()` ici).
95
82
96
83
```{r, echo=TRUE}
97
-
vec2 <- c(14, 3, 32, NA, 40)
84
+
v2 <- c(14, 3, 32, NA, 40)
98
85
```
99
86
100
87
```{r mean2_h3, exercise=TRUE}
101
-
vec2 <- c(14, 3, 32, NA, 40)
88
+
v2 <- c(14, 3, 32, NA, 40)
102
89
___(___)
103
90
```
104
91
105
92
```{r mean2_h3-hint-1}
106
-
vec2 <- c(14, 3, 32, NA, 40)
93
+
v2 <- c(14, 3, 32, NA, 40)
107
94
mean(___, ___ = ___)
108
95
```
109
96
110
97
```{r mean2_h3-hint-2}
111
-
vec2 <- c(14, 3, 32, NA, 40)
98
+
v2 <- c(14, 3, 32, NA, 40)
112
99
mean(___, na.rm = ___)
113
100
114
101
#### ATTENTION: Hint suivant = solution !####
115
102
```
116
103
117
104
```{r mean2_h3-solution}
118
105
## Solution ##
119
-
vec2 <- c(14, 3, 32, NA, 40)
120
-
mean(vec2, na.rm = TRUE)
106
+
v2 <- c(14, 3, 32, NA, 40)
107
+
mean(v2, na.rm = TRUE)
121
108
```
122
109
123
110
```{r mean2_h3-check}
124
-
grade_code("Retenez que, dans R, toute fonction qui a un argument `na.rm =`, si vous indiquez TRUE vous souhaitez d'abord éliminer les valeurs manquantes afin d'estimer le résultat sur les données observées restantes. Prenez l'habitude de consulter la page d'aide associé à la fonction. En général, l'argument `na.rm =` est par défaut à FALSE. Il existe cependant quelques exceptions comme dans la fonction fmean() de {collapse}.")
111
+
grade_code("Retenez que, dans R, avec toute fonction qui a un argument `na.rm =`, si vous indiquez TRUE vous souhaitez d'abord éliminer les valeurs manquantes afin d'estimer le résultat sur les données observées restantes. Prenez l'habitude de consulter la page d'aide de la fonction. En général, l'argument `na.rm =` est par défaut à FALSE. Il existe cependant quelques exceptions comme dans la fonction fmean() de {collapse}.")
125
112
```
126
113
127
114
### Écart-type
128
115
129
-
Un second descripteur d'un échantillon est l'écart-type $s_y$ qui est calculé via l'équation suivante :
116
+
Un second descripteur d'un échantillon est l'écart-type $s_y$ qui est calculé comme suit :
130
117
131
118
$$s_y = \sqrt {s_y^2}$$
132
119
133
-
L'écart-type est la racine carrée de la variance $s_y^2$ de la variable $y$ qui est également un descripteur statistique de l'échantillon. La variance de l'échantillon est calculée comme suit :
120
+
L'écart-type est la racine carrée de la variance $s_y^2$ qui est également un descripteur statistique de l'échantillon. La variance de l'échantillon est calculée comme ceci :
Il existe également des fonctions spécialisées dans R afin de calculer la variance et l'écart-type. Calculez l'écart-type du vecteur `vec3`.
124
+
Il existe également des fonctions spécialisées dans R pour calculer la variance et l'écart-type. Calculez l'écart-type du vecteur `v3`.
138
125
139
126
```{r, echo=TRUE}
140
-
vec3 <- c(22, 18, 4, 24, 34, 3, 9)
127
+
v3 <- c(22, 18, 4, 24, 34, 3, 9)
141
128
```
142
129
143
130
```{r sd1_h2, exercise=TRUE}
144
-
vec3 <- c(22, 18, 4, 24, 34, 3, 9)
131
+
v3 <- c(22, 18, 4, 24, 34, 3, 9)
145
132
___(___)
146
133
```
147
134
148
135
```{r sd1_h2-hint-1}
149
-
vec3 <- c(22, 18, 4, 24, 34, 3, 9)
136
+
v3 <- c(22, 18, 4, 24, 34, 3, 9)
150
137
sd(___)
151
138
152
139
#### ATTENTION: Hint suivant = solution !####
153
140
```
154
141
155
142
```{r sd1_h2-solution}
156
143
## Solution ##
157
-
vec3 <- c(22, 18, 4, 24, 34, 3, 9)
158
-
sd(vec3)
144
+
v3 <- c(22, 18, 4, 24, 34, 3, 9)
145
+
sd(v3)
159
146
```
160
147
161
148
```{r sd1_h2-check}
162
-
grade_code("Écart type se dit \"standard deviation\" en anglais, d'où le nom `sd()` de la fonction en abbrégé. Pour la variance, il s'agit de la fonction `var()`. Ces deux fonctions utilisent aussi l'argument `na.rm =` si nécessaire. Comme vous vous en doutez surement, il existe la fonction fsd() et fvar() dans le package {collapse}.")
149
+
grade_code("Écart type se dit \"standard deviation\" en anglais, d'où le nom `sd()` de la fonction en abbrégé. Pour la variance, il s'agit de `var()`. Ces deux fonctions utilisent aussi l'argument `na.rm =` si nécessaire. Comme vous vous en doutez surement, il existe la fonction `fsd()` et `fvar()` dans le package {collapse}.")
163
150
```
164
151
165
152
### Coefficient de variation
166
153
167
-
Un autre descripteur est le coefficient de variation de l'échantillon qui est calculé via :
154
+
Un autre descripteur est le coefficient de variation de l'échantillon qui est calculé comme :
168
155
169
156
$$cv_y \ (\%) = \frac{s_y}{\bar y} \times 100$$
170
157
171
-
L'avantage du coefficient de variation est qu'il donne une idée de la dispersion des données de manière *relative*. En effet, la variance et l'écart type seront d'autant plus grands que la moyenne est grande, pour une dispersion relative équivalente. Par contre, le coefficient de variation met à l'échelle, en quelque sorte, l'écart type. Son expression en pourcentage accentue encore cette sensation d'avoir une estimation de la dispersion des données exprimée par rapport à une valeur de référence (ici la moyenne).
158
+
L'avantage du coefficient de variation est qu'il donne une idée de la dispersion des données de manière *relative*. En effet, la variance et l'écart type seront d'autant plus grands que la moyenne est grande, pour une dispersion relative équivalente. Par contre, le coefficient de variation met à l'échelle, en quelque sorte, l'écart type. Son expression en pourcentage accentue encore cette impression d'avoir une estimation de la dispersion des données exprimée par rapport à une valeur de référence (ici la moyenne).
172
159
173
-
Calculez le coefficient de variation du vecteur `vec3` en % (il n'existe pas de fonction dédiée dans R, combinez les fonctions vues jusqu'ici pour y arriver).
160
+
Calculez le coefficient de variation du vecteur `v3` en % (il n'existe pas de fonction dédiée dans R, combinez les fonctions vues jusqu'ici pour y arriver).
174
161
175
162
```{r, echo=TRUE}
176
-
vec3 <- c(22, 18, 4, 24, 34, 3, 9)
163
+
v3 <- c(22, 18, 4, 24, 34, 3, 9)
177
164
```
178
165
179
166
```{r cv1_h2, exercise=TRUE}
180
-
vec3 <- c(22, 18, 4, 24, 34, 3, 9)
167
+
v3 <- c(22, 18, 4, 24, 34, 3, 9)
181
168
___
182
169
```
183
170
184
171
```{r cv1_h2-hint-1}
185
-
vec3 <- c(22, 18, 4, 24, 34, 3, 9)
172
+
v3 <- c(22, 18, 4, 24, 34, 3, 9)
186
173
sd(__) / ___(___) * ___
187
174
188
175
#### ATTENTION: Hint suivant = solution !####
189
176
```
190
177
191
178
```{r cv1_h2-solution}
192
179
## Solution ##
193
-
vec3 <- c(22, 18, 4, 24, 34, 3, 9)
194
-
sd(vec3) / mean(vec3) * 100
180
+
v3 <- c(22, 18, 4, 24, 34, 3, 9)
181
+
sd(v3) / mean(v3) * 100
195
182
```
196
183
197
184
```{r cv1_h2-check}
198
185
grade_result(
199
-
pass_if(~ identical(.result, (sd(vec3)/mean(vec3))*100), "Vous avez judicieusement combiné le calcul de la moyenne et de l'écart-type dans une instruction R pour obtenir le coefficient de variation."),
186
+
pass_if(~ identical(.result, (sd(v3)/mean(v3))*100), "Vous avez judicieusement combiné le calcul de la moyenne et de l'écart-type dans une instruction R pour obtenir le coefficient de variation."),
200
187
fail_if(~ TRUE, "Votre calcul n'est pas le bon. Commencez par déterminer la moyenne et l'écart-type de ce vecteur. N'oubliez pas de multiplier votre réponse par 100 pour l'obtenir en pourcent.")
201
188
)
202
189
```
203
190
204
-
Ces premiers exercices vous ont permis de revoir les principaux descripteurs centraux (pour la moyenne) et de dispersion des données (pour l'écart type, la variance et le coefficient de variation). Sur base de ces descripteurs, nous allons maintenant élaborer un test d'hypothèse qui se focalise sur la moyenne.
191
+
Ces premiers exercices vous ont permis de revoir les principaux descripteurs centraux (pour la moyenne) et de dispersion des données (pour l'écart type, la variance et le coefficient de variation). Nous allons maintenant dans la suite de ce tutoriel élaborer un test d'hypothèse qui se focalise sur la moyenne.
205
192
206
193
## Indice de masse corporelle
207
194
208
-
Il est temps de passer à un exemple concret. Vous allez vous intéresser à l'indice de masse corporelle dans une population d'adultes ayant plus de 18 ans et jusqu'à 30 ans. Ce tableau de données ne vous est pas inconnu. Vous l'avez déjà employé à plusieurs reprises pour réaliser des graphiques notamment (nous préférons toujours rester en "terrain connu" lorsque nous abordons pour la première fois une technique statistique).
195
+
Il est temps de passer à une application concrète. Vous allez vous intéresser à l'indice de masse corporelle dans une population d'adultes ayant plus de 18 ans et jusqu'à 30 ans. Ce tableau de données ne vous est pas inconnu. Vous l'avez déjà employé à plusieurs reprises pour réaliser des graphiques notamment.
209
196
210
197
{width="60%"}
211
198
@@ -296,7 +283,7 @@ biometry %>.%
296
283
grade_code("Maintenant nous voulons déterminer si ces moyennes diffèrent de manière significative ou non au seuil alpha de 5% en fonction du genre.", "Votre tableau ne correspond pas. Relisez la question attentivement. Quelle est la variable dont vous devez déterminer la moyenne et l'écart type ?")
297
284
```
298
285
299
-
Vous devez à présent comparer l'indice de masse corporelle entre les hommes et les femmes. Utilisez un test *t* de Student bilatéral pour des sous-populations considérées de variances similaires. Vous devez fixer votre seuil $\alpha$ à 0.05.
286
+
Vous devez à présent comparer l'indice de masse corporelle entre les hommes et les femmes. Utilisez un test *t* de Student bilatéral pour des sous-populations considérées de variances similaires. Vous devez fixer votre seuil $\alpha$ à 5%.
300
287
301
288
<!-- 💬 **Un snippet peut vous aider à réaliser cet exercice `.hmttestindep`.** -->
grade_code("Vous avez su compléter la fonction t.test(). Notez l'utilisation de conf.level= pour le niveau de confiance du test qui est en réalité 1 - alpha = 0.95. Vous constatez que vous devez maîtriser les deux termes complémentaires alpha et niveau de confiance. Le test bilatéral se note \"two-sided\" ici.", "Ce n'est pas la bonne réponse. Relisez avec attention l'énoncé et complètez les éléments manquants dans les instructions R.")
309
+
grade_code("Vous avez su compléter la fonction `t.test()`. Notez l'utilisation de `conf.level=` pour le niveau de confiance du test qui est en réalité 1 - alpha = 0.95. Vous constatez que vous devez maîtriser les deux termes complémentaires alpha et niveau de confiance. Le test bilatéral se note \"two-sided\" ici.", "Ce n'est pas la bonne réponse. Relisez avec attention l'énoncé et complètez les éléments manquants dans les instructions R.")
323
310
```
324
311
325
312
```{r ttest_quiz}
@@ -328,13 +315,13 @@ quiz(
328
315
answer("oui"),
329
316
answer("non", correct = TRUE),
330
317
allow_retry = TRUE,
331
-
incorrect = "Vous vous êtes trompé. Pour savoir si vous devez rejeter $H_0$, il faut comparer la valeur P au seuil alpha, ce dernier étant choisi avant de réaliser le test.",
318
+
incorrect = "Vous vous êtes trompé. Pour savoir si vous devez rejeter $H_0$, il faut comparer la valeur *P* au seuil alpha, ce dernier étant choisi avant de réaliser le test.",
332
319
correct = "C'est correct. Vous ne rejetez pas $H_0$ au seuil alpha de 5% ici."),
333
320
question("Est-ce que l'indice de masse corporelle moyen est significativement différent entre les hommes et les femmes au seuil alpha de 5% ?",
334
321
answer("oui"),
335
322
answer("non", correct = TRUE),
336
323
allow_retry = TRUE,
337
-
incorrect = "Ce n'est pas la bonne réponse. Vous devez comparer la valeur P au seuil alpha pour trouver la bonne réponse à cette question.",
324
+
incorrect = "Ce n'est pas la bonne réponse. Vous devez comparer la valeur *P* au seuil alpha pour trouver la bonne réponse à cette question.",
338
325
correct = "Vous avez bien interprété votre test. Vous direz que vous ne détectez pas de différence significative entre les moyennes des IMC des hommes et des femmes au seuil alpha de 5% (test de Student bilatéral, t = 1.51, ddl = 163, valeur P = 0.13)")
0 commit comments