Ce que je sais sur les séries temporelles (1/5)
En lisant la préface de Flore Vasseur à l'essai “le monde en 2030 vu par la CIA”, j'ai été très frappé par mon manque de culture macroéconomique. En effet, un essaiqui parle de 2030, regorge presqu'essentiellement de prévisions macroéconomiques basées sur des scenarii plus ou moins long terme. Derrière les analyses, il y a souvent recours à l'économétrie des séries temporelles, pour par exemple estimer que “le monde aura largement engagé sa mutation écologique en raison de la rareté du pétrôle et de l'élévation des prix des matières premières”, il faut sans doute avoir un modèle de prévision des prix et pouvoir projeter ce modèle dans le cadre des modèles d'équilibres généraux.
En bref, j'ai l'impression d'une vraie inculture en prévision macroécronomique.
Alors je lance un fil d'articles autour des séries temporelles.
Définition
Séries temporelles : Analyse statistique d'observations régulièrement espacées dans le temps. Historique : Astronomie, voir (“On the periodicity of sunspots”, 1906). On peut même aller plus loin. Un manuscrit du Xeme siècle essayait déjà de représenter l'inclinaison des orbites des planètes en fonction du temps et on doit plusieurs siècles plus tard à Kepler d'avoir pu énoncer les lois sur les mouvements des planètes.
Aller plus loin :
A quoi ça sert
Prévoir : Très utile dans un monde qui change d'imaginer demain. Exemple : la consommation d'électricité en France.
Théorie
Les ramifications théoriques des séries temporelles se trouvent un peu partout en analyse mathématique. Les processus stochastiques, les chaines de markov, l'analyse spectrale, bref, selon que l'on suit ce cours pour la première fois dans une faculté d'économie ou de mathématiques, l'approche peut être très différente et les degrés de compréhension aussi. Une bonne façon d'introduire à la théorie mathématique derrière les séries temporelles reste pour moi l'étude des chaines de markov. On peut consulter ici.
Modélisation
4.1. Première approche : Le lissage
Considérons les cours du CAC 40 depuis le 01 janvier 2008. Dans toute la série d'articles sur les séries temporelles, nous allons travailler avec ces chroniques.
library(tseries)
library(zoo)
cac = get.hist.quote("^FCHI", start = "2008-01-01", end = "2010-01-01")
## time series starts 2008-01-02
## time series ends 2009-12-31
plot(cac, col = "lightblue", main = "CAC 40 depuis le 01 janvier 2008")
On va analyser uniquement les cours d'ouverture;
Le lissage consiste à extrapoler une série en vue de faire une prévision. Il n y a pas de bon lissage, tout dépend du poids que l'on accorde au passé et de ce qu'on veut voir dans l'avenir à court, moyen ou long terme. Il y a toute une théorie sur le choix de la “bonne "constante de lissage, lorsque le bue est la prévision, on s'accorde plus ou moins à dire que la minimisation des moindres carrés des erreurs(Prévision vs Réalisation).
- Lissage par moyenne glissante
Open = cac[, 1]
head(Open)
## 2008-01-02 2008-01-03 2008-01-04 2008-01-07 2008-01-08 2008-01-09
## 5610 5538 5544 5432 5477 5459
T = time(Open)
MoyenneGlissante = filter(coredata(Open), filter = rep(1/12, 12))
MoyenneGlissante = zoo(MoyenneGlissante, T)
plot(Open, main = "Indice du CAC 40", xaxt = "n")
axis.Date(1, at = seq(T[1], T[length(T)] + 6, "month"), format = "%m/%y", cex.main = 0.6)
lines(MoyenneGlissante, lwd = 2, col = "red")
Le lissage permet d'obtenir la tendance de la série. Plus généralement, on a parfois recours à des lissages exponentiels.
- Lissage exponentiel Holt-Winters propose la méthode de lissage la plus généralisable au travers de trois paramètres dit de réglages. Lorsqu'on ne spécifie pas les paramètres, ils sont calculés automatiquement à partir de l'historique selon la minimisation de l'écart entre la prévision et la réalisation
Mais pour faire un lissage exponentiel en utilisant la méthode HoltWinters, il faut une régularité dans la série, ce qui n'est pas le cas des séries boursières en général.
Considérons donc pour voir le lissage exponentiel un autre type de série. Les exportatios américaines en France, puisqu'il en était question dans Alternatives économiques du mois dernier.
Un formidable package Rdatamarket met à la disposition des "chercheurs” de formidable jeux de données macroéconomiques. J'yreviendrais.
library(rdatamarket)
dminit(yourdmininit;)
exports <- dmlist("1l5r")
exports.ts <- ts(exports$Value, start = 1985, frequency = 12)
head(exports.ts)
## [1] 548.9 483.2 611.3 487.7 566.3 465.3
plot.ts(exports.ts, col = "blue4", lwd = 1)
hw = HoltWinters(exports.ts)
lines(hw$fitted[, 1], col = "red3", lwd = 1)
Ce lissage peut permettre de réaliser des prévisions. Et c'est un premier aperçu de la manière donc on peut prolonger une série.
4.2. Décomposition d'une série chronologique Il est en général considéré qu'une série est composée d'une tendance(évolution naturelle), d'une saisonnalité( evènements récurrents aux mêmes périodes) et d'un bruit blanc (marche aléatoire)
Pour décomposer la série, on utilise en R la fonction decompose :
composantes = decompose(x = exports.ts)
plot(composantes)
Lorsque rien n'est précisé, le modèle utilisé est un modèle additif. AUtrement dit, il est supposé que la série Exports.ts = Trend + Saison + BB
Une autre façon de voir aurait été de considérer un modèle multiplicatif Exports.ts = Trend x Saison x BB
composantes = decompose(x = exports.ts, type = "multiplicative")
plot(composantes, col = "red")
4.3 Autocorrélations
Hello,
ReplyDeleteThe Article on Learning Data Science is nice .It give detail information about it. Thanks for Sharing the information about Data Science . big data scientist
Good Post! Thank you so much for sharing this pretty post, it was so good to read and useful to improve my knowledge as updated one, keep blogging.
ReplyDeleteappvn app