---
title: "Exo 5"
author: "S2D"
format: html
editor: visual
---

## Préliminaires

On installe (une seule fois suffira) la librairie `astsa` et on la charge en mémoire via

```{r}
##install.packages("astsa")
library(astsa)
```

## Analyse de la température mondiale

On va regarder les données `gtemp_land`.

```{r}
plot(gtemp_land)
```

On voit une tendance linéaire (+) à partir de 1960 donc la série n'est pas stationnaire et on peut tenter de la stationnariser via une différentiation d'ordre 1.

```{r}
dX <- diff(gtemp_land)

par(mfrow = c(1, 2))
plot(dX)
lines(lowess(dX), col = "purple")
plot(abs(dX))
lines(lowess(abs(dX)), col = "purple")

```

On a bien enlever la tendance mais peut-être que la variance augmente avec le temps. Mais c'est assez réduit, je néglige (désolé !).\

On se fait un petit ACF / PACF pour voir si un modèle AR pur ou MA pur serait pertinent. On confirmera cela ensuite par une sélection de modèle.

```{r}
acf2(diff(gtemp_ocean))
```

On peut interpréter ces 2 graphiques comme une chute brutale de l'ACF au lag $h = 1$ et une décroissance lente du PACF en $h$ : c'est le comportement typique d'un MA pur d'ordre $q = 1$. Puisque l'on avait différencié une fois la série initiale, on serait donc tenté d'utiliser un ARIMA(0, 1, 1).

```{r}
sarima(gtemp_land, 0, 1, 1)
```

L'analyse des résidus est bonne car : l'ACF reste dans l'IC, le QQ-plot est bien aligné et les p-valeurs de Ljung-Box toujours supérieures à 5% –\> la série des résidus peut-être vue comme un bruit blanc. Génial

Si on faisait la même avec les données `gtemp_ocean`, les ACF et PACF ne seraient pas aussi nets donc on aurait recours à la sélection de modèles via critères d'information.

```{r}
bic <- matrix(NA, 3, 3)
colnames(bic) <- paste("q =", 0:2)
rownames(bic) <- paste("p =", 0:2)
for (p in 0:2){
  for (q in 0:2){
    tmp <- sarima(gtemp_ocean, p, 1, q, details = FALSE)
    bic[p+1, q+1] <- tmp$ICs["BIC"]
  }
}

bic
```

Pour la température sur les océans on partirait donc sur un ARIMA(0, 1, 2).

Allez on passe à la prédiction !!

```{r}
sarima.for(gtemp_land, 5, 0, 1, 1)
sarima.for(gtemp_ocean, 5, 0, 1, 2)
```
