Skip to content

Commit 6bb494d

Browse files
A12La_correlation : first step
1 parent 0f6ae31 commit 6bb494d

File tree

5 files changed

+99
-120
lines changed

5 files changed

+99
-120
lines changed

devel/tutorials/A12La_correlation/A12La_correlation.Rmd

Lines changed: 99 additions & 120 deletions
Original file line numberDiff line numberDiff line change
@@ -5,133 +5,128 @@ description: "**SDD I Module 12** Le coefficient de corrélation et le test de c
55
output:
66
learnr::tutorial
77
tutorial:
8-
id: "A12a_correlation"
9-
version: 1.0.0
8+
id: "A12La_correlation"
9+
version: 2.0.0/5
1010
runtime: shiny_prerendered
1111
---
1212

1313
```{r setup, include=FALSE}
14-
library(learnr)
15-
library(knitr)
14+
BioDataScience1::learnr_setup()
1615
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-
#dataset
26-
urchin <- read("urchin_bio", package = "data.io", lang = "fr")
2716
```
2817

2918
```{r, echo=FALSE}
30-
fixedRow(
31-
column(9, div(
32-
img(src = 'images/BioDataScience-128.png', align = "left"),
33-
h1("Science des données biologiques"),
34-
"Réalisé par le service d'Écologie numérique des Milieux aquatiques, Université de Mons (Belgique)"
35-
)),
36-
column(3, div(
37-
textInput("user", "Utilisateur :", ""),
38-
textInput("email", "Email :", "")
39-
))
40-
)
41-
textOutput("user") # This is newer shown, but required to trigger an event!
42-
textOutput("email") # Idem!
19+
BioDataScience1::learnr_banner()
4320
```
4421

4522
```{r, context="server"}
46-
output$user <- renderText({BioDataScience::user_name(input$user);""})
47-
output$email <- renderText({BioDataScience::user_email(input$email);""})
48-
updateTextInput(session, "user", value = BioDataScience::user_name())
49-
updateTextInput(session, "email", value = BioDataScience::user_email())
23+
BioDataScience1::learnr_server(input, output, session)
5024
```
5125

52-
## Préambule
26+
----
5327

54-
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).
55-
56-
![](images/attention.jpg)
28+
## Objectifs
5729

58-
> 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.
30+
L'association entre deux variables peut être quantifié grâce à différentes descripteurs ou indices comme la covariance, l'indice de de corrélation de Pearson ou encore l'indice de de corrélation de Spearman. On définit 3 niveaux d'association impliquant des hypothèses de plus en plus fortes sur le mécanismes sou-jacent liant ces deux variables. On a la corrélation, la relation et la causalité. Les indices de corrélation et les tests de corrélation permettent comme leur nom l'indique de mettre un avant une corrélation entre deux variables. La corrélation est simplement l’association de deux variable sans élaborer plus d’explication sur le mécanisme sous-jacent qui lie ces variables.
5931

60-
## Objectifs
32+
Dans ce tutoriel, vous allez pouvoir auto-évaluer votre capacité à\ :
6133

6234
- Comprendre les différents niveaux d’association de deux variables numériques.
6335

64-
## La corrélation
36+
- Réaliser et interpréter un test de corrélation
37+
38+
## Biométrie de trois espèces d'Iris
39+
40+
L'étude porte sur les variations morphologiques des fleurs de trois espèces d'iris que sont *Iris setosa* Pall. ex Link (1820) , *Iris versicolor* L. (1753) et *Iris virginica* L.. Ces espèces appartiennent à la famille des Iridaceae. Ces trois espèces se développent dans des milieux humides.
41+
42+
Edgar Anderson a récolté les trois espèces d'iris en Gaspésie (Québec, Canada) en 1935 au moment de la floraison. La péninsule de Gaspésie est entourée par l'estuaire du fleuve Saint-Laurent, le golfe du Saint-Laurent et la baie des chaleurs.
43+
44+
Cinquante plants par espèces sont prélevés afin d'étudier la biométrie de leurs fleurs. La longueur et la largeur des pétales et sépales sont mesurées (en centimètre).
6545

66-
Vous avez à votre disposition un jeu de données sur la biométrie d'Iris.
46+
![](images/iris.jpg)
47+
48+
Vous avez à votre disposition un jeu de données sur des mesures biométriques d'iris.
6749

6850
```{r, echo = TRUE}
6951
# Importation des données
7052
(iris <- read("iris", package = "datasets", lang = "fr"))
7153
```
7254

73-
Utilisez la matrice de corrélation afin de mettre en avant la corrélation entre l'ensemble des vairables numérique disponible.
7455

75-
```{r iris_prepa}
76-
iris <- read("iris", package = "datasets")
77-
```
56+
La fonction `skim()` du package `skimr` est une fonction très intéressante dans un carnet de notes pour découvrir les données. Avec une seule fonction, on obtient une première idée sur le nombre d'observations, le type des variables, la présence de valeurs manquantes,...
7857

