L'extraction à partir d'une série avec R

Opérations sur chronique avec stats de R

Cette page présente quelques manipulations d’une série chronologique avec R. Aucune technique d’analyse calculatoire. Nous allons juste extraire une partie d’une série et apprécier visuellement si une saisonnalité apparaît.

Les données de la série complète ne sont pas reprises ici mais vous les trouverez en page de série chronologique avec stats (stats étant un package de R).

 

Extraction d'une période

L’objet serie contient les nombres mensuels de nuitées d’hôtel pour la France de 2013 à 2019.

Initialement, le format des mois était alphanumérique. Nous avons transformé la série en série ts :

serie <- ts(
nuitées_pour_R$Nuitées,
start = c(2013, 1),
frequency = 12
)

Ainsi, R sait à quels mois se rattachent les montants. Supposons que nous souhaitions extraire les seules années 2018 et 2019 :

serie_2018_2019 <- window(
serie,
start = c(2018, 1),
end = c(2019, 12)
)

Vraiment simple !

graphe d'évolution

 

Comparaison mois par mois

À présent, nous allons comparer l’évolution mois par mois en superposant les évolutions de deux années afin de déceler visuellement une éventuelle saisonnalité. Dans la réalité, nous utiliserions la série complète mais, par commodité, nous ne travaillerons que sur les deux dernières années.

Pour cela, il est plus commode de considérer deux séries : l’année 2018 et l’année 2019. Nous les extrayons séparément :

serie_2018 <- window(
serie,
start = c(2018, 1),
end = c(2018, 12)
)
serie_2019 <- window(
serie,
start = c(2019, 1),
end = c(2019, 12)
)

À présent, le graphique :

plot(
1:12,
serie_2018,
type = "o",
xaxt = "n",
col = "steelblue",
lwd = 2,
xlab = "Mois",
ylab = "Nombre de nuitées",
main = "Nuitées dans les hôtels : 2018 et 2019"
)

lines(
1:12,
serie_2019,
type = "o",
col = "tomato",
lwd = 2
)

axis(
1,
at = 1:12,
labels = month.abb
)

legend(
"topright",
legend = c("2018", "2019"),
col = c("steelblue", "tomato"),
lty = 1,
pch = 1,
lwd = 2
)

superposition

xaxt = "n" signifie qu’il ne faut pas tracer automatiquement l’axe horizontal, notamment ses graduations et leurs étiquettes. En effet, nous l’avons construit nous-même et sans cette instruction nous aurions de fâcheuses superpositions. Cette construction est réalisée grâce à axis() (le 1 signifie que l’on travaille sur l’axe horizontal).

Nous avons choisi le type o (lignes avec points) et imposé deux couleurs (bleu acier et tomate) ainsi qu’une légère épaisseur aux lignes (lwd = 2).

labels = month.abb est un objet prédéfini dans R qui contient les abréviations anglaises des mois mais on pourrait remplacer cette instruction par labels = c("jan", " fév"…) pour obtenir des étiquettes en français.

Pour les autres arguments (type, lwd, lty et pch), voir la présentation de plot().

 

Extraction d'un mois

Nous avons vu comment extraire une période, mais comment extraire un mois particulier sur les sept années de la série initiale ? Reprenons le script juste après la création de la série ts.

# Extraction des mois de juillet
juillet <- serie[cycle(serie) == 7]

# Création du tableau
tableau_juillet <- data.frame(
Année = 2013:2019,
Nuitées = as.numeric(juillet)
)

tableau_juillet

cycle(serie) produit une suite 1, 2, ..., 12, 1, 2, ..., 12.... Le 7 correspond à juillet. On exploite le fait que serie est une véritable série ts, plutôt qu'un simple vecteur de nombres.