Les données de l'incidence du syndrome grippal sont disponibles du site Web du [Réseau Sentinelles](http://www.sentiweb.fr/). Nous les récupérons sous forme d'un fichier en format CSV dont chaque ligne correspond à une semaine de la période demandée. Nous téléchargeons toujours le jeu de données complet, qui commence en 1984 et se termine avec une semaine récente. L'URL est:
Les données de l'incidence du syndrome grippal sont disponibles du site Web du [Réseau Sentinelles](http://www.sentiweb.fr/). Nous les récupérons sous forme d'un fichier en format CSV dont chaque ligne correspond à une semaine de la période demandée. Nous téléchargeons toujours le jeu de données complet, qui commence en 1984 et se termine avec une semaine récente. L'URL est:
Nous travaillons à partir d'une copie locale des données si jamais le jeu de données disponible en ligne était amené à évoluer et le téléchargeons seulement si la copie n'est pas accessible localement.
```{r}
data_file = "d:/Documents/incidence-PAY-3.csv"
if (!file.exists(data_file)) {
download.file(data_url, data_file, method="auto")
}
```
```
Voici l'explication des colonnes donnée sur le [sur le site d'origine](https://ns.sentiweb.fr/incidence/csv-schema-v1.json):
Voici l'explication des colonnes donnée sur le [sur le site d'origine](https://ns.sentiweb.fr/incidence/csv-schema-v1.json):
...
@@ -46,7 +53,7 @@ La première ligne du fichier CSV est un commentaire, que nous ignorons en préc
...
@@ -46,7 +53,7 @@ La première ligne du fichier CSV est un commentaire, que nous ignorons en préc
Ceci est un document R markdown que vous pouvez aisément exporter au format HTML, PDF, et MS Word. Pour plus de détails sur R Markdown consultez <http://rmarkdown.rstudio.com>.
### Téléchargement
Lorsque vous cliquerez sur le bouton **Knit** ce document sera compilé afin de ré-exécuter le code R et d'inclure les résultats dans un document final. Comme nous vous l'avons montré dans la vidéo, on inclue du code R de la façon suivante:
On utilise la copie locale en csv des données du réseau sentinelle liées à la varicelle. Si cette copie n'est pas présente, les données sont téléchargées et enregistrées.
On regarde les éventuels points manquants dans nos données.
```{r}
na_records = apply(data, 1, function (x) any(is.na(x)))
data[na_records,]
```
A priori tout va bien. On vérifie maintenant le type des colonnes qui nous intéressent.
```{r}
class(data$week)
class(data$inc)
```
Ce sont des entiers et c'est ce que l'on attendait. Passons maintenant à la suite.
### Conversion des numéros de semaine
```{r cars}
On charge la librairie qui va nous permettre de faire nos modifications sur les dates.
summary(cars)
```{r}
library(parsedate)
```
```
Et on peut aussi aisément inclure des figures. Par exemple:
On utilise la fonction qui va remplacer les numéros de semaine par la date correspondant au lundi de la semaine en question.
```{r}
convert_week = function(w) {
ws = paste(w)
iso = paste0(substring(ws, 1, 4), "-W", substring(ws, 5, 6))
as.character(parse_iso_8601(iso))
}
```
On applique la fonction à notre jeu de données.
```{r}
data$date = as.Date(convert_week(data$week))
```
On vérifie que le nouveau type est celui attendu.
```{r}
class(data$date)
```
```{r pressure, echo=FALSE}
C'est tout bon, il reste à trier nos données par ordre chronologique.
plot(pressure)
```{r}
data = data[order(data$date),]
```
```
Vous remarquerez le paramètre `echo = FALSE` qui indique que le code ne doit pas apparaître dans la version finale du document. Nous vous recommandons dans le cadre de ce MOOC de ne pas utiliser ce paramètre car l'objectif est que vos analyses de données soient parfaitement transparentes pour être reproductibles.
Et on en profite pour vérifier que les dates sont bien espacées de 7 jours.
Comme les résultats ne sont pas stockés dans les fichiers Rmd, pour faciliter la relecture de vos analyses par d'autres personnes, vous aurez donc intérêt à générer un HTML ou un PDF et à le commiter.
## Incidence annuelle
### Calcul
Comme pour grippe, on va séparer les années différemment afin de ne pas couper le pic de chaque épidémie annuelle. La consigne nous dit de le faire au 1er septembre, pour cela on va utiliser cette fonction.
```{r}
pic_annuel = function(annee) {
debut = paste0(annee-1,"-09-01")
fin = paste0(annee,"-09-01")
semaines = data$date > debut & data$date <= fin
sum(data$inc[semaines], na.rm=TRUE)
}
```
On met en place les années de début et de fin en gardant en tête que la première année du jeu de données doit être laissée de côté car on n'a pas accès aux valeurs depuis le 1er septembre pour l'année qui la précède. Les data commencent le 3 décembre 1990 et se finissent en février 2022, on va donc aller de 1992 à 2021.
```{r}
annees = 1992:2021
```
On créé le nouveau jeu de données en appliquant la fonction `pic_annuel`à chaque année et on vérifie ce que l'on a obtenu.
```{r}
inc_annuelle = data.frame(annee = annees,
incidence = sapply(annees, pic_annuel))
head(inc_annuelle)
```
On a bien l'incidence par année, c'est top.
### Inspection
voilà un premier graphique pour avoir un aperçu des valeurs par année.
Mais c'est en utilisant directement les données numériques que l'on verra avec précision les années avec le plus d'incidence. On va donc trier les données par incidence décroissante.
L'année avec l'incidence la plus forte était donc 2009.
L'exercice demande aussi de trouver l'incidence la plus faible. C'est flagrant sur le graphique mais on affiche de nouveau les données par ordre d'incidence (croissant cette fois) pour en être sûr.