79-
Vous avez à votre disposition le snippet :
80-
81-
```{r, echo, eval = FALSE, echo = TRUE}
82-
correlation(DF[, INDEX_EXPRESSION], use = "complete.obs", method = "pearson")
58+
```{r, echo=TRUE}
59+
skimr::skim(iris)
8360
```
8461

85-
N'oubliez pas de sélectionner les variables que vous souhaitez étudier.
86-
87-
```{r corr1, exercise = TRUE, exercise.setup = "iris_prepa"}
62+
Le jeu de données iris est parfaitement balancé avec 50 individus par groupe. Il comprends 4 variables numériques et 1 variable facteur non-ordonnée. Il ne comprend pas de valeurs manquantes.
8863

64+
```{r iris_prepa}
65+
iris <- read("iris", package = "datasets", lang = "FR")
8966
```
9067

91-
```{r corr1-solution}
92-
correlation(iris[, 1:4], use = "complete.obs", method = "pearson")
93-
```
68+
Avant de poursuivre votre exploration des données, réalisez différents graphiques en fonction des différents variables.
9469

95-
```{r corr1-check}
96-
# TODO
70+
```{r scatterplot_noscore, exercise=TRUE, exercise.setup = "iris_prepa"}
71+
chart(data = iris, ___ ~ ___ %col=% species) +
72+
geom_point()
9773
```
9874

75+
## Matrice de corrélation
76+
77+
Réalisez une matrice de corrélation afin de mettre en avant la corrélation linéaire entre l'ensemble des variables numérique disponibles. Proposez ensuite un résumé de cette matrice.
9978

100-
Vous pouvez également réaliser un graphique avec l'instruction suivante :
79+
💬 **Un snippet est disponible pour réaliser cet exercice `.escor: correlation matrix`.**
10180

102-
```{r, echo = TRUE, eval = FALSE}
103-
plot(correlation(DF[, INDEX_EXPRESSION], use = "complete.obs", method = "pearson"))
81+
```{r is_corr_h2, exercise = TRUE, exercise.setup = "iris_prepa"}
82+
iris_corr <- correlation(___[, ___:___], use = "complete.obs", method = "___")
83+
summary(iris_corr)
10484
```
10585

106-
```{r corr2, exercise = TRUE, exercise.setup = "iriss_prepa"}
86+
```{r is_corr_h2-hint-1}
87+
iris_corr <- correlation(DF[, INDEX_EXPRESSION], use = "complete.obs", method = "pearson")
88+
summary(iris_corr)
89+
# La sélection se fait sur base des indices des colonnes en R de base.
90+
# Vous ne devez sélectionner que les variables numériques.
10791
108-
```
109-
110-
```{r corr2-solution}
111-
plot(correlation(iris[, 1:4], use = "complete.obs", method = "pearson"))
92+
#### ATTENTION: Hint suivant = solution !####
11293
```
11394

114-
```{r corr2-check}
115-
# TODO
95+
```{r is_corr_h2-solution}
96+
iris_corr <- correlation(iris[, 1:4], use = "complete.obs", method = "pearson")
97+
summary(iris_corr)
11698
```
11799

118-
En ajoutant l'argument type = "upper", vous pouvez n'afficher que la partie supérieur de votre graphique.
100+
```{r is_corr_h2-check}
101+
grade_code("Le résume de la matrice de corrélation utilise un système de légende particulier pour mettre en avant les variables les plus corrélées. Assurez-vous de bien comprendre les symboles utilisés ., + ou encore B.")
102+
```
119103

120-
```{r corr3, exercise = TRUE, exercise.setup = "iris_prepa"}
104+
Réalisez un graphique de votre objet `iris_corr`. N'affichez que la partie supérieur de votre matrice.
121105

106+
```{r iris_corr}
107+
iris <- read("iris", package = "datasets", lang = "FR")
108+
iris_corr <- correlation(iris[, 1:4], use = "complete.obs", method = "pearson")
122109
```
123110

124-
```{r corr3-solution}
125-
plot(correlation(iris[, 1:4], use = "complete.obs", method = "pearson"), type = "upper")
111+
```{r is_plot_h2, exercise = TRUE, exercise.setup = "iris_corr"}
112+
___(iris_corr, type = "___")
126113
```
114+
115+
```{r is_plot_h2-hint-1}
116+
plot(iris_corr, type = "___")
127117
128-
```{r corr3-check}
129-
# TODO
118+
#### ATTENTION: Hint suivant = solution !####
119+
```
120+
121+
```{r is_plot_h2-solution}
122+
plot(iris_corr, type = "upper")
130123
```
131124

132-
Répondez à présent à la question suivante.
125+
```{r is_plot_h2-check}
126+
grade_code("Ce graphique permet d'avoir une information visuelle simple à analyser. La couleur utilisée, l'élongation de l'ellipse et le sens de l'ellipse sont porteur d'informatio sur la corrélation entre les paires de variabls étudées. indique l'importance de la corrélation.L'é Par exemple, le bleu foncé met en avant Répondez à la question suivante.")
127+
```
133128

134-
```{r quiz1}
129+
```{r quiz_corr}
135130
question("Quelles sont les variables les plus fortement corrélées ?(sélectionnez les deux variables les plus corrélées)",
136131
answer("sepal_length"),
137132
answer("sepal_width"),
@@ -142,68 +137,52 @@ question("Quelles sont les variables les plus fortement corrélées ?(sélection
142137
correct = "Bravo, c'est correct")
143138
```
144139

