J'ai beaucoup de données chronologiques - niveaux d'eau et vitesses en fonction du temps. C'est la sortie d'une simulation de modèle hydraulique. Dans le cadre du processus d'examen pour confirmer que le modèle fonctionne comme prévu, je dois tracer chaque série chronologique pour m'assurer qu'il n'y a pas de "vacillement" dans les données (voir l'exemple de vacillement mineur ci-dessous). L'utilisation de l'interface utilisateur du logiciel de modélisation est un moyen assez lent et laborieux de vérifier ces données. J'ai donc écrit une courte macro VBA pour importer divers bits de données du modèle, y compris les résultats dans Excel et les tracer tous en même temps. J'espère écrire une autre macro VBA courte pour analyser les données de séries chronologiques et mettre en évidence les sections suspectes.
Jusqu'à présent, ma seule pensée est que je pourrais faire une analyse de la pente des données. Partout où la pente passe rapidement de positive à négative plusieurs fois dans une fenêtre de recherche donnée, elle peut être classée comme instable. Suis-je en train de manquer des astuces plus simples? Essentiellement, une simulation "stable" devrait fournir une courbe très lisse. Tout changement soudain est susceptible d'être le résultat d'une instabilité des calculs.
la source
Réponses:
Les détails de la douceur importent peu. Dans cet exemple, un loess lisse (implémenté dans
R
commeloess
avecspan=0.05
pour le localiser) a été utilisé, mais même une moyenne fenêtrée aurait fait l'affaire. Pour lisser les résidus absolus, j'ai utilisé une moyenne fenêtrée de largeur 17 (environ 24 minutes) suivie d'une médiane fenêtrée. Ces lissages fenêtrés sont relativement faciles à implémenter dans Excel. Une implémentation VBA efficace (pour les anciennes versions d'Excel, mais le code source devrait fonctionner même dans les nouvelles versions) est disponible sur http://www.quantdec.com/Excel/smoothing.htm .R
Codela source