From da622384004302347d8cdd52fc1eef5a3b381bd1 Mon Sep 17 00:00:00 2001 From: Elise N <44583028+elisencode@users.noreply.github.com> Date: Wed, 19 Oct 2022 18:40:07 +0200 Subject: [PATCH] Pourquoi zero from `R :results output` --- module3/exo1/analyse-syndrome-grippal.org | 49 +++++++- module3/exo1/analyse_syndrome_IRA.org | 140 ++++++++++++++++++++++ 2 files changed, 185 insertions(+), 4 deletions(-) diff --git a/module3/exo1/analyse-syndrome-grippal.org b/module3/exo1/analyse-syndrome-grippal.org index 1477d07..c3180b0 100644 --- a/module3/exo1/analyse-syndrome-grippal.org +++ b/module3/exo1/analyse-syndrome-grippal.org @@ -191,6 +191,8 @@ for date1, date2 in zip(dates[:-1], dates[1:]): print(f"Il y a {date2-date1} entre {date1} et {date2}") #+END_SRC +#+RESULTS: + ** Passage Python -> R Nous passons au langage R pour inspecter nos données, parce que l'analyse et la préparation de graphiques sont plus concises en R, sans nécessiter aucune bibliothèque supplémentaire. @@ -206,17 +208,33 @@ data$date <- as.Date(data$date) summary(data) #+END_SRC +#+RESULTS: +: +: date inc +: Min. :2020-03-16 Min. : 5269 +: 1st Qu.:2020-11-03 1st Qu.: 29029 +: Median :2021-06-24 Median : 51720 +: Mean :2021-06-24 Mean : 66593 +: 3rd Qu.:2022-02-12 3rd Qu.: 84462 +: Max. :2022-10-03 Max. :297819 + ** Inspection Regardons enfin à quoi ressemblent nos données ! -#+BEGIN_SRC R :results output graphics :file inc-plot.png +#+BEGIN_SRC R :results output graphics file :file inc-plot.png plot(data, type="l", xlab="Date", ylab="Incidence hebdomadaire") #+END_SRC +#+RESULTS: +[[file:inc-plot.png]] + Un zoom sur les dernières années montre mieux la situation des pics en hiver. Le creux des incidences se trouve en été. -#+BEGIN_SRC R :results output graphics :file inc-plot-zoom.png +#+BEGIN_SRC R :results output graphics file :file inc-plot-zoom.png plot(tail(data, 200), type="l", xlab="Date", ylab="Incidence hebdomadaire") #+END_SRC +#+RESULTS: +[[file:inc-plot-zoom.png]] + * Étude de l'incidence annuelle ** Calcul de l'incidence annuelle @@ -243,19 +261,42 @@ inc_annuelle = data.frame(annee = annees, head(inc_annuelle) #+END_SRC +#+RESULTS: +| 1986 | 0 | +| 1987 | 0 | +| 1988 | 0 | +| 1989 | 0 | +| 1990 | 0 | +| 1991 | 0 | + ** Inspection Voici les incidences annuelles en graphique. -#+BEGIN_SRC R :results output graphics :file annual-inc-plot.png +#+BEGIN_SRC R :results output graphics file :file annual-inc-plot.png plot(inc_annuelle, type="p", xlab="Année", ylab="Incidence annuelle") #+END_SRC +#+RESULTS: +[[file:annual-inc-plot.png]] + ** Identification des épidémies les plus fortes Une liste triée par ordre décroissant d'incidence annuelle permet de plus facilement repérer les valeurs les plus élevées: #+BEGIN_SRC R :results output head(inc_annuelle[order(-inc_annuelle$incidence),]) #+END_SRC +#+RESULTS: +: annee incidence +: 1 1986 0 +: 2 1987 0 +: 3 1988 0 +: 4 1989 0 +: 5 1990 0 +: 6 1991 0 + Enfin, un histogramme montre bien que les épidémies fortes, qui touchent environ 10% de la population française, sont assez rares: il y en eu trois au cours des 35 dernières années. -#+BEGIN_SRC R :results output graphics :file annual-inc-hist.png +#+BEGIN_SRC R :results output graphics file :file annual-inc-hist.png hist(inc_annuelle$incidence, breaks=10, xlab="Incidence annuelle", ylab="Nb d'observations", main="") #+END_SRC + +#+RESULTS: +[[file:annual-inc-hist.png]] diff --git a/module3/exo1/analyse_syndrome_IRA.org b/module3/exo1/analyse_syndrome_IRA.org index e3a8034..218c96b 100644 --- a/module3/exo1/analyse_syndrome_IRA.org +++ b/module3/exo1/analyse_syndrome_IRA.org @@ -165,3 +165,143 @@ str_data = [(str(date), str(inc)) for date, inc in converted_data] | 2022-09-19 | 82053 | | 2022-09-26 | 115474 | | 2022-10-03 | 119616 | + +* Vérification des dates +Nos dates doivent être sparées d'exactement 1 semaine, sauf autour du +point manquant. + +#+BEGIN_SRC python :results output +dates = [date for date, _ in converted_data] + +for date1, date2 in zip(dates[:-1], dates[1:]): + if date2 - date1 != datetime.timedelta(weeks=1): + print(f"Il y a {date2-date1} entre {date1} et {date2}") +#+END_SRC + +#+RESULTS: + +* Passage Python -> R +Passons au langage R pour inspecter nos données, parce que l'analyse +et la préparation de graphiques sont le plus concises en R, sans +nécessiter aucune bibliothèque supplémentaire. + +Utilisons le mécanisme d'échange de données proposé par org-mode, +nécessite un peu de code Python pour transformer les données dans le +bon format. + +#+NAME: data-for-R +#+BEGIN_SRC python :results silent +[('date', 'inc'), None] + [(str(date), inc) for date, inc in converted_data] +#+END_SRC + +En R, les données arrivent sous forme d'un data frame, mais il faut +encore convertir les dates, qui arrivent comme chaînes de caractères. +#+BEGIN_SRC R :results output :var data=data-for-R +data$date <- as.Date(data$date) +summary(data) +#+END_SRC + +#+RESULTS: +: +: date inc +: Min. :2020-03-16 Min. : 5269 +: 1st Qu.:2020-11-03 1st Qu.: 29029 +: Median :2021-06-24 Median : 51720 +: Mean :2021-06-24 Mean : 66593 +: 3rd Qu.:2022-02-12 3rd Qu.: 84462 +: Max. :2022-10-03 Max. :297819 + +* Inspection + +#+BEGIN_SRC R :results output graphics file :file ira-plot.png +plot(data, type="l", xlab="Date", ylab="Incidence hebdomataire") +#+END_SRC + +#+RESULTS: +[[file:ira-plot.png]] + +Zoom sur les dernières années +#+BEGIN_SRC R :results output graphics file :file ira-plot-zoom.png +plot(tail(data, 200), type="l", xlab="Date", ylab="Incidence hebdomataire") +#+END_SRC + +#+RESULTS: +[[file:ira-plot-zoom.png]] + +* Étude de l'incidence annuelle +1. Dans quelles années y avait-il les épidémies les plus fortes? +2. Quelle est la fréquence d'épidémies faibles, moyennes, et fortes? + +** Calcul de l'incidence annuelle +- Une année ne contient pas un nombre entier de semaines. +- Ne pas choisir l'année civile comme période de sommation parce que + le pic est tout au début de l'année.==>Donc, définir un pic entre 2 + creux, les creux se trouvent en été.==>Donc, découper notre suite + chronologique en années aux dates du 1er août = creux. + +Voici une fonction qui calcule l'incidence annuelle en appliquant ces conventions. +#+BEGIN_SRC R :results silent +pic_annuel = function(annee) { + debut = paste0(annee-1, "-08-01") + fin = paste0(annee, "-08-01") + semaines = data$date > debut & data$date <=fin + sum(data$inc[semaines], na.rm=TRUE) + } +#+END_SRC + +- A cause des pics situé en hiver et des creux situé en été, nos + données commencent le 1er janvier 1985, on est déjà dans le pic de + 1985 et on risque de le sous-estimer sérieusement.==>Donc, il vaut + mieux ne pas le faire, donc on commence en 1986. + +Pas de 1985 parce que les données commencent au 1er janvier 1985. +#+BEGIN_SRC R :results silent +annees <- 1986:2018 +#+END_SRC + +#+BEGIN_SRC R :results value +inc_annuell = data.frame(annee = annees, + incidence = sapply(annees, pic_annuel)) +head(inc_annuelle) +#+END_SRC + +#+RESULTS: +| 1986 | 0 | +| 1987 | 0 | +| 1988 | 0 | +| 1989 | 0 | +| 1990 | 0 | +| 1991 | 0 | + +** Inspection +Voici les incidences annueles en graphique. +#+BEGIN_SRC R :results output grahics file :file annual-ira-plot.png +plot(inc_annuelle, type="p", xlab="Année", ylab="Incidence annuelle") +#+END_SRC + +#+RESULTS: +[[file:annual-ira-plot.png]] + +** Identification des épidmies les plus fortes +Une liste triée par ordre décoissant d'incidence annuelle permet de +plus facilement repérer les valeurs les plus élevées: +#+BEGIN_SRC R :results output +head(inc_annuelle[order(-inc_annuelle$incidence),]) +#+END_SRC + +#+RESULTS: +: annee incidence +: 1 1986 0 +: 2 1987 0 +: 3 1988 0 +: 4 1989 0 +: 5 1990 0 +: 6 1991 0 + +Enfin, un histogramme +#+BEGIN_SRC R :results output graphics file :file annual-ira-hist.png +hist(inc_annuelle$incidence, breaks=10, xlab="Incidence annuelle", ylab="Nb d'obsevations", main="") +#+END_SRC + +#+RESULTS: +[[file:annual-ira-hist.png]] -- 2.18.1