diff --git a/module3/exo3/concentration-en-CO2.html b/module3/exo3/concentration-en-CO2.html new file mode 100644 index 0000000000000000000000000000000000000000..d7c95b9accbf414cd5544ee9505633f10c988705 --- /dev/null +++ b/module3/exo3/concentration-en-CO2.html @@ -0,0 +1,574 @@ + + + + +
+ + + + + + + + + + +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 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.
+Le fichier a été téléchargé le 08/12/2023. On télécharge le document +via le site Scrippsco2 +On observe le fichier et on voir que les 44 premières lignes sont des +commentaires. On va donc retirer les 43 premières lignes.
+knitr::opts_chunk$set(eval = TRUE)
+data_url = "https://scrippsco2.ucsd.edu/assets/data/atmospheric/stations/in_situ_co2/weekly/weekly_in_situ_co2_mlo.csv"
+data = read.csv2(data_url, header= TRUE, sep= ",", skip=43, row.names = NULL)
+Une copie locale du fichier a été sauvegarder au cas où les donnée +soient modifiées ou supprimées. Il est possible d’ouvrir le fichier soit +avec la version en ligne, soit via la copie locale.
+data_file = "weekly_in_situ_co2_mlo.csv"
+if (!file.exists(data_file)) {
+ download.file(data_url, data_file, method="auto")
+}
+data <- weekly_in_situ_co2_mlo
+## Error in eval(expr, envir, enclos): objet 'weekly_in_situ_co2_mlo' introuvable
+On regarde la base de données et comment sont codées les +variables.
+head(data)
+## row.names
+## 1 1958-03-29
+## 2 1958-04-05
+## 3 1958-04-12
+## 4 1958-04-19
+## 5 1958-04-26
+## 6 1958-05-03
+## X.indicated.by.the.date.in.the.first.column..............................
+## 1 316.19
+## 2 317.31
+## 3 317.69
+## 4 317.58
+## 5 316.48
+## 6 316.95
+tail(data)
+## row.names
+## 3342 2023-09-09
+## 3343 2023-09-16
+## 3344 2023-09-23
+## 3345 2023-09-30
+## 3346 2023-10-07
+## 3347 2023-10-14
+## X.indicated.by.the.date.in.the.first.column..............................
+## 3342 418.28
+## 3343 418.52
+## 3344 417.77
+## 3345 417.89
+## 3346 418.10
+## 3347 418.82
+Les données vont de 1958 à 2023, et la concentration en CO2 est +représenté par un indice chaque semaine.
+On regarde s’il y a des données manquantes
+na_records = apply(data, 1, function (x) any(is.na(x)))
+data[na_records,]
+## [1] row.names
+## [2] X.indicated.by.the.date.in.the.first.column..............................
+## <0 lignes> (ou 'row.names' de longueur nulle)
+Aucune données n’est manquantes dans la base de données.
+On va renommer les colonnes pour pouvoir mieux analyser les +données
+colnames(data) <- c("Date", "CO2")
+data<-data[-1,]
+On regarde ensuite comment sont codés les variables.
+class(data$Date) #character
+## [1] "character"
+class(data$CO2) #numeric
+## [1] "character"
+La variable Date est codé comme un character et la variable CO2 comme +un numérique. On va transformer la variable Date en format date. Les +données date sont sous le format Année-mois-jour.
+data$Date = as.Date(data$Date)
+class(data$Date)
+## [1] "Date"
+La vairable “Date” est maintenant codé comme une date.
+On vérifie bien qu’il y est 7 jours entre chaque semaine
+data = data[order(data$Date),]
+all(diff(data$Date) == 7)
+## [1] FALSE
+chaque semaine commence un samedi.
+On crée une variable année et une variable mois, pour regarder +l’évolution annuelle et mensuelle de la concentration en CO2
+data$Année <- format(as.Date(data$Date, format= "%Y-%m-%d"), "%Y")
+data$Mois<- format(as.Date(data$Date, format= "%Y-%m-%d"), "%Y-%m")
+On regarde ensuite la distibution de la moyenne de la concentration +anuuelle de 1958 à 2023
+class(data$Année)
+## [1] "character"
+data$Année = as.numeric(data$Année)
+
+library(dplyr)
+##
+## Attachement du package : 'dplyr'
+## Les objets suivants sont masqués depuis 'package:stats':
+##
+## filter, lag
+## Les objets suivants sont masqués depuis 'package:base':
+##
+## intersect, setdiff, setequal, union
+data_annual_mean <- data %>%
+ group_by(Année) %>%
+ summarise(mean_CO2 = mean(CO2, na.rm= TRUE))
+
+plot(data_annual_mean, type="l", xlab="Année", ylab="Concentratin moyenne annuelle en CO2")
+## Error in plot.window(...): valeurs finies requises pour 'ylim'
+
+Interprétation: on observe une augmentation de la
+concentration moyenne en CO2 de 1958 à 2023.
On cherche maintenant à montrer une oscillation périodique et +l’évolution systématique plus lente. Pour cela nous avons utilisé la +sinusoide avec le package ggplot2
+library(ggplot2)
+## Warning: le package 'ggplot2' a été compilé avec la version R 4.2.3
+x <- data$Date
+y <- sin(data$CO2)
+## Error in sin(data$CO2): argument non numérique pour une fonction mathématique
+data_periodique <-data.frame(x, y, data$CO2)
+## Error in data.frame(x, y, data$CO2): objet 'y' introuvable
+ggplot(data_periodique, aes(x, y)) + geom_line(aes(y= y), color = "blue") + geom_line(aes(y= data.CO2), color = "red")
+## Error in ggplot(data_periodique, aes(x, y)): objet 'data_periodique' introuvable
+On regarde l’oscillation seule des années 2000 à 2023:
+year_2000 <- subset(data, Année >= 2000)
+evolution <- sin(year_2000$CO2)
+## Error in sin(year_2000$CO2): argument non numérique pour une fonction mathématique
+data_periodique_2000 <-data.frame(year_2000$Date, year_2000$CO2)
+ggplot(data_periodique_2000, aes(year_2000.Date, year_2000.CO2)) + geom_line()
+
+Sur le graphique on voit bien que l’on a une oscillation chaque année et
+que ces oscillations augmentent chaque année. On regarde ensuite en
+détaille une année. Nous avons chois l’année 2000 comme exemple.
year_2000_2 <- subset(data, Année == 2000)
+evolution <- sin(year_2000_2$CO2)
+## Error in sin(year_2000_2$CO2): argument non numérique pour une fonction mathématique
+data_periodique_2000_2 <-data.frame(year_2000_2$Date, year_2000_2$CO2)
+ggplot(data_periodique_2000_2, aes(year_2000_2.Date, year_2000_2.CO2)) + geom_line()
+
+Nous pouvons observer que le pique de l’oscillation se trouve vers le
+mois de juin, là où nous avons la concentration la plus haute en CO2. La
+concentration la plus base se situe vers le mois d’octobre.
Nous regardons ensuite la modélisation de l’évolution de la +concentration en CO2. Ici, nous allons utiliser une régression linéaire +siple.
+model <- lm(Date ~ CO2, data)
+summary(model)
+## Error in Ops.difftime((f - mean(f)), 2): '^' non defini pour des objets "difftime"
+