Programme d’étude de séries temporelles Projet 4 INFO 2008 – 2009 PRESTO Programme d’étude de séries temporelles Soutenance de projet 26 mai 2009 Jean-Frédéric Berthelot Paul-Alain Bugnard Camille Capelle Sébastien Castiel Marion Floury Aymeric Hervieu Chris Hervieux Encadreurs : Jean Camillerapp Hamdi Raissi
Plan Introduction Spécification Conception Planification Démonstration PRESTO - Soutenance de projet Plan Introduction Les séries temporelles Modèles JMulti Spécification Conception Planification Démonstration Conclusion
Les séries temporelles PRESTO - Soutenance de projet Les séries temporelles Série d’observations numériques indicées par le temps Expliquer les événements passés et prédire leurs évolutions Séries économiques, financières ou météorologiques… Qu’est-ce que c’est ? Une série temporelle ou chronologique est une série d’observations numériques (mesures) indicées par le temps. Les dates d’observations sont souvent équidistantes les unes des autres. On peut avoir des séries hebdomadaires, mensuelles, trimestrielles, etc. Pourquoi on s’en sert ? Expliquer les événement passé et prédire leurs évolutions futures Ou peut-on les trouver ? On peut représenter par des séries temps des données : - macroéconomiques (le PIB d’un pays, l’inflation), - micro-économiques (les ventes d’une entreprise, son nombre d’employés), financières (le CAC40, le cours d’une action), météorologiques (la pluviosité), tout ce qui est chiffrable et varie en fonction du temps. Pour fixer les idées, on peut prendre un exemple :
Les séries temporelles PRESTO - Soutenance de projet Les séries temporelles
Objectifs de l’analyse des séries temporelles PRESTO - Soutenance de projet Objectifs de l’analyse des séries temporelles Résumer Décrire Modéliser Prédire Relier les variables Min Max Moyenne Ecart type 0.007 0.5 0.06 0.122 Décrire Quand on s’intéresse à une série temporelle, la première étape, comme pour toute donnée, est de décrire la série. On utilise pour ce faire un certain nombre de graphiques comme des diagrammes séquentiels ou des histogrammes. Modéliser Cela consiste à expliquer les valeurs prises par la série en l’associant à une loi statistique connue à peu de paramètres qui seront à estimer. Prédire Comprendre la dynamique qui relie une observation à celles qui l’ont précédée peut permettre d’extrapoler et d’établir une prévision. Relier les variables A partir de données non-stationnaires, Clive Granger a montré qu’il était possible de relier les variables de telle sorte qu’une combinaison spécifique de séries temporelles non-stationnaires se comporte stationnairement. On parle alors de cointégration. Si des séries sont cointégrées, elles peuvent évoluer de manière disjointe à court terme mais elles évoluent ensemble à long terme.
Les modèles Univarié / Multivarié Différents modèles PRESTO - Soutenance de projet Les modèles Univarié / Multivarié Différents modèles VAR : Vectoriel autorégressif VECM : Correction d’erreur Principe de causalité (Granger) Valider un modèle Résidus = Réel - Modèle
JMulti (1/3) Logiciel de traitement de séries numériques Date de 1999 PRESTO - Soutenance de projet JMulti (1/3) Logiciel de traitement de séries numériques Date de 1999 Codé en Java Offre différents traitements statistique : Statistiques descriptives (moyenne, écart type …) Affichage graphique Différents modèles statistiques
PRESTO - Soutenance de projet JMulti (2/3)
JMulti (3/3) Des imperfections : Problème d’ergonomie PRESTO - Soutenance de projet JMulti (3/3) Des imperfections : Problème d’ergonomie Peu d’extensibilité Utilisation incomplète des résultats mathématiques récents Ajouter la copie d’écran+ la critique de l’ergonomie.
Plan Introduction Spécification Conception Planification Conclu PRESTO - Soutenance de projet Plan Introduction Spécification Objectifs Fonctionnalités Conception Planification Conclu
Objectifs de Presto Objectifs de Presto : Contrat pour cette année: PRESTO - Soutenance de projet Objectifs de Presto Objectifs de Presto : Etude de séries temporelles Prise en main facile et intuitive Logiciel évolutif Contrat pour cette année: Réalisation de l’interface Ecrire des fonctions pour l’analyse multivariée Traduire les algorithmes de notre encadrant
Les données manipulées PRESTO - Soutenance de projet Les données manipulées Différents types de données Importation/exportation de séries Opérations sur les variables Différents types de donnée : Série, scalaire, serieSet, ResultSet Importation/exportation des séries Renomer/afficher/supprimer
Programme et instructions PRESTO - Soutenance de projet Programme et instructions Ajout graphique d’une instruction Aide aux fonctions Programme = Des instructions 2 etats : executés ou non (truc vert) Déplacer/supprimer/executer/modifier une instruction Ajout console ou graphique à partir de la liste des fonctions disponible dans les menus (classé) Ajout d’une nouvelle fonction (xml) Aide aux fonctions Programme = plusieurs instructions Opérations sur les instructions Saisie textuelle d’une instruction
Les affichages Affichage des graphiques (onglets) PRESTO - Soutenance de projet Les affichages Affichage des graphiques (onglets) Une table des affichages Courbe ou Html Courbe = histogramme ou lissage des points (selon les données) + zoom Parler des rapports (concaténation d’affichage pour les RS) Enregistrer les résultats Différents types d’affichages Opérations sur les affichages
PRESTO - Soutenance de projet Le journal Différents types d’événements
Bilan fonctionnalités PRESTO - Soutenance de projet Bilan fonctionnalités Découpage en blocs : Données Programme Import/Export Fonctions Interface graphique Transition vers l’architecture.
Plan Introduction Spécification Conception Planification Conclusion PRESTO - Soutenance de projet Plan Introduction Spécification Conception Architecture Données Programme Import/Export Algorithme et fonction Affichage Médiateur Interface Graphique Planification Conclusion
Exportation Importation PRESTO - Soutenance de projet Architecture Exécution Fonctions Série Affichage Programme Sauvegarde Exportation Importation Création instruction Insister sur les importations, les formats autorisés
Données : différents types PRESTO - Soutenance de projet Données : différents types Matrice, scalaire, série… Héritent tous d’une classe Data Caractéristiques spécifiques : Structures de données (réel, tableau de réels…) Des affichages spécifiques
PRESTO - Soutenance de projet Données : exemples IntervalData : un affichage textuel de la forme [a ; b] et pas d’affichage graphique. SerieData : un affichage textuel et un affichage graphique.
Données : le stockage Stockées dans une table : DataTable PRESTO - Soutenance de projet Données : le stockage Stockées dans une table : DataTable Un ensemble de Command pour manipuler la table : AddDataCommand DeleteDataCommand RenameDataCommand
S2 = Centrer(S1) | C <macourbe> PRESTO - Soutenance de projet Instructions S2 = Centrer(S1) | C <macourbe> Directives d’affichage Paramètre(s) Fonction Résultat Mécanisme par instructions Saisie d’une instruction textuelle ou graphique Exemple : Centrer S1 => série Placer le résultat dans S2 Afficher S2 dans « macourbe » Saisi d’une instruction => ajout en fin de programme
Programme : rédaction Ensemble d’instructions PRESTO - Soutenance de projet Programme : rédaction Ensemble d’instructions Pouvoir effectuer plusieurs actions sur les instructions du programme : AddInstructionCommand DeleteInstructionCommand RenameInstructionCommand ExecuteInstructionCommand MoveInstructionCommand ReplaceInstructionCommand
Programme : exécution Structure de données : PRESTO - Soutenance de projet Programme : exécution Structure de données : Liste d’instructions Pointeur d’exécution A l’exécution : analyse des instructions pour contrôler qu’il n’y ait pas d’erreurs.
Programme : tests Un programme test : PRESTO - Soutenance de projet Programme : tests Un programme test : #Génère deux séries normales S1 = GenererSerieNormale(10;1;10) | H <Rapport> S2 = GenererSerieNormale(5;0,5;10) # Additionne S1 et S2 S3 = Addition(S1;S2) | H <Rapport> # Copie de S4 dans S5 S5 = S3 | B <Graphe> # Affichage de S5 S5 | C <Graphe> # Instruction à supprimer S6 = S5 # Quelle est la moyenne de S1 ? M = Moyenne(S1) | H <Rapport>, C<Graphe> # Erreur d’exécution SX = FonctionInconnue(S2) Exécution des l’ensembles de commandes associées.
Import / Export de donnée PRESTO - Soutenance de projet Import / Export de donnée Import de série : format CSV, XLS, XLSX (2007), TXT Analyseur spécifique pour chaque formats : ExcelParser, CSVParser, TXTParser Export de série : format CSV Exporteur : SerieExporter
Import / Export de programme PRESTO - Soutenance de projet Import / Export de programme Export du programme au format texte Utilisation de ProgramExporter Import de programme au format texte Utilisation de ProgamParser et ProgramImporter
Import / Export de projet PRESTO - Soutenance de projet Import / Export de projet Projet Programme Séries importées Revenir à l’état d’un ancien projet Après l’import : l’exécution du programme permet de revenir à l’état précédent la sauvegarde
Fonctions Nom Fonction Fonction Execute() Fonctions natives PRESTO - Soutenance de projet Fonctions Nom Fonction Fonction Execute() Fonctions natives Fonctions importées Execute() Execute()
Fonctions importées Reflection Appel de fonction DLL Classe PRESTO - Soutenance de projet Fonctions importées DLL Reflection Classe Chemin d’accès Nom de la classe Nom de la fonction Assembly Type MethodInfo Méthode 1 … Méthode n Appel de fonction
Description des fonctions (1/2) PRESTO - Soutenance de projet Description des fonctions (1/2) XML Informations à stocker Localisation Signature Informations secondaires
Description des fonctions (2/2) PRESTO - Soutenance de projet Description des fonctions (2/2) Exemple de fichier de description
Chargement des DLL DLL 1 DLL 2 Nom Fonction Algo1.xml Algo2.xml Algo1 PRESTO - Soutenance de projet Chargement des DLL AlgoN.xml Algo1.xml Algo2.xml DLL 1 DLL 2 Nom Fonction Algo1 Algo2 … AlgoN
Création de DLL Langage non imposé PRESTO - Soutenance de projet Création de DLL Langage non imposé Objet Compilation en DLL .NET Utilisation des structures de données PRESTO
Traduction des algorithmes (1/3) PRESTO - Soutenance de projet Traduction des algorithmes (1/3) Boucles Indices Structures de contrôle Aperçu de code Fortran
Traduction des algorithmes (2/3) PRESTO - Soutenance de projet Traduction des algorithmes (2/3) Procédure systématique et fastidieuse Pas d’outil automatique satisfaisant Nombreuses erreurs de traduction
Traduction des algorithmes (3/3) PRESTO - Soutenance de projet Traduction des algorithmes (3/3) Tests et débogage difficiles Longueur globale Comparaison des résultats difficile Environnement Fortran peu adapté Différences de précision
Courbe générée avec la bibliothèque ZedGraph PRESTO - Soutenance de projet Affichages Courbes et diagrammes en bâtons Utilisation de la bibliothèque ZedGraph Représentation des matrices, séries, rapports… Utilisation du langage HTML Intégration facile Courbe générée avec la bibliothèque ZedGraph
Conception des affichages PRESTO - Soutenance de projet Conception des affichages Chaque donnée a plusieurs affichages possibles HTMLDisplay GraphDisplay Utilisation du design pattern Visiteur Code spécifique pour chaque type de données Table des affichages
Tests des affichages Utilisation de la bibliothèque ZedGraph PRESTO - Soutenance de projet Tests des affichages Utilisation de la bibliothèque ZedGraph Déjà testée Tests avec des données simulées Comparaisons avec sorties Excel et JMulti
Interface graphique Objectifs Réalisation Interface complète PRESTO - Soutenance de projet Interface graphique Objectifs Interface complète Interface intuitive Réalisation Utilisation de Visual Studio 2008 Utilisation du framework .NET (Winforms…)
Tests de l’interface graphique PRESTO - Soutenance de projet Tests de l’interface graphique Tests des différentes fenêtres Du point de vue du praticien Essais de prise en défaut de l’interface graphique
Médiateur Lien entre l’interface graphique et le reste du logiciel PRESTO - Soutenance de projet Médiateur Lien entre l’interface graphique et le reste du logiciel Liens simplifiés entre les modules Tests simplifiés
Architecture avec le médiateur PRESTO - Soutenance de projet Architecture avec le médiateur Fenêtre ajout de séries Exécution Fenêtre ajout de fonctions Sauvegarde Médiateur Fenêtre principale Création instruction Fenêtre modification Exportation Importation Autres fenêtres
PRESTO - Soutenance de projet Tests d’intégration Tester tous les modules à partir de l’interface graphique Tests sur différentes données Tests sur différents programmes Appels de toutes les fonctions Essai de prise en défaut du logiciel
Plan Introduction Spécification Conception Planification Conclusion PRESTO - Soutenance de projet Plan Introduction Spécification Conception Planification Conclusion
Stockage des données : Affichage : PRESTO - Soutenance de projet Stockage des données : Module important au niveau dépendance. Affichage : Bibliothèque ZedGraph efficace. Temps estimé Temps effectif Données -> module nécessaire à tous les autres -> bloquant pour le début de certains modules -> « consciement » surestimé Affichage -> bibliothèque trouvée -> mais très complète -> prévu du temps pour la maitriser et obtenir les « bons » graphes.
Instructions et programme : PRESTO - Soutenance de projet Instructions et programme : Conception précise Fonctions : Ajout de fonctions Temps estimé Temps effectif Inst&prog -> Fonctions -> complexification de la conception -> ajout de fonction non prévu: univarié
Interface graphique : Tests : Dans les temps PRESTO - Soutenance de projet Interface graphique : Dans les temps Tests : Beaucoup de tests sur les algorithmes Temps estimé Temps effectif Interface -> Test ->test algo important car cœur du logiciel -> test d’intégration
Bilan des développement et test PRESTO - Soutenance de projet Bilan des développement et test Temps total estimé : 740h Temps total effectif : 760h
Durée des différentes phases PRESTO - Soutenance de projet Durée des différentes phases
Plan Introduction Spécification Conception Planification Conclusion PRESTO - Soutenance de projet Plan Introduction Spécification Conception Planification Conclusion
Respect du cahier des charges (1/2) PRESTO - Soutenance de projet Respect du cahier des charges (1/2) Import et génération de séries Application de fonctions mathématiques Exécution d’algorithmes complexes et génération de rapports Affichage des résultats (textuel ou graphique)
Respect du cahier des charges (2/2) PRESTO - Soutenance de projet Respect du cahier des charges (2/2) Export des résultats (séries, graphiques, rapports…) Une interface graphique claire et intuitive Possibilité de développer des nouvelles fonctions
Des fonctionnalités supplémentaires PRESTO - Soutenance de projet Des fonctionnalités supplémentaires Autres fonctions mathématiques : analyse univariée (cours de modélisation statistique) Documentation des fonctions accessible depuis le logiciel : paramètres, retour…
Evolutions possibles Application multilingue PRESTO - Soutenance de projet Evolutions possibles Application multilingue Assistants d’analyse de données (démarche statistique) Personnalisation du logiciel par l’utilisateur (forme des résultats…) Gestion des dates dans les séries Nouveaux types de graphiques Complexifier le programme : sous-programmes, structures conditionnelles…
Apports du projet : techniques PRESTO - Soutenance de projet Apports du projet : techniques C# / .NET, Microsoft Visual Studio Création et utilisation statique ou dynamique de bibliothèques (DLL) Utilisation du format XML Développement collaboratif (SVN, Google Code)
Apports du projet : gestion de projet PRESTO - Soutenance de projet Apports du projet : gestion de projet Importance de la planification Importance et difficultés du dialogue avec un client non-informaticien Et aussi : Implémentation de notions vues en cours de modélisation statistique
Conclusion Un logiciel... Fonctionnel Novateur Extensible PRESTO - Soutenance de projet Conclusion Un logiciel... Fonctionnel Prêt à être utilisé par les statisticiens Novateur Propose des fonctionnalités inexistantes actuellement (prix Nobel de 2003) Extensible Ajout dynamique de nouvelles fonctions By Jean-Fred : C’est pas vraiment inexistant, plutôt inédites….