Skip to content

Commit ea5e11f

Browse files
edition of 08b_chi2
1 parent 36bbee1 commit ea5e11f

File tree

5 files changed

+306
-2
lines changed

5 files changed

+306
-2
lines changed

DESCRIPTION

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
Package: BioDataScience
22
Type: Package
3-
Version: 0.11.0
3+
Version: 0.12.0
44
Title: A Series of Learnr Documents for Biological Data Science
55
Description: Interactive documents using learnr for studying biological data science.
66
Authors@R: c(

NEWS.md

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,10 @@
11
# BioDataScience News
22

3-
## Changes in version 0.10.0
3+
## Changes in version 0.12.0
4+
5+
- Tutorial 08b_chi2 finalized
6+
7+
## Changes in version 0.11.0
48

59
- Tutorial 08a_chi2 finalized
610

inst/tutorials/08b_chi2/chi2.Rmd

Lines changed: 300 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,300 @@
1+
---
2+
title: "Module 8 : chi2 "
3+
subtitle: "Traitement des données I"
4+
author: "Guyliann Engels & Philippe Grosjean"
5+
output:
6+
learnr::tutorial
7+
tutorial:
8+
id: "sdd1.08b"
9+
version: 1.0.0
10+
runtime: shiny_prerendered
11+
---
12+
13+
```{r setup, include=FALSE}
14+
library(learnr)
15+
library(knitr)
16+
SciViews::R()
17+
18+
options(tutorial.event_recorder = BioDataScience::record_sdd)
19+
tutorial_options(exercise.checker = BioDataScience::checker_sdd)
20+
tutorial_options(exercise.timelimit = 60)
21+
tutorial_options(exercise.cap = "Code R")
22+
knitr::opts_chunk$set(echo = FALSE, comment = NA)
23+
24+
library(BioDataScience)
25+
library(ggpubr)
26+
27+
#datasets
28+
29+
tabac <- data.frame(sexe = c("filles", "garçons", "filles",
30+
"garçons"),
31+
comport = c("fumeurs", "fumeurs", "non fumeurs", "non fumeurs"),
32+
freq = c(12, 19, 26, 20))
33+
#tabac
34+
tabac_table <- xtabs(freq ~ sexe + comport, data = tabac)
35+
36+
#sang
37+
sang <- data.frame(groupe = c("A", "B", "AB", "O", "A", "B", "AB", "O", "A", "B", "AB", "O"),
38+
etat = c("Floride", "Floride", "Floride", "Floride", "Iowa", "Iowa", "Iowa", "Iowa", "Missouri", "Missouri", "Missouri", "Missouri"),
39+
freq = c(122, 117, 19, 244, 1781, 1351, 289, 3301, 353, 269, 60, 713))
40+
41+
sang_table <- xtabs(freq ~ groupe + etat, data = sang)
42+
```
43+
44+
```{r, echo=FALSE}
45+
fixedRow(
46+
column(9, div(
47+
img(src = 'images/BioDataScience-128.png', align = "left"),
48+
h1("Science des données biologiques"),
49+
"Réalisé par le service d'Écologie numérique des Milieux aquatiques, Université de Mons (Belgique)"
50+
)),
51+
column(3, div(
52+
textInput("user", "Utilisateur :", ""),
53+
textInput("email", "Email :", "")
54+
))
55+
)
56+
textOutput("user") # This is newer shown, but required to trigger an event!
57+
textOutput("email") # Idem!
58+
```
59+
60+
```{r, context="server"}
61+
output$user <- renderText({BioDataScience::user_name(input$user);""})
62+
output$email <- renderText({BioDataScience::user_email(input$email);""})
63+
updateTextInput(session, "user", value = BioDataScience::user_name())
64+
updateTextInput(session, "email", value = BioDataScience::user_email())
65+
```
66+
67+
## Préambule
68+
69+
Si vous n'avez jamais utilisé de tutoriel "learnr", familiarisez-vous d'abord avec son interface [ici](http://biodatascience-course.sciviews.org/sdd-umons/learnr.html).
70+
71+
![](images/attention.jpg)
72+
73+
> Conformément au RGPD ([Règlement Général sur la Protection des Données](https://ec.europa.eu/info/law/law-topic/data-protection/reform/rules-business-and-organisations/principles-gdpr_fr)), 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.
74+
75+
76+
## Objectifs
77+
78+
- Appréhender la distribution du $\chi^2$
79+
80+
- Appréhender les tests d'hypothèses
81+
82+
83+
## Les fumeurs
84+
85+
```{r, echo = TRUE}
86+
tabac <- data.frame(sexe = c("filles", "garçons", "filles",
87+
"garçons"),
88+
comport = c("fumeurs", "fumeurs", "non fumeurs", "non fumeurs"),
89+
freq = c(12, 19, 26, 20))
90+
#tabac
91+
tabac_table <- xtabs(freq ~ sexe + comport, data = tabac)
92+
93+
# affichage du tableau de données
94+
95+
knitr::kable(tabac_table)
96+
```
97+
98+
Afin de calculer le $\chi^2$ vous devez au préalable calculer un second tableau comprennant $\alpha_i$
99+
100+
```{r quiz1}
101+
question("Sélectionnez le tableau correspondant aux valeurs de $\\alpha_i$",
102+
answer("A", correct = TRUE),
103+
answer("B"),
104+
answer("C"),
105+
answer("D"),
106+
allow_retry = TRUE,
107+
incorrect = "Recommencez afin de trouver la bonne réponse",
108+
correct = "Bravo, c'est correct")
109+
```
110+
111+
```{r}
112+
a <- data_frame("genre" = c("fille", "garcon"), "fumeur" = c(15.29, 15.7), "non-fumeur" = c(22.70, 23.30))
113+
b <- data_frame("genre" = c("fille", "garcon"), "fumeur" = c(4.83, 7.65), "non-fumeur" = c(15.53, 11.94))
114+
c <- data_frame("genre" = c("fille", "garcon"), "fumeur" = c(5.92, 9.62), "non-fumeur" = c(12.83, 10.13))
115+
d <- data_frame("genre" = c("fille", "garcon"), "fumeur" = c(12.42, 15.95), "non-fumeur" = c(26.39, 21.51))
116+
aa <- ggtexttable(a, rows = NULL)
117+
bb <- ggtexttable(b, rows = NULL)
118+
cc <- ggtexttable(c, rows = NULL)
119+
dd <- ggtexttable(d, rows = NULL)
120+
combine_charts(chartlist = list(aa, bb, cc, dd))
121+
```
122+
123+
Calculez le chi2
124+
125+
```{r quiz2}
126+
question("Calcul du $\\chi^2$",
127+
answer("2.35", correct = TRUE),
128+
answer("1.85"),
129+
answer("1.42"),
130+
answer("3.59"),
131+
random_answer_order = TRUE,
132+
allow_retry = TRUE,
133+
incorrect = "Recommencez afin de trouver la bonne réponse",
134+
correct = "Bravo, c'est correct")
135+
```
136+
137+
Déterminez l'aire à droite délimité par la valeur du quantile calculé ci-dessus
138+
139+
```{r,echo=TRUE, eval=FALSE}
140+
pchisq(QUANTILES, df = DEGREES_OF_FREEDOM, lower.tail = TRUE)
141+
```
142+
143+
```{r chi1, exercise = TRUE}
144+
145+
```
146+
147+
```{r chi1-solution}
148+
pchisq(2.35, df = 1, lower.tail = FALSE)
149+
```
150+
151+
```{r chi1-check}
152+
#TODO
153+
```
154+
155+
```{r quiz3}
156+
quiz(
157+
question("Si le seuil alpha de notre expérience est de 0.05, y a t'il dépendance ou indépendance des deux variables ?",
158+
answer("Dépendance des deux varibles"),
159+
answer("Indépendance des deux variables", correct = TRUE),
160+
allow_retry = TRUE,
161+
incorrect = "Recommencez afin de trouver la bonne réponse",
162+
correct = "Bravo, c'est correct"),
163+
question("Si le seuil alpha de notre expérience est de 0.05, rejettez vous $H_0$ ?",
164+
answer("oui"),
165+
answer("non", correct = TRUE),
166+
allow_retry = TRUE,
167+
incorrect = "Recommencez afin de trouver la bonne réponse",
168+
correct = "Bravo, c'est correct")
169+
)
170+
```
171+
172+
Calculez cette fois ci via R et les snippets le test de $\chi^2$ d'indépendance. Le snippet est **.icchi2bi** et renvoit ces instructions.
173+
174+
```{r, echo = TRUE, eval = FALSE}
175+
(chi2. <- chisq.test(TABLE)); cat("Expected frequencies:\n"); chi2.[["expected"]]
176+
```
177+
178+
```{r chi2, exercise = TRUE}
179+
180+
```
181+
182+
```{r chi2-solution}
183+
(chi2. <- chisq.test(tabac_table)); cat("Expected frequencies:\n"); chi2.[["expected"]]
184+
```
185+
186+
```{r chi2-check}
187+
#TODO
188+
```
189+
190+
Obtenez vous la même valeur que calculé à la main ? La réponse est non. En effet, une correction est réalisée via la correction de continuité de Yates. En ajoutant l'argument **correct = FALSE**, vous retrouvez la même valeur que celle que vous avez calculé à la main.
191+
192+
```{r chi3, exercise = TRUE}
193+
194+
```
195+
196+
```{r chi3-solution}
197+
(chi2. <- chisq.test(tabac_table, correct = FALSE)); cat("Expected frequencies:\n"); chi2.[["expected"]]
198+
```
199+
200+
```{r chi3-check}
201+
#TODO
202+
```
203+
204+
## Les groupes sanguins
205+
206+
L’étude s’intéresse aux groupes sainguins dans l’Iowa, le Missouri et la Floride
207+
208+
```{r, fig.align='center', echo=FALSE, message=FALSE, , out.width= '80%'}
209+
usa <-map_data("state")
210+
usa$region <- as.factor(usa$region)
211+
#usa$region
212+
#levels(usa$region)
213+
214+
library(cowplot)
215+
chart(usa, aes(long, lat, group = group)) +
216+
geom_polygon(fill = "white", colour = "black") +
217+
geom_polygon(data = filter(usa, region== "florida"), aes(long, lat, group = group), fill = "red")+
218+
geom_polygon(data = filter(usa, region== "missouri"), aes(long, lat, group = group), fill = "blue")+
219+
geom_polygon(data = filter(usa, region== "iowa"), aes(long, lat, group = group), fill = "green")+
220+
theme(axis.line = element_blank(), axis.title = element_blank(),axis.text = element_blank(), axis.ticks = element_blank()) +
221+
coord_quickmap()
222+
223+
```
224+
225+
Les distributions des groupes sanguins sont-elles identiques dans les trois états étudiés ?
226+
227+
```{r, echo=FALSE, message=FALSE}
228+
sang <- data.frame(groupe = c("A", "B", "AB", "O", "A", "B", "AB", "O", "A", "B", "AB", "O"),
229+
etat = c("Floride", "Floride", "Floride", "Floride", "Iowa", "Iowa", "Iowa", "Iowa", "Missouri", "Missouri", "Missouri", "Missouri"),
230+
freq = c(122, 117, 19, 244, 1781, 1351, 289, 3301, 353, 269, 60, 713))
231+
232+
sang_table <- xtabs(freq ~ groupe + etat, data = sang)
233+
knitr::kable(sang_table)
234+
```
235+
236+
Avant de réalisez votre $\chi^2$ d'indépendance avec R, déterminez le nombre de degré de liberte de votre $\chi^2$
237+
238+
```{r quiz4}
239+
question("Sur base du tableau de données ci-dessus, déterminez le nombre de degré de liberté de la distribution du $\\chi^2$ correspondante ",
240+
answer("1"),
241+
answer("2"),
242+
answer("3"),
243+
answer("4"),
244+
answer("6", correct = TRUE),
245+
answer("12"),
246+
allow_retry = TRUE,
247+
incorrect = "Recommencez afin de trouver la bonne réponse",
248+
correct = "Bravo, c'est correct")
249+
```
250+
251+
Calculez le $\chi^2_{obs}$ avec R et via le snippet **.icchi2bi** qui renvoit ces instructions.
252+
253+
```{r, echo = TRUE, eval = FALSE}
254+
(chi2. <- chisq.test(TABLE)); cat("Expected frequencies:\n"); chi2.[["expected"]]
255+
```
256+
257+
```{r chi4, exercise = TRUE}
258+
259+
```
260+
261+
```{r chi4-solution}
262+
(chi2. <- chisq.test(sang_table)); cat("Expected frequencies:\n"); chi2.[["expected"]]
263+
```
264+
265+
```{r chi4-check}
266+
#TODO
267+
```
268+
269+
```{r quiz5}
270+
quiz(
271+
question("Si le seuil alpha de notre expérience est de 0.05, y a t'il dépendance ou indépendance des variables ?",
272+
answer("Dépendance des varibles"),
273+
answer("Indépendance des variables", correct = TRUE),
274+
allow_retry = TRUE,
275+
incorrect = "Recommencez afin de trouver la bonne réponse",
276+
correct = "Bravo, c'est correct"),
277+
question("Si le seuil alpha de notre expérience est de 0.05, rejettez vous $H_0$ ?",
278+
answer("oui"),
279+
answer("non", correct = TRUE),
280+
allow_retry = TRUE,
281+
incorrect = "Recommencez afin de trouver la bonne réponse",
282+
correct = "Bravo, c'est correct")
283+
)
284+
```
285+
286+
287+
## Conclusion
288+
289+
Bravo! Vous venez de terminer votre séance d'exercices dans un tutoriel "learnr".
290+
291+
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.
292+
293+
```{r comm, exercise=TRUE, exercise.lines = 8}
294+
# Ajout de commentaires
295+
# ...
296+
```
297+
298+
```{r comm-check}
299+
# Not yet...
300+
```
8.68 KB
Loading
10 KB
Loading

0 commit comments

Comments
 (0)