Time Series Séries Chronologiques Georges GARDARIN
PLAN Définition Objectifs Opérations de base Opérations avancées Codage Application
1. Définition L’analyse des séries temporelles s’intéresse à la « dynamique » d’une variable La suite d’observations (yt, tЄT) d’une variable y à différentes dates t est appelée série temporelle. Habituellement T est dénombrable, de sorte que t=1…T. Importance de la dimension temporelle La périodicité de la série n’importe pas
D'après Wikipedia Une série temporelle est une suite de valeurs numériques représentant l'évolution d'une quantité spécifique au cours du temps. De telles suites de valeurs peuvent être exprimées mathématiquement afin d'en analyser le comportement, généralement pour comprendre son évolution passée et pour en prévoir le comportement futur. Une telle transposition mathématique utilise le plus souvent des concepts de probabilités et de statistique .
Exemples Une série temporelle est donc toute suite d’observations, à des instants plus ou moins réguliers, correspondant à la même variable Exemples Economie : ventes d’une entreprise, Nombres d’employés, Revenus d’un individu Finance : cours d'une action, volume vendu, moyenne des ventes, options Ecologie : Températures, pressions, pluviométrie, Heures de soleil, vitesse du vent Automobiles : trajectoires, vitesses, angles, capteurs
Une série simple Temps Variable 1 2 3 4 5 6 7 8 9 10 VARIABLE 11 15 12 16 13 Temps <ti> de i = 1 à N Variable Y = f(t) Il est possible d'avoir des variables numériques bien sûr; mais aussi booléennes, textuelles, etc.
Représentation graphique
2. Objectifs Prévoir les valeurs futures Relier les variables Déterminer la causalité Étudier des anticipations des agents Repérer les tendances et cycles Corriger des variations saisonnières Détecter les chocs structurels Contrôler les processus
De manière plus précise Trouver des tendances Linéaire : y = a*t + b [+ e] Exponentielle : y = k*a**t [+ e] Logistique : y = k / (1+e**(b-at)) [+ e] Hyperbolique : y k/t [+ e] [+ e] est l'écart (variation accidentelle) Comparer deux time series Définir des distances significatives Conserver les patterns
Les tâches du Data Mining Trouver des séries similaires Trouver en base la série la plus proche d'une série donnée Classer automatiquement en N groupes de séries similaires Classer dans des classes prédéfinies par un expert Résumer des séries de N points (N très grand) en n points (n<<N) Détecter des événements (saisons, accidents, nouvelles, etc.)
3. Opérations de base Changement d'unité de temps rollup ($group_size, $map_function ) extend ($group_size) Opérations arithmétiques substract(TimeSeries $sub) add(TimeSeries $sub) multiply(TimeSeries $sub) Map($map_function) Opérations scalaires Scale(float k) Plus(float k)
Opérations relationnelles filter($comparator, $value) série de bits en résultat (bitmap) map($fun) Projection généralisée union ($NTS), intersection, difference De bitmaps ou de multi-séries join ($NTS) S'applique aux multi-séries
Multi-séries Multi-séries Jointure de 1 20 2 45 3 55 4 32 5 30 6 19 7 10 2 20 3 17 4 16 5 15 6 11 7 1 10 20 2 45 3 17 55 4 16 32 5 15 30 6 11 19 7 Jointure de 1 20 2 45 3 55 4 32 5 30 6 19 7 15
Séries imbriquées Similaires aux séquences … 1 {10, 20, 50} 2 {} 3 {17, 18} 4 {16} 5 6 {10, 11, 15, 11} 7 {10} Similaires aux séquences …
4. Opérations statistiques moment($window) Calcul de la série variation sur N jour d'une série en relatif % (Momentum) centrer() Calcul de la série centrée autour de 0 à partir d'une série reduire() Calcul de la série réduite par écart type normer() = centrer() + réduire() Elimine le facteur d'échelle pour comparer
Moyennes mobiles – Maverage($window) TEMPS 1 2 3 4 5 6 7 8 9 10 VARIABLE 11 15 12 16 13 MM 1 10 11,5 13 13,5 14 14,5 11 8,5 7,5 MM 3 10,5 12 12,6 14,3 13.6 8,6 8,16 Donne une tendance Exemple : MM 30 en bourse Moyenne mobile exponentielle Privilégie les dernières valeurs En pondérant par (1-)**n, n étant le n° jour précédent
Operation sur Windows Fenêtre de taille $Win Exemples : Relative Strength Index Rsi = hausse /(hausse+baisse) Momentum Mom = delta[j] – delta[j-$win] / valeur[$j] Tendance linéaire Trend = pente droite moindres carrés Moyenne Mobile Exponentielle Xavg = moyenne avec poids (1-α) **N pour jours (j-N)
Time Series (Sequence) avec XQuery 1.1 TEMPS 1 2 3 4 5 6 7 8 9 10 Variable 12 14 2, 4, 6 8, 10, 12 14, 8, 9 10, ... Tumbling Sliding 2, 4, 6 4, 6, 8 6, 8, 10 8, 10, 12 …………….
Exemple de TS en XML <stock> <closing> <date>2008-01-01</date> <price>105</price> </closing > <closing> <date>2008-01-02</date> <price>101</price> </closing> <closing> <date>2008-01-03</date> <price>102</price> <closing> <date>2008-01-04</date> <price>103</price> <closing> <date>2008-01-05</date> <price>102</price> <closing> <date>2008-01-06</date> <price>104</price> </closing> </stock>
Les variables de fenêtres [W3C] Window-variable: Bound to the sequence of items from the binding sequence that comprise the window. Start-item: (Optional) Bound to the first item in the window. Start-item-position: (Optional) Bound to the ordinal position of the first window item in the binding sequence. Start-previous-item: (Optional) Bound to the item in the binding sequence that precedes the first item in the window (empty sequence if none). Start-next-item: (Optional) Bound to the item in the binding sequence that follows the first item in the window (empty sequence if none). End-item: (Optional) Bound to the last item in the window. End-item-position: (Optional) Bound to the ordinal position of the last window item in the binding sequence. End-previous-item: (Optional) Bound to the item in the binding sequence that precedes the last item in the window (empty sequence if none). End-next-item: (Optional) Bound to the item in the binding sequence that follows the last item in the window (empty sequence if none).
Exemple de XQuery tumbling Window [W3C] for tumbling window $w in //closing start $first next $second when $first/price < $second/price end $last next $beyond when $last/price > $beyond/price return <run-up> <start-date>{fn:data($first/date)}</start-date> <start-price>{fn:data($first/price)}</start-price> <end-date>{fn:data($last/date)}</end-date> <end-price>{fn:data($last/price)}</end-price> </run-up>
5. Modèles de Time Series Permettent des classifications et des recherches de patterns plus efficaces Sont munis d'une fonction de distance significative (borne min, préservation de similarité, structure, …) Plusieurs techniques proposées Discrete Fourier Transform Discrete Wavelet Transform Picewise Linear Model Picewise Constant Model Symbolic Representation Autoregressive Model
Transformation de Fourier discrète (DFT) Transforme le domaine du temps en fréquence La série est vue comme une fonction discrétisée somme de sinusoïde Remplace la série de N points par K coefficients avec K très inférieur à N Conserve de bonnes propriétés de distance : transfo. linéaire de CN =>CN Algorithmes efficaces pour calculer la DFT Amplitude et Phase des sinusoîdes
Modèles auto-régressifs d'ordre p - AR(p) Représentation générale AR(p) : εt est une source d'aléatoire appelé bruit blanc. Propriétés : 1. E(εt) = 0 2. E(εt2)) = σ2 3. E(εt * εt)) = 0 Cas particulier : modèle régression linéaire i = 0 pour i>1
Modèle à pas constants (PAA) Approximation par découpage en périodes de temps fixe Réduction de N points à w par approximation linéaire Possibilité de mapper les coefficients Ci sur des lettres a, b, c, … en divisant la variable y centrée-réduite en intervalles équi-probables (Lin et. al. = modèle SAX)
Distance / Similarité entre TS Vecteurs de dimensions élevées Réduire les dimensions Techniques classiques (seuils, Latence, …) Fenêtres : réduire à des fenêtres "sautantes" Utiliser un modèle (ex: premiers coefs de DFT) Comparer des symboles (ex: +, -, =) Permet l'application des techniques classiques Classification supervisée ou non
6. Application Bourse Aider l'investisseur à choisir Trouver des actions similaires ou différentes Définir et valider des stratégies Calculer des indicateurs Analyser les dépêches
Actions : information fondamentales NOM varchar(20) Désignation CODE char(5) Code caractères COURS decimal(7,2) Dernier cours ajusté PER decimal(5,2) Price Earning Ratio BNA Bénéfice Net par Action BNA1 Bénéfice Net par Action année +1 RECO Recommandation des analystes de 0 à 5 REND Rendement distribué DETTA Dette par action FONPA Fonds propres par action
Cours : données journalières CODE char(8) Code de l’action DATE date Date d’observation OPEN decimal(7,2) Cours d’ouverture HIGH Cours le plus haut LOW Cours le plus bas CLOSE Cours de fermeture (dernier) VOL int Volume AJUSTE Cours ajusté (div.s)
Indicateurs : données techniques CODE char(5) Code de l’action MOM5 int Momentum 5 = Variation relative sur 5 jours MM20 decimal(7,2) Moyenne mobile 20 MM50 Moyenne mobile 50 MACD Ecart entre moyennes mobiles RSI14 100-(100/(1+RS)) avec RS = Σgains hausse/Σperte baisse ADV10 Σ (Volume * % avancée – volume % déclin) ROC10 (Cour0– Cours10)/Cours10
Calcul des variables de décisions Décision dans un espace à N dimensions Données fondamentales (résultats) Données techniques (ambiance) Caractériser chaque dimension par une variable Issue des données précédentes Centrer réduire chaque variable pour rendre comparable x’ = (x - AVG (x)) / STDDEV(x) Attribuer un score à chaque action par combinaison des variables Exemples : combinaison linéaire Score = Σ pi * x’i Réseaux de neurones Score = Ñ (x’0 … x’n) Réglage des pi ou neurones sur le passé …
Exemples de variables de décision CODE CHAR(5) PRIMARY KEY REFERENCES ACTIONS, PER_NO NUMERIC(7,2) , /* PER réduit normé */ REND_NO NUMERIC(7,2) , /* Rendement N réduit normé */ ROI_NO NUMERIC(7,2) , /* Rendement/Cours réduit normé */ CROIS_NO NUMERIC(7,2) , /* Croissance rendement réduite normée */ DETFP_NO NUMERIC(7,2) , /* Dette sur fonds propres normés */ RECO_NO NUMERIC(7,2), /* Recommandation des analystes normée */ DELTA_NO NUMERIC(7,2), /* Ecart cours à moyenne mobile normée */ RSI_NO NUMERIC(7,2) /* RSI réduit normé */ MACD_NO /* MACD normé */ ADV10_NO /* ADV10 normé */ ROC10_NO /* ROC10 normé */
Operation sur Windows Fenêtre de taille $Win Exemples : Rsi = hausse /(hausse+baisse) Mom = delta[j] – delta[j-$win] / valeur[$j] Trend = pente droite moindres carrés Xavg = moyenne mobile exponentielle Interface TimeSeriesStats
Pont avec la BD relationnelle Import() TS simple ou multiple alculée par une requête SQL à 1 ou N attributs Support des agrégats intéressant : MIN, Max, AVG … Export() Faire persister en base une Time Series
7. Conclusion Une approche intéressante pour beaucoup de phénomènes naturels ou économiques Solides fondations mathématiques Modélisation Distances Extensions possibles Multi-séries Séries imbriquées Localisation temporelle