From 9ca98e8f9ab75e93c61485b8a383402cb3bcb269 Mon Sep 17 00:00:00 2001 From: Martinjunior Date: Sat, 12 Oct 2024 22:45:36 +0100 Subject: [PATCH] First commit de l'analyse sur l'incidence de la varicelle --- module3/exo2/exercice_fr.Rmd | 134 +++++++++++++++++++++++++++++++---- 1 file changed, 120 insertions(+), 14 deletions(-) diff --git a/module3/exo2/exercice_fr.Rmd b/module3/exo2/exercice_fr.Rmd index 7eece5e..1597842 100644 --- a/module3/exo2/exercice_fr.Rmd +++ b/module3/exo2/exercice_fr.Rmd @@ -1,7 +1,7 @@ --- -title: "Votre titre" -author: "Votre nom" -date: "La date du jour" +title: "Analyse de l'incidence de la varicelle" +author: "Martin ADECHI" +date: "12/10/2024" output: html_document --- @@ -9,25 +9,131 @@ output: html_document ```{r setup, include=FALSE} knitr::opts_chunk$set(echo = TRUE) ``` +Nous allons charger les données de la source. Mais a cause d"une éventuelle non pérrenité du lien,nous allons aussi publier les données de l'analyse dans le même emplacement -## Quelques explications +```{r} +data_url = "https://www.sentiweb.fr/datasets/all/inc-7-PAY.csv" +``` +Nous téléchargeons les données de la source si les données locales ne sont pas disponibles + +```{r} +data_file = "varicelle.csv" +``` +```{r} +if(!file.exists(data_file)){ + download.file(data_url,data_file,method = "auto") +} +``` +## Lecture des données +```{r} +data_source = read.csv(data_file,skip = 1) +``` +Voyons la structure des données + +```{r} +str(data_source) +``` +la variable inc est bien compris comme une colonne d'entiers. Ce qui exactement ce a quoi on s'attendait + +Voyons s'il y a des manquants dans notre jeu de données +```{r} +lignes_na = apply(data_source,1,function(x) any(is.na(x))) +data_source[lignes_na,] +``` +Parfait, il n'y a pas de manquants dans notre jeu de données +## Traitement des dates + +```{r} +library(parsedate) +``` +```{r} +convert_week <- function(weeks){ + w = paste0(weeks) + year = substr(w,1,4) + week = substr(w,5,6) + iso = parse_iso_8601(paste0(year,'-W',week)) + as.character(iso) +} +``` +Nous créons une autre colonne date qui va conténir les dates +```{r} +data_source$Date = as.Date(convert_week(data_source$week)) +``` +```{r} +class(data_source$Date) +``` -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 . -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: +Nous allons vérifier si l'écart entre les données sont effectivement d'une semaine.Pour cela nous allons ordonner les données pour qu'ils partent des plus anciennes dates aux plus nouvelles. + +```{r} +data_source = data_source[order(data_source$Date),] +``` +Maintenant a l'étape de l'état de vérification des données + +```{r} +all(diff(data_source$Date) == 7) +``` +Toutes nos données sont cohérentes. Donc nous allons passer a une visualisation de nos données -```{r cars} -summary(cars) +```{r} +plot(data_source$Date,data_source$inc,type = 'l',col = "blue",lwd = 2) ``` -Et on peut aussi aisément inclure des figures. Par exemple: -```{r pressure, echo=FALSE} -plot(pressure) +Nous allons regarder de près ce qui se passe. +```{r} +with(tail(data_source,400),plot(Date,inc,type = 'l',col = "blue",lwd = 2)) +``` +## Incidence annuelle + +### Calcul + +Nous allons définir comme début de chaque période annuelle le 1er septembre et nous allons compter les incidences annuelles + +```{r} +pic_annuelle <- function(annee) { + debut = paste0(annee-1,'-09-01') + fin = paste0(annee,'-09-01') + + inc = data_source$Date > debut & data_source$Date <= fin + inc = sum(data_source$inc[inc]) +} + +``` +Cette fonction définit sera appliqué a chaque année. Malheureusement comme le début de notre période annuelle commence le 1er septembre,l'année 1990 servira uniquement a définir la période annuelle de 1991 + +```{r} +annee = 1991:2024 +inc = sapply(annee,pic_annuelle) +``` +Nous allons définir la série qui contient les incidences annuelles de chaque année + +```{r} +incidence_annuelle <- data.frame(Annee = annee,inc = inc) +incidence_annuelle +``` +### Inspection +```{r} +plot(incidence_annuelle,col = 'blue') +``` + +### Identification des épidémies les plus fortes + +Pour pouvoir les épidémies les plus fortes, nous allons ordonner les incidences annuelles + +```{r} +incidence_annuelle <- incidence_annuelle[order(-incidence_annuelle$inc),] +head(incidence_annuelle) +``` +```{r} +tail(incidence_annuelle) +``` + +Enfin, un histogramme montre bien que les épidémies fortes, qui touchent environ 10% de la population française, sont assez rares: il y en eu trois au cours des 35 dernières années. +```{r} +hist(incidence_annuelle$inc,breaks = 10,col = 'blue') ``` -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. -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. -Maintenant, à vous de jouer! Vous pouvez effacer toutes ces informations et les remplacer par votre document computationnel. -- 2.18.1