Commit da622384 authored by Elise N's avatar Elise N

Pourquoi zero from `R :results output`

parent f114e1a7
......@@ -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]]
......@@ -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]]
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment