From 8c251e4a5f0bf4654af20e16e83e306bc5a5b425 Mon Sep 17 00:00:00 2001 From: 1059d1e2000ea662ceecd251e841f94b <1059d1e2000ea662ceecd251e841f94b@app-learninglab.inria.fr> Date: Mon, 20 May 2024 17:48:38 +0000 Subject: [PATCH] syndromes-grippaux-analysis.Rmd --- .../exo1/influenza-like-illness-analysis.Rmd | 161 ++++++++++++++++++ 1 file changed, 161 insertions(+) diff --git a/module3/exo1/influenza-like-illness-analysis.Rmd b/module3/exo1/influenza-like-illness-analysis.Rmd index 8047fa0..f2a5be2 100644 --- a/module3/exo1/influenza-like-illness-analysis.Rmd +++ b/module3/exo1/influenza-like-illness-analysis.Rmd @@ -15,6 +15,167 @@ header-includes: - \hypersetup{colorlinks=true,pagebackref=true} --- +#recherche dans le réseau sentinelles les données pour les syndromes grippaux. +#télecharger le document en "csv" +#vérification si des données sont manquantes : aucune données manquantes +#importer des données dans Rstudio +#créer un document R Markdown_HTML + +```{r} +data_url="https://www.sentiweb.fr/datasets/incidence-PAY-3.csv?v=hmw9y" +``` +```{r} +tail(data)#regardons l'autre bout du jeu de donnée +``` +```{r} +#inspecter le type de donées +class(data$week) #de la colonne week +`` +```{r} +#inspecter le type de donées +class(data$inc) #de la colonne inc_problème le tiret "character" à la place de valeur numérique. +``` +```{r} +data = read.csv(data_url,skip = 1, na.strings = "-") #considérer le tiret comme une donnée manquante +class(data$inc) +``` +```{r} +#lire les données directement de la source +#faire attention aux données manquantes au début de la lecture +``` +```{r} +#verfication des données +library(parsedate) +``` +Explications : + +as.character(date): Convertit l'entier date en une chaîne de caractères. +substring(ws, 1, 4): Extrait les quatre premiers caractères, correspondant à l'année. +substring(ws, 5, 6): Extrait les deux derniers caractères, correspondant au numéro de la semaine. +paste0(substring(ws, 1, 4), "-W", substring(ws, 5, 6)): Combine les deux sous-chaînes avec "-W" entre elles pour former une chaîne de caractères au format ISO. + +```{r} +date = 199501 +ws = paste(date) +iso = paste0(substring(ws, 1, 4), "-W", substring(ws, 5, 6)) +iso +``` +```{r} +# la date du premier lundi de cette semaine +parse_iso_8601(iso) +``` +``{r} +#appliquer cette fonction aux données +convert_week = function(date){ + ws = paste(date) + iso = paste0(substring(ws, 1, 4), "-W", substring(ws, 5, 6)) + parse_iso_8601(iso) +} + +``` +Fonction à modifier à cause de la lecture R : +creer une nouvelle colonne appellée "date" rq : cette fonction ne peut pas être lu dans R (incomplète) +data$date = sapply(data$week,convert_week) +convertir dans la fonction en chaine de caractère pour une lecture dans 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)) +} + + + +```{r} +data$date = as.Date(sapply(data$week,convert_week)) + +#verification +class(data$date) +``` +```{r} +#classer par ordre chronologique +``` +```{r} +data = data[order(data$date),] +``` + +```{r} +head(data) +``` +```{r} +#verifier que l'interval soit de 7 jours +all(diff(data$date) == 7) +``` +```{r} +#observation visuelle +``` +```{r} +with(tail(data, 200), plot(date, inc, type = "l"))#faire un zoom sur les dernier 200 points +``` +```{r} +#question et réponse +#definir de août à août +#il faut sous estimer l'année 1989 car pas de pic +annee = 1990 +debut = paste0(annee-1, "-08-01") +fin = paste0("-08-01") +semaines = data$date > debut & data$date <= fin +sum(data$inc[semaine], na.rm = TRUE) +``` +```{r} +#l'applique à toute les années des données +pic_annuel = function(annee){ + debut = paste0(annee-1, "-08-01") + fin = paste0("-08-01") + semaines = data$date > debut & date$date <= fin + sum(data$inc[semaine], na.rm = TRUE) } +``` +``` + +```{r} +annees = 1986:2017 +``` + +```{r} +install.packages("sapply") +incidence_annuelle = data.frame(annee = annees, incidence = sapply(annees, pic_annuel)) +``` + +```{r} +head(incidence_annuelle) +``` +```{r} +plot(incidence_annuelle, type"p") #avec des points +``` +```{r} +head(incidence_annuelle [order( = incidence_annuelle$incidence),]) +``` + +```{r} +hist(incidence_annuelle$incidence, breaks = 10) +``` + +```{r} +with(data, plot(date, inc, type = "l")) #afficher en ligne +``` + + +```{r} +# Vérifier s'il y a des données manquantes dans les lignes +lignes_na <- apply(data, 1, function(x) any(is.na(x))) + +# Afficher uniquement les lignes ayant des valeurs manquantes +data[lignes_na, ] +``` +```{r} +#telecharger les données +``` + + +```{r} +data=read.csv(data_url,skip = 1)#ignorer la première ligne qui contient un commentaire +head(data) + + ```{r setup, include=FALSE} knitr::opts_chunk$set(echo = TRUE) ``` -- 2.18.1