--- title: "Analyse de l'incidence du syndrôme grippal" author: "Matthieu Moreau" date: "`r format(Sys.time(), '%d %B, %Y')`" output: html_document --- ```{r setup, include=FALSE} knitr::opts_chunk$set(echo = TRUE) ``` ## Préparation des données ### Téléchargement Les données de l'incidence de la varicelle sont disponibles du site Web du [Réseau Sentinelles](http://www.sentiweb.fr/datasets/). 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 1991 et se termine avec une semaine récente. L'URL est: ```{r} data_url = "http://www.sentiweb.fr/datasets/incidence-PAY-7.csv" data_file = "Incidence_varicelle.csv" # We will download the dataset only if a local copy does not exist yet if (!file.exists(data_file)) { download.file(data_url, data_file, method="auto") } ``` ### Lecture et description des données La première ligne du fichier CSV est un commentaire, que nous ignorons en précisant `skip=1`. ```{r} data = read.csv(data_file, skip=1) ``` ```{r} head(data) tail(data) ``` Aucune semaine ne présent de NA ```{r} na_records = apply(data, 1, function (x) any(is.na(x))) data[na_records,] ``` Vérifier que *"week"* et *"inc"* sont bien des entiers ```{r} class(data$week) class(data$inc) ``` ### Conversion des numéros de semaine ```{r} library(parsedate) ``` ```{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)) } ``` ```{r} data$date = as.Date(convert_week(data$week)) head(data$date) class(data$date) ``` ```{r} data = data[order(data$date),] all(diff(data$date) == 7) ``` ### Inspection Représentation graphique de l'ensemble des données ```{r} plot(data$date, data$inc, type="l", xlab="Date", ylab="Incidence hebdomadaire") ``` Zoom sur les 200 dernières semaines ```{r} with(tail(data, 200), plot(date, inc, type="l", xlab="Date", ylab="Incidence hebdomadaire")) ``` La varicelle ne présente pas, comme la grippe, une longue periode de faible incidence durant la période estivale. ```{r} with(tail(data, 600), plot(date, inc, type="l", xlab="Date", ylab="Incidence hebdomadaire")) abline(v=as.Date(paste0(2010:2020,"-09-01")),col='red') ``` Cependant le minimum de l'épidémie sur les 10 dernières années est observé autour du 1er septembre ## L'incidence annuelle ### Calcul Nous allons calculer la somme du niveau d'incidence de chaque année du 1er septembre au 1er septembre ```{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) } ``` ```{r} head(data) ``` Les données commence en Decembre 1990 ce qui ne nous permet pas de quantifier le pic de 1991 en entier. Nous commencerons donc en 1992. ```{r} annees = 1992:2021 ``` ```{r} inc_annuelle = data.frame(annee = annees, incidence = sapply(annees, pic_annuel)) head(inc_annuelle) tail(inc_annuelle) ``` ### Inspection Voici les incidences annuelles en graphique: ```{r} plot(inc_annuelle, type="p", xlab="Année", ylab="Incidence annuelle") ``` ## Incidence Min et Max ```{r} head(inc_annuelle[order(-inc_annuelle$incidence),]) ``` ```{r} head(inc_annuelle[order(inc_annuelle$incidence),]) ```