Existe-t-il des algorithmes documentés pour séparer les sections d'un ensemble de données donné en différentes courbes de meilleur ajustement?
Par exemple, la plupart des humains qui regardent ce tableau de données le diviseraient facilement en 3 parties: un segment sinusoïdal, un segment linéaire et le segment exponentiel inverse. En fait, j'ai fait celui-ci en particulier avec une onde sinusoïdale, une ligne et une formule exponentielle simple.
Existe-t-il des algorithmes existants pour trouver des parties comme celle-ci, qui peuvent ensuite être ajustés séparément à diverses courbes / lignes pour créer une sorte de série composée de meilleurs ajustements de sous-ensembles de données?
Notez que bien que l'exemple ait à peu près la fin des segments, ce ne sera pas nécessairement le cas; il peut également y avoir une secousse soudaine des valeurs à une coupure de segment. Ces cas seront peut-être plus faciles à détecter.
Mise à jour: Voici une image d'un petit peu de données du monde réel:
Mise à jour 2: voici un ensemble de données du monde réel exceptionnellement petit (seulement 509 points de données):
4,53,53,53,53,58,56,52,49,52,56,51,44,39,39,39,37,33,27,21,18,12,19,30,45,66,92,118,135,148,153,160,168,174,181,187,191,190,191,192,194,194,194,193,193,201,200,199,199,199,197,193,190,187,176,162,157,154,144,126,110,87,74,57,46,44,51,60,65,66,90,106,99,87,84,85,83,91,95,99,101,102,102,103,105,110,107,108,135,171,171,141,120,78,42,44,52,54,103,128,82,103,46,27,73,123,125,77,24,30,27,36,42,49,32,55,20,16,21,31,78,140,116,99,58,139,70,22,44,7,48,32,18,16,25,16,17,35,29,11,13,8,8,18,14,0,10,18,2,1,4,0,61,87,91,2,0,2,9,40,21,2,14,5,9,49,116,100,114,115,62,41,119,191,190,164,156,109,37,15,0,5,1,0,0,2,4,2,0,48,129,168,112,98,95,119,125,191,241,209,229,230,231,246,249,240,99,32,0,0,2,13,28,39,15,15,19,31,47,61,92,91,99,108,114,118,121,125,129,129,125,125,131,135,138,142,147,141,149,153,152,153,159,161,158,158,162,167,171,173,174,176,178,184,190,190,185,190,200,199,189,196,197,197,196,199,200,195,187,191,192,190,186,184,184,179,173,171,170,164,156,155,156,151,141,141,139,143,143,140,146,145,130,126,127,127,125,122,122,127,131,134,140,150,160,166,175,192,208,243,251,255,255,255,249,221,190,181,181,181,181,179,173,165,159,153,162,169,165,154,144,142,145,136,134,131,130,128,124,119,115,103,78,54,40,25,8,2,7,12,25,13,22,15,33,34,57,71,48,16,1,2,0,2,21,112,174,191,190,152,153,161,159,153,71,16,28,3,4,0,14,26,30,26,15,12,19,21,18,53,89,125,139,140,142,141,135,136,140,159,170,173,176,184,180,170,167,168,170,167,161,163,170,164,161,160,163,163,160,160,163,169,166,161,156,155,156,158,160,150,149,149,151,154,156,156,156,151,149,150,153,154,151,146,144,149,150,151,152,151,150,148,147,144,141,137,133,130,128,128,128,136,143,159,180,196,205,212,218,222,225,227,227,225,223,222,222,221,220,220,220,220,221,222,223,221,223,225,226,227,228,232,235,234,236,238,240,241,240,239,237,238,240,240,237,236,239,238,235
Le voici, cartographié, avec la position approximative de certains bords d'éléments du monde réel connus marqués de lignes pointillées, un luxe que nous n'aurons normalement pas:
Un luxe que nous avons, cependant, est le recul: les données dans mon cas ne sont pas une série chronologique, mais sont plutôt spatialement liées; il est logique d'analyser un ensemble de données entier (généralement 5000 - 15000 points de données) à la fois, pas de manière continue.
la source
Réponses:
Mon interprétation de la question est que le PO recherche des méthodologies qui correspondent à la ou aux formes des exemples fournis, et non aux résidus HAC. De plus, des routines automatisées qui ne nécessitent pas d'intervention humaine ou d'analyste importante sont souhaitées. Box-Jenkins peut ne pas être approprié, malgré leur importance dans ce fil, car ils nécessitent une implication substantielle des analystes.
Il existe des modules R pour ce type de correspondance de modèle sans moment. Le clustering de distribution de permutation est une telle technique de mise en correspondance de modèles développée par un scientifique de l'Institut Max Planck qui répond aux critères que vous avez définis. Son application est aux données de séries chronologiques, mais ce n'est pas limité à cela. Voici une citation pour le module R qui a été développé:
pdc: un package R pour le clustering basé sur la complexité des séries chronologiques par Andreas Brandmaier
En plus du PDC, il y a l'apprentissage automatique, la routine iSax développée par Eamon Keogh chez UC Irvine qui vaut également la peine d'être comparée.
Enfin, il y a cet article sur Data Smashing: Uncovering Lurking Order in Datapar Chattopadhyay et Lipson. Au-delà du titre intelligent, il y a un objectif sérieux au travail. Voici le résumé: "De la reconnaissance automatique de la parole à la découverte d'étoiles inhabituelles, presque toutes les tâches de découverte automatisées sous-tendent la capacité de comparer et de contraster les flux de données les uns avec les autres, d'identifier les connexions et de repérer les valeurs aberrantes. Malgré la prévalence des données, cependant, les méthodes automatisées Un des principaux goulots d'étranglement est que la plupart des algorithmes de comparaison de données s'appuient aujourd'hui sur un expert humain pour spécifier les «caractéristiques» des données qui sont pertinentes pour la comparaison. Ici, nous proposons un nouveau principe pour estimer la similitude entre les sources d'arbitraire flux de données, n'utilisant ni connaissance du domaine ni apprentissage. Nous démontrons l'application de ce principe à l'analyse des données d'un certain nombre de problèmes difficiles du monde réel, y compris la désambiguïsation des modèles d'électro-encéphalographie concernant les crises d'épilepsie, la détection de l'activité cardiaque anormale à partir d'enregistrements sonores de cœur et la classification des objets astronomiques à partir de la photométrie brute. Dans tous ces cas et sans accès à aucune connaissance du domaine, nous démontrons des performances à la hauteur de la précision obtenue par des algorithmes spécialisés et des heuristiques conçus par des experts du domaine. Nous suggérons que les principes d'écrasement des données peuvent ouvrir la porte à la compréhension d'observations de plus en plus complexes, en particulier lorsque les experts ne savent pas quoi rechercher. " Dans tous ces cas et sans accès à aucune connaissance du domaine, nous démontrons des performances à la hauteur de la précision obtenue par des algorithmes spécialisés et des heuristiques conçus par des experts du domaine. Nous suggérons que les principes d'écrasement des données peuvent ouvrir la porte à la compréhension d'observations de plus en plus complexes, en particulier lorsque les experts ne savent pas quoi rechercher. " Dans tous ces cas et sans accès à aucune connaissance du domaine, nous démontrons des performances à la hauteur de la précision obtenue par des algorithmes spécialisés et des heuristiques conçus par des experts du domaine. Nous suggérons que les principes d'écrasement des données peuvent ouvrir la porte à la compréhension d'observations de plus en plus complexes, en particulier lorsque les experts ne savent pas quoi rechercher. "
Cette approche va bien au-delà de l'ajustement curviligne. Cela vaut la peine de vérifier.
la source
La détection des points de changement dans une série chronologique nécessite la construction d'un modèle ARIMA global robuste (certainement imparfait par les changements de modèle et les changements de paramètres dans le temps dans votre cas), puis en identifiant le point de changement le plus significatif dans les paramètres de ce modèle. En utilisant vos valeurs 509, le point de changement le plus significatif a été autour de la période 353. J'ai utilisé certains algorithmes propriétaires disponibles dans AUTOBOX (que j'ai aidé à développer) qui pourraient éventuellement être concédés sous licence pour votre application personnalisée. L'idée de base est de séparer les données en deux parties et une fois le point de changement le plus important analysé séparément, chacune des deux plages de temps (1-352; 353-509) pour déterminer d'autres points de changement dans chacun des deux ensembles. Ceci est répété jusqu'à ce que vous ayez k sous-ensembles. J'ai attaché la première étape en utilisant cette approche.
la source
Je pense que le titre du fil est trompeur: vous ne cherchez pas à comparer les fonctions de densité mais vous cherchez en fait des ruptures structurelles dans une série chronologique. Cependant, vous ne spécifiez pas si ces ruptures structurelles sont censées se trouver dans une fenêtre temporelle glissante ou avec le recul en examinant l'historique total de la série chronologique. En ce sens, votre question est en fait en double: quelle méthode pour détecter les ruptures structurelles sur les séries chronologiques?
Comme mentionné par Rob Hyndman dans ce lien, R propose le package strucchange à cet effet. J'ai joué avec vos données mais je dois dire que les résultats sont décevants [le premier point de données est-il vraiment 4 ou censé être 54?]:
Je ne suis pas un utilisateur régulier du package. Comme vous pouvez le voir, cela dépend du modèle que vous ajustez sur les données. Vous pouvez expérimenter avec
qui vous donne le modèle ARIMA le mieux adapté.
la source