Skip to content

Commit 0fb8984

Browse files
committed
Lernrs for module 5 finalized
1 parent 8755e8e commit 0fb8984

File tree

5 files changed

+296
-232
lines changed

5 files changed

+296
-232
lines changed

DESCRIPTION

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
Package: BioDataScience3
2-
Version: 2023.4.1
2+
Version: 2023.5.0
33
Title: A Series of Learnr Documents for Biological Data Science 3
44
Description: Interactive documents using learnr for studying biological data science (second course).
55
Authors@R: c(

NEWS.md

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,7 @@
1+
# BioDataScience3 2023.5.0
2+
3+
- Revision of **C05La_ts_filter** and **C05Lb_ts_decomp**.
4+
15
# BioDataScience3 2023.4.1
26

37
- Shiny app **C03Ca_ml_wine** updated.

inst/tutorials/C05La_ts_filter/C05La_ts_filter.Rmd.inactive renamed to inst/tutorials/C05La_ts_filter/C05La_ts_filter.Rmd

Lines changed: 18 additions & 30 deletions
Original file line numberDiff line numberDiff line change
@@ -36,43 +36,31 @@ BioDataScience3::learnr_server(input, output, session)
3636

3737
## Objectifs
3838

39-
La décomposition d'une série spatio-temporelle est un outil important pour son analyse. Vous avez découvert que l'on ne peut pas étudier les cycles d'une série si une tendance générale est présente. Il faut dans ce cas décomposer la série afin d'étudier chaque composante séparément. Nous aborderons dans ce tutoriel un exemple pratique de filtrage d'une série.
39+
Le filtrage d'une série spatio-temporelle est un outil important pour son analyse. Vous avez déjà vu que l'on ne peut pas étudier les cycles d'une série si une tendance générale est présente. Il faut dans ce cas filtrer la série pour en éliminer la tendance générale et obtenir une série stationnarisée. Nous aborderons dans ce tutoriel un autre exemple pratique de filtrage d'une série.
4040

4141
## Variation de la fréquence cardiaque
4242

43-
Un sportif travaille avec un médecin du sport afin d'optimiser ses performances. Le médecin n'est pas un expert dans le traitement des données collectées. Le sportif a couru sous les 36 minutes lors d'un effort maximal sur 10km, ce qui est une performance correcte pour un sportif amateur. En collaboration avec son médecin et vous, il souhaite comprendre les informations collectées par les différents capteurs qu'il a employées. Nous disposons de la distance parcourue, la puissance, la vitesse instantanée et la fréquence cardiaque.
44-
45-
```{r}
46-
a <- chart(data = hr, speed ~ time/60) +
47-
geom_line() +
48-
labs(y = "Vitesse [m/s]", x = "Temps [min]")
49-
50-
b <- chart(data = hr, power ~ time/60) +
51-
geom_line() +
52-
labs(y = "Puissance [W]", x = "Temps [min]")
53-
54-
combine_charts(list(a,b))
55-
```
56-
57-
La même tendance à la baisse s'observe sur les deux graphiques. La vitesse du coureur au cours du temps (A) et la puissance (B) qu'il développe baissent légèrement au cours du temps. En tant que biologiste doué dans l'analyse de données biologiques, on fait appel à vous afin de traiter le signal suivant :
43+
Un sportif travaille avec un médecin du sport afin d'optimiser ses performances. Le médecin n'est pas un expert dans le traitement des données collectées. Le sportif a couru sous les 36 minutes lors d'un effort maximal dans une course de 10km, ce qui est une performance correcte pour un sportif amateur. En collaboration avec son médecin et vous, il souhaite comprendre les informations collectées concernant la fréquence cardiaque dont voici les résultats :
5844

5945
```{r}
6046
chart(data = hr, heart_rate ~ time/60) +
6147
geom_line() +
6248
labs(y = "Fréquence cardiaque [bpm]", x = "Temps [min]")
6349
```
6450

65-
À première vue, le médecin avance les observations suivantes. Il note une montée rapide de la fréquence cardiaque puis un plateau, suivi d'une montée progressive de la fréquence cardiaque et d'un nouveau plateau. Cependant, le médecin aurait besoin d'un signal "lissé" afin d'étudier l'évolution de la fréquence cardiaque au cours du temps plus facilement. C'est à présent à vous de jouer !
51+
Vous noterez tout de suite que le signal est tronqué à 184bmp. Il s'agit probablement d'un défaut du capteur utilisé. Le signal reste cependant exploitable à condition de tenir compte de ce problème. En particulier, nous devons nous méfier des moyennes qui seront erronées vers la fin de la course. Par contre, les médianes étant peu sensibles à la valeur des extrêmes, et la fréquence cardiaque médiane se situant probablement en dessous des 184bmp tout au long de la course, nous pouvons utiliser ici la médiane comme mesure de tendance centrale.
52+
53+
À première vue, le médecin avance les observations suivantes. Il note une montée rapide de la fréquence cardiaque puis un plateau, suivi d'une montée progressive de la fréquence cardiaque et d'un nouveau plateau. Cependant, le médecin aurait besoin d'un signal "lissé" afin d'étudier l'évolution de la fréquence cardiaque au cours du temps plus facilement. C'est à présent à vous de jouer !
6654

6755
## Création de l'objet ts
6856

69-
Les observations sont réalisées sur la même personne au cours du temps, nous sommes face à une série temporelle. Appliquez l'ensemble de vos connaissances. La fréquence cardiaque est mesurée toute les secondes.
57+
Les observations sont réalisées sur la même personne au cours du temps, nous sommes face à une série temporelle. Appliquez l'ensemble de vos connaissances. La fréquence cardiaque est mesurée toutes les secondes.
7058

7159
```{r, echo=TRUE}
7260
head(hr[,c("time", "heart_rate")])
7361
```
7462

75-
Réalisez un objet `ts` dont le pas de temps est la minute et nommez-le `hr_ts`. Réalisez ensuite un graphique de `hr_ts`. Enfin, étudiez l'autocorrélation. Le tableau de données initial est `hr`.
63+
Créez un objet **ts** dont l'unité de temps est la minute et nommez-le `hr_ts`. Réalisez ensuite un graphique de `hr_ts`. Enfin, étudiez l'autocorrélation. Le tableau de données initial est `hr`.
7664

7765
```{r ts_h2, exercise=TRUE}
7866
___ <- ts(___$___, frequency = ___)
@@ -101,12 +89,12 @@ acf(hr_ts)
10189
```
10290

10391
```{r ts_h2-check}
104-
grade_code("On compte 60 secondes par minute. Il semble donc cohérent d'avoir une fréquence de 60. L'étude de l'autocorrélation de la série indique une forte corrélation.")
92+
grade_code("On compte 60 secondes par minute. Il semble donc cohérent d'avoir une fréquence de 60. L'étude de l'autocorrélation de la série indique qu'elle est forte pour tous les décalages. Ceci indique généralement la dominance d'une tendance générale.")
10593
```
10694

10795
## Décomposition de la série
10896

109-
Filtrez cette série à l'aide des médianes mobiles avec fenêtre de 30 observations et reproduisez la décomposition 20 fois dans le but de dégager différentes phases successives tout au long de la série. Nommez cet objet `hr_decomp`
97+
Filtrez cette série à l'aide des médianes mobiles avec fenêtre de 61 observations et reproduisez le lissage 20 fois dans le but de dégager différentes phases successives tout au long de la série. Nommez cet objet `hr_decomp`.
11098

11199
```{r, decmed_h2, exercise=TRUE}
112100
___ <- tsd(___, method = "___", order = ___, times = ___)
@@ -127,10 +115,10 @@ plot(hr_decomp)
127115
```
128116

129117
```{r, decmed_h2-check}
130-
grade_code("Vous avez réussi à filtrer la tendance de la série et placer le reste dans les résidus.")
118+
grade_code("Vous avez réussi à filtrer la tendance de la série et placer le reste dans les résidus. L'utilisation des médianes mobiles est une bonne approche ici, car d'une part elle met en évidence les plateaux successifs, et d'autre part elle nous permet d'éviter en grande partie les erreurs de calcul liées au signal tronqué au dessus de 184bpm.")
131119
```
132120

133-
Extrayez la composante filtrée à l'aide d'`extract()` de l'objet `hr_decomp` puis réalisez un graphique de cette nouvelle série.
121+
Extrayez la composante filtrée en utilisant `extract()` sur l'objet `hr_decomp` puis réalisez un graphique de cette nouvelle série.
134122

135123
```{r extract_h2, exercise=TRUE}
136124
hr_filtered <- extract(___, ___ = ___)
@@ -151,12 +139,12 @@ plot(hr_filtered)
151139
```
152140

153141
```{r extract_h2-check}
154-
grade_code("Vous avez correctement converti votre objet `tsd` en objet `ts`.")
142+
grade_code("Vous avez correctement extrait la composante cible de votre objet **tsd** pour en faire un objet **ts**.")
155143
```
156144

157145
## Analyse de la série filtrée
158146

159-
L'utilisation des médianes mobiles est une approche intéressante afin de faire ressortir les plateaux observés par le médecin. Faites à présent un test de tendance par bootstrap sur votre objet `hr_filtered`. Réalisez 99 ré-échantillonnages. Affichez les graphiques associés à ce test.
147+
Faites à présent un test de tendance par bootstrap sur votre objet `hr_filtered`. Réalisez 199 ré-échantillonnages. Affichez les graphiques associés à ce test.
160148

161149
```{r trend_h2, exercise = TRUE}
162150
___(trend.test(___, R = ___))
@@ -170,11 +158,11 @@ plot(trend.test(___, R = ___))
170158

171159
```{r trend_h2-solution}
172160
## Solution ##
173-
plot(trend.test(hr_filtered, R = 99))
161+
plot(trend.test(hr_filtered, R = 199))
174162
```
175163

176164
```{r trend_h2-check}
177-
grade_code("Un test de tendance avec bootstrap est bien plus intéressant qu'un test sans. Cependant, cette opération prend du temps. Nous avons donc décidé de faire seulement 99 rééchantillonage. En pratique, il vaut mieux en faire, par exemple, 999.")
165+
grade_code("Un test de tendance avec bootstrap est bien plus intéressant qu'un test classique. Cependant, cette opération prend du temps. C'est pourquoi nous avons limité les rééchantillonnages à 199. En pratique, il vaut mieux en faire, par exemple, 999.")
178166
```
179167

180168
```{r qu_tren}
@@ -188,7 +176,7 @@ question("Y a t'il un tendance générale dans cette série ? ",
188176
)
189177
```
190178

191-
Calculez des statistiques glissantes afin de délimiter la période de 0 à 5, 5 à 15, 15 à 25 et de 25 à 36. Réalisez un graphique des statistiques glissantes en y ajoutant les médianes pour chaque période. Ajoutez la légende en position c(1,182). Renommez l'axe Y en "Fréquence cardiaque [bpm]", l'axe X en "Temps [min]" et le titre par "Statistiques glissantes".
179+
Calculez des statistiques glissantes afin de délimiter les périodes de 0 à 5, 5 à 15, 15 à 25 et de 25 à 36. Réalisez un graphique des statistiques glissantes en y ajoutant les médianes pour chaque période. Ajoutez la légende en position c(1,182). Renommez l'axe X en "Temps [min]", l'axe Y en "Fréquence cardiaque [bpm]" et le titre en "Statistiques glissantes".
192180

193181
```{r sl_h2, exercise = TRUE}
194182
sl <- stat.slide(___(___), ___, xcut = c(___, ___, ___, ___, ___))
@@ -223,11 +211,11 @@ grade_code("Ce graphique est très explicite et va permettre au médécin d'expl
223211

224212
Grâce à votre analyse, le médecin peut confirmer ses premières observations. Les cinq premières minutes, la fréquence cardiaque augmente rapidement pour atteindre un plateau entre la minute 5 et la minute 15 d'une valeur médiane de 174 bpm. Une seconde augmentation plus progressive est observable entre la minute 15 et la minute 25. Enfin un nouveau plateau est observé entre la minute 25 et la fin de la course.
225213

226-
Le médecin émet l'hypothèse suivante. Le sportif atteint le premier plateau puis on observe une probable dérive cardiaque. La dérive cardiaque est liée à l'augmentation de la température corporelle. Le corps tente de dissiper la chaleur en dilatant les vaisseaux sanguins. Afin de maintenir le débit cardiaque constant, la fréquence cardiaque va augmenter. Le dernier plateau est probablement lié à la diminution de la vitesse qui va contrer l'augmentation de la vitesse cardiaque.
214+
Le médecin émet l'hypothèse suivante. Le sportif atteint le premier plateau puis on observe une probable dérive cardiaque. La dérive cardiaque est liée à l'augmentation de la température corporelle. Le corps tente de dissiper la chaleur en dilatant les vaisseaux sanguins. Afin de maintenir le débit cardiaque constant, la fréquence cardiaque va augmenter. Le dernier plateau est probablement lié à la diminution de la vitesse de course (observée par ailleurs à l'aide d'un autre capteur) qui va contrer l'augmentation de la vitesse cardiaque.
227215

228216
## Conclusion
229217

230-
Vous venez d'appliquer vos connaissances sur le filtrage d'une série afin d'étudier une série temporelle de la variation cardiaque d'un sportif sur un effort de 10km.
218+
Vous venez d'appliquer vos connaissances sur le filtrage d'une série pour étudier une série temporelle de la variation cardiaque d'un sportif sur une course de 10km.
231219

232220
```{r comm_noscore, echo=FALSE}
233221
question_text(

0 commit comments

Comments
 (0)