Séries Temporelles

Introduction aux séries temporelles
Author

Ludovic Deneuville

Une série temporelle est une suite d’observations ordonnées dans le temps : \({X_t}, t \in \mathbb{T}\) où :

L’analyse des séries temporelles permet de :

1 Première simulation

Générons une séries comme la somme de trois composantes \(X_t = m_t + s_t + Z_t\) où :

  • \(m_t\) est la tendance (évolution de long terme)
  • \(s_t\) est la composante saisonnière (effet périodique)
  • \(Z_t\) est un bruit aléatoire (composante irrégulière)
Code
n <- 120               # Nombre d observations
p <- 12                # periode
t <- seq(1,n)          # temps

m_t <- 400 - 0.5 * t - 1/ (2*n) * t^2    # tendance polynomiale deterministe
s_t <- 20 * sin(2 * pi * t / p)          # tendance saisonniere p-periodique
Z_t <- rnorm(n, 0, 10)                   # bruit

X_t <- ts(m_t + s_t + Z_t, 
          start = c(2010,01), 
          end = c(2019,12), 
          frequency = p)

Affichage de la série :

Code
library(ggplot2)

df <- data.frame(
  time = as.numeric(time(X_t)),
  X_t = as.numeric(X_t),
  trend = m_t,
  seasonality = s_t,
  noise = Z_t
)

ggplot(df, aes(x = time, y = X_t)) +
  geom_line(color = "darkcyan", linewidth = 1) +
  labs(
    title = "Série temporelle simulée",
    x = "Temps",
    y = "Valeur")

1.1 Quelques infos sur la série

start(X_t)
end(X_t)
time(X_t)
frequency(X_t)

# Extraire une fenêtre de la série
window(X_t, start= c(2012,01), end=c(2014,12))

2 Opérateurs et Filtres

2.1 Opérateurs

Les opérateurs temporels sont des transformations appliquées à une série temporelle \(X_t\) qui permettent de manipuler le temps :

  • retarder
  • avancer
  • différencier ou combiner des observations successives

L’opérateur de retard d’ordre k, noté \(B^k\), défini par \(B^k X_t = X_{t-k}\), décale la série de k périodes vers le passé.

L’opérateur d’avance d’ordre k, défini par \(B^{-k} X_t = X_{t+k}\), décale la série vers le futur.

# Opérateur Backward
lag(X_t, 3)

# Opérateur Forward
lag(X_t, -2)

2.2 Filtres

Le Filtre de différenciation d’ordre p permet d’éliminer une tendance polynomiale :

\[\Delta^p X_t = (1 - B)^p X_t\]

Il transforme les tendances polynomiales en constantes.

\(\Delta^1\) élimine les tendances linéaires, \(\Delta^2\) élimine les tendances quadratiques…

Considèrons un polynôme déterministe de degré 4 :

\[X_t = 10 + \frac{1}{2}t - \frac{1}{10}t^2 + \frac{1}{500}t^3 - \frac{1}{2000}t^4\]

Code
library(ggplot2)

# Temps
n <- 100
t <- seq(1,n)

# Polynôme de degré 4
p4 <- 10 + 0.5 * t - 0.1 * t^2 + 1/500 * t^3 - 1/2000 * t^4

df <- data.frame(t = t, p4 = p4)
Code
df_d1 <- data.frame(
  t = t[-1],
  diff = diff(p4, differences = 1))

ggplot(df_d1, aes(x = t, y = diff)) +
geom_point(color = "darkcyan", shape = 3) +
geom_line(color = "darkcyan") +
labs(title = "Différenciation d'ordre 1",
     subtitle = "Filtre Δ appliqué à un polynôme de degré 4",
     x = "Temps",
     y = "Δ p4(t)")

Code
df_d2 <- data.frame(
  t = t[-c(1,2)],
  diff = diff(p4, differences = 2))

ggplot(df_d2, aes(x = t, y = diff)) +
geom_point(color = "darkcyan", shape = 3) +
geom_line(color = "darkcyan") +
labs(title = "Différenciation d'ordre 2",
     subtitle = "Filtre Δ² appliqué à un polynôme de degré 4",
     x = "Temps",
     y = "Δ² p4(t)")

Code
df_d3 <- data.frame(
  t = t[-c(1,2,3)],
  diff = diff(p4, differences = 3))

ggplot(df_d3, aes(x = t, y = diff)) +
geom_point(color = "darkcyan", shape = 3) +
geom_line(color = "darkcyan") +
labs(title = "Différenciation d'ordre 3",
     subtitle = "Filtre Δ³ appliqué à un polynôme de degré 4",
     x = "Temps",
     y = "Δ³ p4(t)")

Code
df_d4 <- data.frame(
  t = t[-c(1,2,3,4)],
  diff = diff(p4, differences = 4)
)

ggplot(df_d4, aes(x = t, y = diff)) +
geom_point(color = "darkcyan", shape = 3) +
geom_line(color = "darkcyan") +
scale_y_continuous(limits = c(-3, 3)) +
labs(title = "Différenciation d'ordre 4",
     subtitle = "Δ⁴ appliqué à un polynôme de degré 4",
     x = "Temps",
     y = "Δ⁴ p4(t)")

Les moyennes mobiles sont des filtres linéaires utilisés pour lisser une série temporelle et éliminer la saisonnalité.

La moyenne mobile arithmétique d’ordre (m) est définie par :

\[\widehat{X}_t = \frac{1}{m} \sum_{k=0}^{m-1} X_{t-k}\]

Une moyenne mobile d’ordre p permet déliminer une saisonnalité de période p.

Moyenne mobile impaire

Si p est impair, la moyenne mobile est centrée naturellement :

\[\widehat{m}_t = \frac{1}{p} \sum_{k=-(p-1)/2}^{(p-1)/2} X_{t+k}\]

Moyenne mobile paire

Si p est pair, le filtre n’est pas centré.

On utilise alors une moyenne mobile doublement centrée :

\[\widehat{m}_t = \frac{1}{p} \left(\frac{1}{2}X_{t-p/2} + \sum_{k=1}^{p-1} X_{t-p/2+k} + \frac{1}{2}X_{t+p/2}\right)\]

3 Décomposition des séries temporelles

4 La modélisation

processus AR, MA, ARMA, ARIMA