--- title: "travaux paires" output: html_document --- ```{r setup, include=FALSE} knitr::opts_chunk$set(echo = TRUE) ``` sujet : En 1958, Charles David Keeling a initié une mesure de la concentration de CO2 dans l'atmosphère à l'observatoire de Mauna Loa, Hawaii, États-Unis qui continue jusqu'à aujourd'hui. L'objectif initial était d'étudier la variation saisonnière, mais l'intérêt s'est déplacé plus tard vers l'étude de la tendance croissante dans le contexte du changement climatique. En honneur à Keeling, ce jeu de données est souvent appelé "Keeling Curve" (voir https://en.wikipedia.org/wiki/Keeling_Curve pour l'histoire et l'importance de ces données). Les données sont disponibles sur le site Web de l'institut Scripps. Utilisez le fichier avec les observations hebdomadaires. Attention, ce fichier est mis à jour régulièrement avec de nouvelles observations. Notez donc bien la date du téléchargement, et gardez une copie locale de la version précise que vous analysez. Faites aussi attention aux données manquantes. Votre mission si vous l'acceptez : 1. Réalisez un graphique qui vous montrera une oscillation périodique superposée à une évolution systématique plus lente. 2. Séparez ces deux phénomènes. Caractérisez l'oscillation périodique. Proposez un modèle simple de la contribution lente, estimez ses paramètres et tentez une extrapolation jusqu'à 2025 (dans le but de pouvoir valider le modèle par des observations futures). 3. Déposer dans FUN votre résultat On commence par importer les données : Elles sont disponible sur le site internet suivant : [observatoire Hawaï](https://scrippsco2.ucsd.edu/data/atmospheric_co2/mlo.html) ```{r} data_url="https://scrippsco2.ucsd.edu/assets/data/atmospheric/stations/in_situ_co2/weekly/weekly_in_situ_co2_mlo.csv" ``` Les 44 premières lignes du fichier contien des commentaires, il faut les ignorés : ```{r} data=read.csv2(data_url, sep=",", skip=44) str(data) ``` On nome les colones qui représente la date du relevé et la concentration en CO2 : ```{r} colnames(data)= c("date","concentration") str(data) ``` vérifions les classes : ```{r} class(data$date) class(data$concentration) ``` On recode la variable concentration en variable numérique : ```{r} data$concentration=as.integer(x = data$concentration) class(data$concentration) ``` On recode la variable date en en varaible "Date": ```{r} na_records=apply(data, 1, function(x) any(is.na(x)) ) data[na_records,] ``` on importe la librairy parsedate: ```{r} library(parsedate) data$date=parse_iso_8601(data$date) data$date=as.character(data$date) data$date=as.Date(data$date) class(data$date) class(data$concentration) ``` On vérifie que tout est bon : ```{r} head(data$date) ``` On trace l'évolution de la concentration périodique : ```{r} plot(x=data$date, y=data$concentration, type="l", xlab="annee", ylab="concentration CO2", main="évolution périodique de la concentration en CO2") ``` zoom sur les quelques premières années : ```{r} with(head(data, 200), plot (date, concentration, type="l")) ``` les oscilations sont cycliques sur environ 1 an. On eput donc faire une moyenne sur chaque année et tracer l'évolution. On va partir du 30 juin de l'année N jusqu'au 30 juin de l'année N+1. On prend l'année N+1 comme étiquette. ```{r} moyenne_annuelle= function(annee) { debut=paste0(annee-1,"-06-30") fin=paste0(annee,"-06-30") semaines=data$date>debut & data$date<=fin mean(data$concentration[semaines], na.rm = TRUE) } ``` l'année 1958 n'est pas complète, on commence conc à 1959 et on s'arréte à 2019 ```{r} annees=1959:2019 class(annees) ``` On crée un nouveau jeu de données concentration_annuelle qui représente la variation annuelle: ```{r} concentration_annuelle=data.frame(annee = annees, concen = sapply(annees, moyenne_annuelle)) ``` On trace l'évolution : ```{r} plot(concentration_annuelle, type="l", xlab="annee", ylab="concentration CO2", main="évolution annuelle de la concentration en CO2") ``` Je ne suis pas parvenu à afficher les deux courbes sur le même graphique... Modéle simple de la contribution lente : régression linéaire : ```{r} mod=(lm(concen~annee, concentration_annuelle)) summary(mod) ``` on a les coefficients du modèle, on peut donc extrapoler jusqu'en 2025 : ```{r} predict(mod, data.frame(annee=2025), interval="confidence") ``` On a donc la valeur prévue pour 2025 ainsi qu'un intervale de confience à 95%.