--- title: "Analyse de l'incidence du syndrome grippal" author: "Marc" date: "10/04/2020" output: html_document --- ```{r setup, include=FALSE} knitr::opts_chunk$set(echo = TRUE) ``` Récupération des données à partir du site du réseau sentinelle. ```{r} data_url = "https://www.sentiweb.fr/datasets/incidence-PAY-3.csv" ``` 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. 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 (différent de la vidéo). En fait la donnée manquante de inc a été remplacée par 0. 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} install.packages("parsedate") 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'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 août au 1er août 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, "-08-01") fin = paste0(annee, "-08-01") semaines = data$date > debut & data$date <= fin sum(data$inc[semaines], na.rm = TRUE) } ``` L'année 1984 commence en hiver donc dans le pic donc il vaut mieux prendre des années à partir de 1985. ```{r} annees = 1985:2020 ``` 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),]) ``` Histogramme de la fréquence des incidences en 10 catégories. ```{r} hist(incidence_annuelle$incidence, breaks=10) ```