145-
Nous pouvons nous poser la question suivante :
146-
147-
- **est ce que la largeur des sépales (sepal_width) et la longeur des pétales (petal_length) sont significativement corrélées au seuil alpha de 5% ? **
148-
149-
```{r, echo = TRUE, eval = FALSE}
150-
cor.test(data = DF, ~ YNUM + XNUM,
151-
alternative = "two.sided", method = "pearson")
152-
```
153-
154-
```{r corr4, exercise = TRUE, exercise.setup = "iris_prepa"}
155-
156-
```
140+
## Test de corrélation
157141

158-
```{r corr4-solution}
159-
cor.test(data = iris, ~ petal_length + sepal_width,
160-
alternative = "two.sided", method = "pearson")
161-
```
142+
Suite à votre matrice de corrélation linéaire avec l'indice de corrélation de Pearson, vous avez pu observer que la longueur des pétales et la largeur des pétales ont un indice de corrélation supérieur à 0.9. Cependant, avoir une valeur élevé ne permet pas d'affirmer qu'il y une corrélation significative entre ces deux variables.
162143

163-
```{r corr4-check}
164-
# TODO
165-
```
144+
Utilisez un test de corrélation afin de répondre à la question suivante : **est ce que la largeur des pétales (petal_width) et la longueur des pétales (petal_length) sont significativement corrélées au seuil alpha de 5% ? **
166145

167-
```{r quiz2}
168-
question("Y a t'il une différence significative au seuil alpha de 5% ?",
169-
answer("Oui", correct = TRUE),
170-
answer("Non"))
146+
```{r cortest_h2, exercise = TRUE, exercise.setup = "iris_prepa"}
147+
cor.test(data = ___, ~ ___ + ___,
148+
alternative = "two.sided", method = "___")
171149
```
172150

151+
```{r cortest_h2-hint-1}
152+
cor.test(data = iris, ~ ___ + ___,
153+
alternative = "two.sided", method = "___")
173154
174-
- **est ce que la largeur des sépales (sepal_width) et la longeur des sépales () sont significativement corrélées au seuil alpha de 5% ? **
175-
176-
```{r corr5, exercise = TRUE, exercise.setup = "iris_prepa"}
177-
155+
#### ATTENTION: Hint suivant = solution !####
178156
```
179157

180-
```{r corr5-solution}
181-
cor.test(data = iris, ~ sepal_length + sepal_width,
182-
alternative = "two.sided", method = "pearson")
158+
```{r cortest_h2-solution}
159+
cor.test(data = iris, ~ petal_width + petal_length,
160+
alternative = "two.sided", method = "pearson")
183161
```
184162

185-
```{r corr5-check}
186-
# TODO
163+
```{r cortest_h2-check}
164+
grade_code("Bravo ! Vous venez de réaliser un test de corrélation de Pearson. Il ne vous reste plus qu'à répondre à la question ci-dessous. Pour vous assurer que vous êtes capable de d'interpréter ce test d'hypothèse.")
187165
```
188166

189-
```{r quiz3}
190-
question("Y a t'il une différence significative au seuil alpha de 5% ?",
191-
answer("Oui"),
192-
answer("Non", correct = TRUE))
167+
```{r quiz_test}
168+
question("Est ce que la largeur des pétales (petal_width) et la longueur des pétales (petal_length) sont significativement corrélées au seuil alpha de 5% ?",
169+
answer("Oui", correct = TRUE),
170+
answer("Non"),
171+
correct = "Bravo, c'est exact ! En effet, l'hypothèse nulle est que la corrélation entre les deux variables est nulle. Avec une valeur inférieur au seuil alpha, il y a rejet de l'hypothèse nulle.",
172+
incorrect = "Il semble que vous n'avez pas su déterminer correctement l'hypothèse nulle et l'hypothèse alternative.",
173+
try_again = TRUE)
193174
```
194175

195-
196176
## Conclusion
197177

198-
Bravo! Vous venez de terminer votre séance d'exercices dans un tutoriel "learnr".
199-
200-
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.
178+
Bravo! Vous venez de terminer le tutoriel sur la premier niveau d'association de paires de variables qu'est la corrélation.
201179

202-
```{r comm, exercise=TRUE, exercise.lines = 8}
203-
# Ajout de commentaires
204-
# ...
205-
```
206-
207-
```{r comm-check}
208-
# Not yet...
180+
```{r comm_noscore, echo=FALSE}
181+
question_text(
182+
"Laissez-nous vos impressions sur cet outil pédagogique",
183+
answer("", TRUE, message = "Pas de commentaires... C'est bien aussi."),
184+
incorrect = "Vos commentaires sont enregistrés.",
185+
placeholder = "Entrez vos commentaires ici...",
186+
allow_retry = TRUE
187+
)
209188
```
-8.68 KB
Binary file not shown.
-10 KB
Binary file not shown.
45.4 KB
Loading
-431 KB
Binary file not shown.

0 commit comments

Comments
 (0)