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).
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.
Les données sont disponibles sur le site Web de l' [Institut Scripps](https://scrippsco2.ucsd.edu/) . J'ai utilisé par erreur les observations mensuelles (je n'ai pas le temps de refaire tout le travail en utilisant les données hebdomadaires, ce sont d'ailleurs les données mensuelles qui sont utilisées en général dans les études d'impact climatiques ) [observations mensuelles](https://scrippsco2.ucsd.edu/assets/data/atmospheric/stations/in_situ_co2/monthly/monthly_in_situ_co2_mlo.csv). 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.
### Pré-requis
### Pré-requis
...
@@ -18,10 +18,18 @@ Traitement de suites chronologiques
...
@@ -18,10 +18,18 @@ Traitement de suites chronologiques
Quelques références:
Quelques références:
- [caschrono: Séries Temporelles Avec R] (https://cran.r-project.org/web/packages/caschrono/) - Yves Aragon - Université Toulouse Capitole - 28 janvier 2019
- [Introduction à l’Étude des Séries Temporelles](https://perso.math.univ-toulouse.fr/jydauxoi/files/2017/04/poly_eleves.pdf) J-Y. Dauxois 2016-2017
- [ARIMA modelling in R](https://otexts.com/fpp2/arima-r.html)
Didier Delignières Séminaire EA "Sport – Performance – Santé" Mars 2000
- [Introduction à la manipulation de série temporelle avec R MAP-STA2 : Séries chronologiques](https://www.imo.universite-paris-saclay.fr/~goude/Materials/time_series/cours1_R_serie_temp.pdf) Yannig Goude yannig.goude@edf.fr 2019-2020
- [Séries temporelles, avec R](http://avram.perso.univ-pau.fr/proc/geo3.pdf) Florin Avram
** Remplacement dans la série des valeurs observées, des valeurs manquantes -99.99 par celles qui sont interpolées
**Traitement des valeurs manquantes notées -99.99**
** on enlève ensuite les observations manquantes
```{r }
Il s'avère que dans la série des valeurs observées complétée par les valeurs interpolées, il reste des observations avec des valeurs manquantes (-99.99). On supprime ces observations.
geom_line(aes( group = dataCO2_by_year$Year , colour=dataCO2_by_year$Year)) +
geom_line(aes( group = dataCO2_by_year$Year , colour=dataCO2_by_year$Year)) +
xlab("Month")+
xlab("Month")+
ylab("CO2 Concentration (ppm)") +
ylab("CO2 Concentration (ppm)") +
ggtitle("Graphique saisonnier")
ggtitle("Graphique 2: Evolution saisonnière de la concentration en CO2, par année")
```
```
- On déduit du graphique 1 que la série n'est pas stationnaire, elle présente une **tendance** (augmentation du taux de CO2 au cours du temps).
- La série montre une **composante saisonnière**, qui semble suivre le cycle annuel, comme en témoigne le graphique 2. En effet les courbes annuelles ont la même forme, tout en étant décalée dans le temps.
- On ne voit pas sur ces graphiques de ruptures dans le comportement de la série.
- On ne détecte pas d'observations aberrantes.
**Question 1: Réalisez un graphique qui vous montrera une oscillation périodique superposée à une évolution systématique plus lente.**
```{r, message=FALSE, warning=FALSE }
# Définition en tant que série temporelle
Co2_train <- ts(dataCO2$ObsCO2Comp, start = c(1958,3), frequency = 12)
T <- time(Co2_train)
base <- data.frame(Y=dataCO2$ObsCO2Comp,X1=as.numeric(T))
#essai d'ajustement à un modèle de régression linéaire
Série n'est pas stationnaire comme le montre le graphique
```
### Modélisation de la série temporelle
On va chercher à modéliser la série en utilisant une catégorie de modèles qui cherche à déterminer chaque valeur de la série en fonction des valeurs qui la précède (yt = f(yt-1, yt-2, …)). C'est le cas des modèles ARIMA ("AutoRegressive – Integrated – Moving Average"). Cette catégorie de modèles a été popularisée et formalisée par Box et Jenkins (1976).
Série montre une saisonnalité voir graphique 2
Les processus autorégressifs supposent que chaque point peut être prédit par la somme pondérée d'un ensemble de points précédents, plus un terme aléatoire d'erreur.
Now, knowing the the non-statinary and seasonality of the data, it suggest to use theseasons differencing to model the data. To answer,
Le processus d'intégration suppose que chaque point présente une différence constante avec le point précédent.
Les processus de moyenne mobile supposent que chaque point est fonction des erreurs
entachant les points précédant, plus sa propre erreur.
* How is Autocorelation function and Partial Auto corellation?
Un modèle ARIMA est étiqueté comme modèle ARIMA (p,d,q), dans lequel:
Here is the plot of ACF and PACF from the *forecast* package:
- p est le nombre de termes auto-régressifs
- d est le nombre de différences
- q est le nombre de moyennes mobiles.
On va utiliser la fonction **auto.arima()** qui est un algorithme automatique qui permet de trouver le modèle ARIMA qui estime le mieux la série temporelle.
```{r}
Co2_train <- ts(dataCO2_by_year$ObsCO2Comp, start = c(1958,3), frequency = 12)
```{r, message=FALSE, warning=FALSE}
Co2_train <- ts(dataCO2$ObsCO2Comp, start = c(1958,3), frequency = 12)
Co2_train %>% ggtsdisplay()
Co2_train %>% ggtsdisplay()
```
```
```{r, message=FALSE, warning=FALSE}
auto.arima(Co2_train)
```
En se basant sur le résultat de l'analyse précédente, on retient le modèle $ARIMA(1,1,1)(2,1,2)[12]$. On peut ensuite vérifier que les résidus ressemblent à un bruit blanc ou non.
Les graphiques précédents montre que le résidu ressemble suffisamment au bruit blanc, que la valeur p est élevée et que le modèle a passé le test de la Ljong-Box.
This is an R Markdown document that you can easily export to HTML, PDF, and MS Word formats. For more information on R Markdown, see <http://rmarkdown.rstudio.com>.
When you click on the button **Knit**, the document will be compiled in order to re-execute the R code and to include the results into the final document. As we have shown in the video, R code is inserted as follows:
```{r cars}
summary(cars)
```
It is also straightforward to include figures. For example:
```{r pressure, echo=FALSE}
plot(pressure)
```
Note the parameter `echo = FALSE` that indicates that the code will not appear in the final version of the document. We recommend not to use this parameter in the context of this MOOC, because we want your data analyses to be perfectly transparent and reproducible.
Since the results are not stored in Rmd files, you should generate an HTML or PDF version of your exercises and commit them. Otherwise reading and checking your analysis will be difficult for anyone else but you.
Now it's your turn! You can delete all this information and replace it by your computational document.
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 <http://rmarkdown.rstudio.com>.
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:
```{r cars}
summary(cars)
```
Et on peut aussi aisément inclure des figures. Par exemple:
```{r pressure, echo=FALSE}
plot(pressure)
```
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.