--- title: "Votre titre" author: "Votre nom" date: "La date du jour" output: html_document --- ```{r setup, include=FALSE} knitr::opts_chunk$set(echo = TRUE) ``` ### Récupérer et mettre en forme les données On commence par récupérer les données sur le site de l'institut Scripps. Ce fichier contient des données de suivi mensuel de l'évolution de la concentration de CO2 atmosphérique mesurées à l'observatoire de Mauna Loa, Hawaii, États-Unis, de 1958 à nos jours. ```{r} data_url = "https://scrippsco2.ucsd.edu/assets/data/atmospheric/stations/in_situ_co2/monthly/monthly_in_situ_co2_mlo.csv" ``` On va paramétrer pour faire en sorte que la copie locale des données soit utilisée de préférence, et qu'elle ne soit pas téléchargée à chaque fois. On va toutefois dire de télécharger le fichier si jamais celui-ci n'est pas sur l'ordinateur en local. ```{r} data_file="monthly_in_situ_co2_mlo.csv" if(!file.exists(data_file)){ download.file(data_url, data_file, method ="auto") } ``` On peut maintenant charger le fichier à partir de la copie locale qu'on a faite. On enlève les 54 premières lignes qui contiennent des commentaires, ainsi que les trois lignes qui suivent qui contiennent les noms des colonnes. Nous allons rentrer les noms des colonnes manuellement pour mieux s'y retrouver. ```{r} data = read.csv2(data_file, sep=",", header=F, skip = 57, stringsAsFactors=FALSE) ``` On renomme les colonnes qui nous intéressent, c'est à dire les 6 premières. ```{r} names(data)[1] <- "Year" names(data)[2] <- "Month" names(data)[3] <- "Date_excel" names(data)[4] <- "Date.1" names(data)[5] <- "CO2" names(data)[6] <- "CO2.adj" ``` On va alors exclure les autres colonnes (7 à 10) qui apportent seulement des changements mineurs par rapport aux valeurs des colonnes 5 et 6. ```{r} data<-data[,-7:-10] str(data) ``` On voit que certaines de nos variables sont considérées en tant que caractères alors qu'elles devraient être numériques. On les convertit, puis on change les valeurs -99.99 qui correspondent à des valeurs manquantes en NA pour que R les considère comme telles. ```{r} data$CO2<-as.numeric(data$CO2) data$CO2.adj<-as.numeric(data$CO2.adj) data[data == -99.99] <- NA str(data) ``` ### Premières représentations graphiques On va maintenant convertir la date en un format interprétable par R pour pouvoir faire des représentations graphiques. On utilise la librairie zoo et la fonction yearmon, qui permet de convertir en format date. On représente ensuite l'évolution de la concentration en CO2 au fil du temps par un graphe. ```{r} data$date2 <-paste(data$Year,data$Month, sep="") library(zoo) data$truedate <- as.Date(as.yearmon(data$date2, "%Y%m")) plot(data$truedate,data$CO2, type = "l", xlab="Année", ylab="Concentration en CO2 dans l'atmosphère (ppm)") ``` Pour avoir une idée de l'évolution lente, on peut moyenner la concentration de CO2 par ans. ```{r} moy<-aggregate(data[, 5], list(data$Year), mean, na.rm=TRUE) names(moy)[1] <- "Year" names(moy)[2] <- "Mean.CO2" ``` On va maintenant faire apparaître sur le même graphe la courbe d'évolution cyclique (en noir) et la courbe d'évolution lente, qui moyenne les fluctuations annuelles (en rouge). ```{r} plot(data$truedate,data$CO2, xlim=as.Date(c("1958-01-01", "2020-01-01")), ylim = c(300,450), type="l",xlab="Année", ylab="Concentration en CO2 dans l'atmosphère (ppm)") par(new=TRUE) plot(moy$Year,moy$Mean.CO2, xlim=c(1958,2020), ylim = c(300,450), type="l", col="red", xlab="", ylab="" ) ``` ### Caractérisation de l'oscillation périodique Pour avoir une idée un peu plus précise de l'évolution périodique de la concentration en CO2 atmosphérique, on va zommer sur une partie de notre graphe. ```{r} plot(data$truedate[100:140],data$CO2[100:140],lwd=2, type = "b", xlab="Année", ylab="Concentration en CO2 dans l'atmosphère (ppm)") ``` On observe ici le cycle de variation saisonnier du CO2 atmosphérique, avec une augmentation de la quantité de CO2 atmosphérique en automne et en hiver, puis une diminution au printemps et en été. Ce cyle est en grande partie causé par les plantes, qui au travers de la photosynthèse et de la respiration, concentrent le CO2 pendant le printemps et l'été, puis le relarguent à l'automne et en hiver. Pour autant, ce cyle augmente au cours du temps car il y a de plus en plus de dioxyde de carbone émis au travers des activités humaines. On repart donc chaque année sur une valeur minimum du cycle plus élevée. ### Détermination de l'évolution du CO2 atmosphérique ```{r} plot(moy$Year,moy$Mean.CO2, xlim=c(1958,2020), ylim = c(300,450), type="p", xlab="Année", ylab="Concentration en CO2 dans l'atmosphère (ppm)" ) # mod<-lm(moy$Mean.CO2 ~ moy$Year) coeff=coefficients(mod) coeff ``` Equation de la droite de regression : ```{r} eq = paste0("y = ", round(coeff[2],1), "*x ", round(coeff[1],1)) eq ``` Graphe : ```{r, keep=all} plot(moy$Year,moy$Mean.CO2, xlim=c(1958,2030), ylim = c(300,450), type="p", xlab="Année", ylab="Concentration en CO2 dans l'atmosphère (ppm)" ) abline(mod, col="red") ``` On voit que notre droite de régression n'est pas optimale pour réprésenter l'évolution de la concentration en CO2, elle va en particulier sous-estimer les concentrations dans les années qui viennent. Pour avoir une meilleure approximation, on va uniquement prendre en compte les 20 dernières années, qui comportent une bonne information sur la tendance à venir. Ici, on va bien sûr faire l'hypothèse simple que la concentration va évoluer de façon linéaire. On aurait pu tenter une évolution exponentielle au vu de notre courbe, mais j'avoue mon manque de connaissances sur R pour pouvoir faire ce genre de choses. On se base donc sur le fait que dans les 5 années qui suivent, l'humanité ne fait rien pour diminuer ses émissions de CO2, mais n'en émet pas plus que le taux annuel de ces 20 dernières années. ### Nouveau calcul de l'évolution de la concentration en CO2 atmosphérique en prenant en compte uniquement les 20 dernières années. On va donc recalculer un modèle linéaire avec une sous-partie de notre jeu de données. ```{r} moy.sub<-subset(moy, moy$Year>=2000) Year <- moy.sub$Year ## Pour encoder correctement la variable année, car j'ai eu des soucis avec la fonction predict par la suite mod2<-lm(moy.sub$Mean.CO2 ~ Year) coeff=coefficients(mod2) coeff ``` L'équation de notre nouvelle droite de régression est : ```{r} eq = paste0("y = ", round(coeff[2],1), "*x ", round(coeff[1],1)) eq ``` Traçons la droite de régression pour voir comment elle suit nos points. ```{r, keep=all} plot(Year,moy.sub$Mean.CO2, xlim=c(1990,2030), ylim = c(300,450), type="p", xlab="Année", ylab="Concentration en CO2 dans l'atmosphère (ppm)" ) abline(mod2, col="red") ``` Même si on a pas énormément de points, il semble que notre droite de régression corresponde bien à l'évolution linéaire de la concentration en CO2. ### Prédictions de l'évolution jusqu'en 2025 On peut maintenant prédire les valeurs moyennes de la concentration en CO2 atmosphérique (en ppm) de l'année 2021 à l'année 2025. ```{r} new.years <- data.frame(Year = c(2021:2025)) predict(mod2, newdata = data.frame(new.years)) ``` Voilà, comme on s'en doutait, et même en utilisant un modèle extrêmement simple pour décrire l'évolution, les résultats ne sont pas joyeux et indiquent que la concentration en CO2 atmosphérique continuera d'augmenter tant qu'on ne prendra pas les mesures nécessaires.