--- title: "Votre titre" author: "Votre nom" date: "La date du jour" output: html_document --- ```{r setup, include=FALSE} knitr::opts_chunk$set(echo = TRUE) ``` ## Préparation des données ### Téléchargement 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. ```{r} data_url = "http://www.sentiweb.fr/datasets/incidence-PAY-7.csv" data_file = "d:/Documents/varicelle.csv" if (!file.exists(data_file)) { download.file(data_url, data_file, method="auto") } data = read.csv(data_file, skip = 1) ``` On vérifie ce que l'on a obtenu. ```{r} head(data) tail(data) ``` 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 On charge la librairie qui va nous permettre de faire nos modifications sur les dates. ```{r} library(parsedate) ``` 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) ``` C'est tout bon, il reste à trier nos données par ordre chronologique. ```{r} data = data[order(data$date),] ``` Et on en profite pour vérifier que les dates sont bien espacées de 7 jours. ```{r} all(diff(data$date) == 7) ``` ### Inspection des données Un aperçu graphique des données. ```{r} plot(data$date, data$inc, type="l", xlab="Date", ylab="Incidence hebdomadaire") ``` ## 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. ```{r} plot(inc_annuelle, type="p", xlab="Année", ylab="Incidence annuelle") ``` ### Identification des épidémies les plus fortes 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. ```{r} head(inc_annuelle[order(-inc_annuelle$incidence),]) ``` 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. ```{r} head(inc_annuelle[order(inc_annuelle$incidence),]) ``` L'année avec l'incidence la plus faible était bien 2020.