Accéder au contenu principal
Documents
Partager
LinkedIn
Facebook
Twitter
Copy
R DocumentationEntrée de données en RGestion des données en RGraphiques en RR InterfaceStatistiques en R

Séries temporelles et prévisions en R

R dispose de nombreux outils pour analyser les données de séries temporelles. Cette section décrit la création d'une série temporelle, la décomposition saisonnière, la modélisation avec les modèles exponentiels et ARIMA, et les prévisions avec le module de prévision.

Création d'une série temporelle

La fonction ts() convertit un tableau numérique en un objet de série temporelle R. Le format est ts(vector, start=, end=, frequency=) où start et end sont les heures de la première et de la dernière observation et où frequency est le nombre d'observations par unité de temps (1=annuel, 4=quotidien, 12=mensuel, etc.).

# save a numeric vector containing 72 monthly observations
# from Jan 2009 to Dec 2014 as a time series object
myts <- ts(myvector, start=c(2009, 1), end=c(2014, 12), frequency=12)

# subset the time series (June 2014 to December 2014)
myts2 <- window(myts, start=c(2014, 6), end=c(2014, 12))

# plot series
plot(myts)

Décomposition saisonnière

Une série temporelle avec des tendances additives, des composantes saisonnières et irrégulières peut être décomposée à l'aide de la fonction stl(). Notez qu'une série avec des effets multiplicatifs peut souvent être transformée en série avec des effets additifs par le biais d'une transformation logarithmique (c.-à-d., newts <- log(myts)).

# Seasonal decomposition
fit <- stl(myts, s.window="period")
plot(fit)

# additional plots
monthplot(myts)
library(forecast)
seasonplot(myts)

Modèles exponentiels

La fonction HoltWinters() de l'installation de base et la fonction ets() du module de prévision peuvent toutes deux être utilisées pour ajuster des modèles exponentiels.

# simple exponential - models level
fit <- HoltWinters(myts, beta=FALSE, gamma=FALSE)
# double exponential - models level and trend
fit <- HoltWinters(myts, gamma=FALSE)
# triple exponential - models level, trend, and seasonal components
fit <- HoltWinters(myts)

# predictive accuracy
library(forecast)
accuracy(fit)

# predict next three future values
library(forecast)
forecast(fit, 3)
plot(forecast(fit, 3))

Modèles ARIMA

La fonction arima() peut être utilisée pour ajuster un modèle de moyennes mobiles intégrées autorégressives. Parmi les autres fonctions utiles, citons

   
lag(ts, k) version retardée de la série temporelle, décalée de k observations
diff(ts, differences= d) différence entre les séries temporelles d fois
ndiffs(ts) Nombre de différences nécessaires pour atteindre la stationnarité (à partir du module de prévision )
acf(ts) fonction d'autocorrélation
pacf(ts) fonction d'autocorrélation partielle
adf.test(ts) Test de Dickey-Fuller amélioré. Le rejet de l'hypothèse nulle suggère qu'une série temporelle est stationnaire (à partir du package tseries )
Box.test(x, type="Ljung-Box") Test de Pormanteau selon lequel les observations d'un vecteur ou d'une série temporelle x sont indépendantes

Notez que le module de prévision possède des versions plus agréables de acf() et pacf() appelées respectivement Acf() et Pacf().

# fit an ARIMA model of order P, D, Q
fit <- arima(myts, order=c(p, d, q)

# predictive accuracy
library(forecast)
accuracy(fit)

# predict next 5 observations
library(forecast)
forecast(fit, 5)
plot(forecast(fit, 5))

Prévisions automatisées

Le module de prévision fournit des fonctions pour la sélection automatique des modèles exponentiels et ARIMA. La fonction ets() prend en charge les modèles additifs et multiplicatifs. La fonction auto.arima() peut traiter les modèles ARIMA saisonniers et non saisonniers. Les modèles sont choisis pour maximiser l'un des critères d'adéquation.

library(forecast)
# Automated forecasting using an exponential model
fit <- ets(myts)

# Automated forecasting using an ARIMA model
fit <- auto.arima(myts)

Aller plus loin

Il existe de nombreuses bonnes ressources en ligne pour apprendre l'analyse des séries temporelles avec R. Il s'agit notamment de A little book of R for time series par Avril Chohlan et du cours manipuler les séries temporelles en R de DataCamp par Jeffrey Ryan.