--- title: "Analyse varicelle" author: "Marc Oudart" date: "11/04/2020" output: pdf_document: default html_document: default --- ```{r setup, include=FALSE} knitr::opts_chunk$set(echo = TRUE) ``` ## Préparation des données Les données de l'incidence de la varicelle 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 fin 1990 et se termine avec une semaine récente. L'URL est : ```{r} data_url = "https://www.sentiweb.fr/datasets/incidence-PAY-7.csv" data_local = "C:/Users/Marc/Desktop/MOOC/mooc-rr/module3/exo2/incidence-PAY-7.csv" ``` ### Téléchargement __Nous allons tester si le fichier local existe avec une condition `if`. Si non il sera téléchargé depuis l'url avec la fonction `download.file`. Si oui, il retournera `Fichier déjà téléchargé`__ ```{r} if (file.exists(data_local) == FALSE) { download.file(data_url, data_local) } else { print("Fichier déjà téléchargé") } ``` Importer les données dans la variable data en sautant la première ligne de commentaire du fichier. ```{r} data = read.csv(data_url, skip = 1) head(data) ``` Voir la fin du document : ```{r} tail(data) ``` Regarder s'il y a des données manquantes : ```{r} lignes_na = apply(data, 1, function(x) any(is.na(x))) data[lignes_na,] ``` Traverser data ligne par ligne (`data, 1`) et appliquer la fonction qui traverse colonne par colonne qui retourne tout (`any`) s'il y a valeur manquante (`is.na`). `data[lignes_na,]` pour voir le contenu de ces lignes. Super il n'y a pas de données manquantes. On peut directement travailler sur ce jeu de donnée. Quelles types de données ? Pour la colonne semaine et la colonne indice : ```{r} class(data$week) class(data$inc) ``` Tous les deux sont des entiers donc pas de transformation à faire. Il faut que R comprenne que la 1ère colonne sont des dates. Il nous faut donc la librairie `parsedate`. ```{r message=FALSE, warning=FALSE} library("parsedate") ``` Création d'une fonction (`convert_week`) pour transformer la 1ère colonne en date. ```{r} convert_week = function(date){ ws = paste(date) iso = paste0(substring(ws, 1, 4), "-W", substring(ws, 5, 6)) as.character(parse_iso_8601(iso)) } ``` Appliquer la fonction à toute les lignes. ```{r} data$date = as.Date(sapply(data$week, convert_week)) class(data$date) ``` Trier le jeu de données par ordre chronologique. ```{r} data = data[order(data$date),] head(data) ``` Est-ce que les lignes sont bien séparées d'1 semaine ? ```{r} all(diff(data$date) == 7) ``` On peut plotter les données : ```{r} with(data, plot(date, inc, type ="l")) ``` Le `with` spécifie juste que c'est de la variable `data` qu'il faut prendre (au lieu d'utiliser `data$date`). Appliquer seulement aux 200 derniers points : ```{r} with(tail(data, 200), plot(date, inc, type ="l")) ``` L'incidence de la varicelle semble suivre un cycle dont la largeur des pics est vraiment plus grand que ceux de la grippe. C'est pas uniquement en hiver. Il y a cependant un creux aux 2/3 de l'année vers septembre. Ce mois semble tout indiqué pour séparé nos années. ## L'analyse On va analyser d'années en années et non pas de semaine en semaine. On va faire des années du 1er septembre au 1er septembre de chaque année pour ne pas tomber au milieu d'un pic. On va faire une fonction pour ça : ```{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) } ``` L'année 1990 commence en fin d'année donc dans le pic donc il vaut mieux prendre des années à partir de 1991. 2020 n'est pas encore arrivé à setembre donc on va ignorer cette année là aussi. ```{r} annees = 1991:2019 ``` On va créer un nouveau tableau des incidences par année. ```{r} incidence_annuelle = data.frame(année = annees, incidence = sapply(annees, pic_annuel)) head(incidence_annuelle) ``` ```{r} plot(incidence_annuelle, type="p") ``` Voir les pics les plus importants en faisant un tri par l'incidence. ```{r} head(incidence_annuelle[order(-incidence_annuelle$incidence),]) ``` L'année avec le plus fort pic est l'année 2009. Voir les pics les moins importants en faisant un tri inverse par l'incidence. ```{r} head(incidence_annuelle[order(incidence_annuelle$incidence),]) ``` L'année 2002 a eu le moins de cas. Histogramme de la fréquence des incidences en 10 catégories. ```{r} hist(incidence_annuelle$incidence, breaks=10) ```