Chroniques avec le package stats de R
Le package stats de R n’est pas spécialisé dans les séries chronologiques. Il offre néanmoins plusieurs fonctions intéressantes pour les explorer.
Fonctions
La fonction ts() permet notamment de créer un objet représentant une série temporelle. Plusieurs fonctions permettent ensuite de la manipuler et de l'analyser :
- frequency() : fréquence d'une série,
- start() et end() : début et fin de la série,
- window() :extraction d'une période,
- lag() : décalage temporel,
- diff() : différences successives,
- cycle() : position dans le cycle saisonnier.
Pour analyser les composantes d'une série, on trouve notamment :
- decompose() : décomposition classique d'une série,
- stl() : décomposition saisonnière utilisant les méthodes LOESS.
Pour les modèles de séries temporelles, stats propose notamment :
- arima() : modèles ARIMA,
- arima0() : ancienne interface pour les modèles ARIMA,
- KalmanLike() et KalmanRun() : fonctions liées au filtrage de Kalman,
- StructTS() : modèles structurels de séries temporelles.
La fonction acf() permet d'étudier l'autocorrélation, tandis que pacf() calcule l'autocorrélation partielle.
On trouve également :
- Box.test() : test de Box-Pierce ou de Ljung-Box,
- filter() : filtrage d'une série temporelle (moyennes mobiles centrées),
- HoltWinters() : lissage exponentiel.
Exemple : les données
Voici le nombre de nuitées d’hôtel en France métropolitaine (source INSEE). Pour que l’exemple soit pédagogique, nous avons retenu sept années consécutives avant la pandémie de Covid 19 (donc 2013 à 2019 incluses). Nous avons reproduit les données ici au cas où vous souhaiteriez les capturer pour refaire l’exercice.
| 2013 | 2014 | 2015 | 2016 | 2017 | 2018 | 2019 | |
| Janvier | 11 217 | 11 231 | 11 537 | 11 176 | 12 078 | 12 416 | 12 466 |
| Février | 11 992 | 11 888 | 12 346 | 12 461 | 12 838 | 13 107 | 13 214 |
| Mars | 15 250 | 14 327 | 14 187 | 15 151 | 14 947 | 16 218 | 15 685 |
| Avril | 15 635 | 16 447 | 16 293 | 15 463 | 17 827 | 17 220 | 18 160 |
| Mai | 18 958 | 18 283 | 18 770 | 18 201 | 18 235 | 19 037 | 18 358 |
| Juin | 19 801 | 19 687 | 19 721 | 19 255 | 20 051 | 20 586 | 21 692 |
| Juillet | 22 126 | 21 753 | 22 650 | 22 214 | 23 199 | 23 283 | 23 366 |
| Août | 23 989 | 24 222 | 24 058 | 22 593 | 23 893 | 24 598 | 24 835 |
| Septembre | 19 234 | 19 340 | 19 561 | 18 946 | 20 036 | 20 558 | 20 504 |
| Octobre | 16 489 | 16 918 | 16 838 | 16 989 | 17 528 | 18 003 | 17 962 |
| Novembre | 12 643 | 12 285 | 11 722 | 12 664 | 13 630 | 14 013 | 14 229 |
| Décembre | 12 769 | 13 316 | 12 392 | 13 364 | 14 046 | 13 885 | 14 167 |

En fait, elles se présentent en deux colonnes sur une feuille de calcul Excel. Nom du fichier : nuitées_pour_R.xlsx. (la présentation ci-dessus ne sert que pour la mise en page). Remarquez que le champ Mois est alphanumérique.

Exemple de traitement
serie <- ts(
nuitées_pour_R$Nuitées,
start = c(2013, 1),
frequency = 12
)
La suite de valeurs est désormais représentée par l’objet serie. R ne considère plus seulement les valeurs comme une colonne de nombres. Il connaît désormais leur fréquence et leur position dans le temps. Nous avons précisé que la périodicité était mensuelle avec frequency = 12. En ajoutant que la série commence en janvier 2013, on évite des soucis qui pourraient être liés à des mois exprimés en alphanumérique (ainsi ce sont des années qui apparaissent sur l’axe des abscisses du graphique reproduit plus bas et non des trimestres).
Vérification :
> start(serie)
[1] 2013 1
> end(serie)
[1] 2019 12
> frequency(serie)
[1] 12
La série commence bien en janvier 2013 pour se terminer en décembre 2019 et sa fréquence est mensuelle.
Traçons le graphique grâce à la fonction plot().
plot(
+ serie,
+ main = "Nuitées dans les hôtels",
+ xlab = "Année",
+ ylab = "Nombre de nuitées"
+ )

Notez qu’avec l’objet ts, il n’est pas indispensable de préciser type = « l », le graphique étant présenté par défaut sous forme de lignes.
