Comment gérer les séries chronologiques qui changent de saisonnalité ou d'autres modèles?

22

Contexte

Je travaille sur un ensemble de données de séries chronologiques de relevés de compteurs d'énergie. La longueur de la série varie selon le mètre - pour certains j'ai plusieurs années, d'autres seulement quelques mois, etc. Beaucoup présentent une saisonnalité importante, et souvent plusieurs couches - dans la journée, la semaine ou l'année.

L'une des choses sur lesquelles j'ai travaillé est le regroupement de ces séries chronologiques. Mon travail est académique pour le moment, et pendant que je fais aussi d'autres analyses des données, j'ai un objectif spécifique pour effectuer un clustering.

J'ai fait un travail initial où j'ai calculé diverses fonctionnalités (pourcentage utilisé le week-end par rapport au jour de la semaine, pourcentage utilisé dans différents blocs de temps, etc.). J'ai ensuite étudié l'utilisation de Dynamic Time Warping (DTW) pour obtenir la distance entre différentes séries et le clustering en fonction des valeurs de différence, et j'ai trouvé plusieurs articles à ce sujet.

Question

Est-ce que la saisonnalité dans une série spécifique change, mon clustering sera incorrect? Et si oui, comment y faire face?

Ma préoccupation est que les distances obtenues par DTW pourraient être trompeuses dans les cas où le schéma d'une série chronologique a changé. Cela pourrait entraîner un clustering incorrect.

Dans le cas où ce qui précède n'est pas clair, considérez ces exemples:

Exemple 1

Un compteur a des lectures faibles de minuit à 8 heures du matin, les lectures augmentent ensuite fortement pendant l'heure suivante et restent élevées de 9 heures à 17 heures, puis diminuent fortement au cours de l'heure suivante, puis restent faibles de 18 heures à minuit. Le lecteur continue ce modèle de manière cohérente tous les jours pendant plusieurs mois, mais passe ensuite à un modèle où les lectures restent simplement à un niveau constant tout au long de la journée.

Exemple 2

Un compteur indique approximativement la même quantité d'énergie consommée chaque mois. Après plusieurs années, il passe à un modèle où la consommation d'énergie est plus élevée pendant les mois d'été avant de revenir à la quantité habituelle.

Directions possibles

  • Je me suis demandé si je pouvais continuer à comparer des séries chronologiques entières, mais les séparer et les considérer comme une série distincte si le schéma change considérablement. Cependant, pour ce faire, je devrais être capable de détecter de tels changements. De plus, je ne sais tout simplement pas si c'est une façon appropriée ou de travailler avec les données.
  • J'ai également envisagé de diviser les données et de les considérer comme autant de séries chronologiques distinctes. Par exemple, je pourrais considérer chaque combinaison jour / mètre comme une série distincte. Cependant, je devrais alors faire de même si je voulais considérer les modèles hebdomadaires / mensuels / annuels. Je pense que cela fonctionnerait, mais c'est potentiellement assez onéreux et je détesterais emprunter cette voie s'il y a une meilleure façon de me manquer.

Notes complémentaires

Ce sont des choses qui ont été soulevées dans les commentaires, ou des choses auxquelles j'ai pensé en raison des commentaires, qui pourraient être pertinentes. Je les mets ici pour que les gens n'aient pas à tout lire pour obtenir des informations pertinentes.

  • Je travaille en Python, mais ai rpy pour les endroits où R est plus approprié. Je ne cherche pas nécessairement une réponse Python - si quelqu'un a une réponse pratique à ce qui devrait être fait, je suis moi-même heureux de découvrir les détails de l'implémentation.
  • J'ai beaucoup de code "brouillon" à travailler - j'ai fait quelques exécutions DTW, j'ai fait quelques types différents de clustering, etc. Je pense que je comprends en grande partie la direction que je prends, et ce que je ' Ce que je recherche vraiment est lié à la façon dont je traite mes données avant de trouver des distances, d'exécuter un clustering, etc. Étant donné cela, je pense que la réponse serait la même si les distances entre les séries sont calculées via DTW ou une distance euclidienne (ED) plus simple.
  • J'ai trouvé ces articles particulièrement informatifs sur les séries chronologiques et le DTW et ils peuvent être utiles si des informations sont nécessaires sur le sujet: http://www.cs.ucr.edu/~eamonn/selected_publications.htm
Jo Douglass
la source
+1 Très belle question, et c'est super de voir autant d'enthousiasme! Je pense que vous pourriez clouer un peu votre question, il est donc plus intéressant pour les autres de lire, puis de vous donner une réponse.
Rubens
@Rubens Merci! Je vais le retravailler quand je serai à la maison ce soir, je peux voir où il serait utile d'inclure plus d'informations sur comment j'en suis arrivé à ce point et pourquoi. J'avais peur que cela ne devienne trop long, mais je séparerai l'arrière-plan et poserai des questions un peu plus pour éviter qu'il devienne illisible.
Jo Douglass
Ce n'est peut-être pas une question de "statistiques pures", mais il faut une réponse de statistiques pures. Vous aurez du mal jusqu'à ce que vous puissiez y penser en termes de statistiques pures.
Spacedman
@Spacedman - J'accueille les réponses de la manière que les gens jugent la meilleure façon d'y répondre, avec la réserve que je pourrais avoir d'autres questions si la réponse est lourde de formules ou de références à des concepts statistiques que je ne comprends pas encore.
Jo Douglass
Jo as-tu trouvé la bonne réponse à ta question? Je suis dans la même situation et j'ai besoin d'aide. Merci
LSola

Réponses:

14

Après avoir lu votre question, je suis devenu curieux au sujet du regroupement des séries chronologiques et du warping temporel dynamique (DTW) . Donc, j'ai effectué une recherche limitée et est venu avec une compréhension de base (pour moi) et l'ensemble suivant de références pertinentes à mon humble avis (pour vous). J'espère que vous trouverez cela utile, mais gardez à l'esprit que j'ai intentionnellement sauté des articles de recherche, car j'étais plus intéressé par les aspects pratiques du sujet.

Ressources:

Aleksandr Blekh
la source
1
Un certain nombre d'entre elles sont des ressources que j'ai consultées - j'ai implémenté une version modifiée du travail aux points 2 et 4, par exemple - donc nous sommes probablement sur la même page maintenant. Et la grande majorité de ce que je sais est basée sur les articles ou articles d'Eamonn Keogh. Mais il y en a ici que je n'avais pas lu, et celui sur le regroupement des séries temporelles de vélos en libre-service est intéressant - merci! Je ne vois rien qui réponde spécifiquement à ma question, mais signalez-le si j'ai oublié quelque chose en lisant.
Jo Douglass
1
De plus, si vous trouvez toujours cela intéressant, les articles de Keogh valent vraiment la peine d'être lus. Ils sont étonnamment faciles à lire et assez pratiques étant donné l'accent mis sur l'utilisation de nombreux ensembles de données et la fourniture de suffisamment d'informations pour que quelqu'un puisse recréer toutes les expériences. La plus récente est intéressante, et c'est ce sur quoi je travaillais lorsque j'ai été mis à l'écart par ma question. cs.ucr.edu/~eamonn/selected_publications.htm
Jo Douglass
1
@JoDouglass: Vous êtes les bienvenus! Je n'avais pas l'intention de répondre directement à votre question (en raison de ma connaissance limitée du sujet), mais j'espérais que ce serait utile, ce qui semble être le cas. Merci pour les bons commentaires et la référence - je vais parcourir les articles et essayer d'avoir une meilleure idée. Il y a tellement de choses à apprendre, c'est un peu écrasant.
Aleksandr Blekh
1
Écrasant a raison, je me donnais un coup de pied pour avoir choisi ce sujet pendant un certain temps! J'ai l'impression d'y arriver, cependant - et ça a été vraiment intéressant d'en savoir plus. J'ai un certain nombre de choses en place sous forme de versions approximatives de ce que je dois faire, et je pense qu'il s'agit davantage de comprendre comment traiter mes données avant de les exécuter dans mes modèles, maintenant. Ce lien de partage de vélos est intéressant pour moi car c'est le premier que j'ai vu discuter de la moyenne des séries chronologiques depuis la lecture du récent article de Keogh que j'ai mentionné.
Jo Douglass du
1
@JoDouglass: Quand j'ai dit "écrasante", je voulais dire tout le domaine de la science des données (y compris l'IA / ML et les statistiques, en particulier). Je suis encore à trouver une ressource qui présente un haut niveau de discussion de diverses approches et / ou méthodes comme thèmes , intégrés dans une vaste , mais parcimonieuse , cadre .
Aleksandr Blekh
4

Si vous souhaitez simplement extraire des modèles saisonniers, alors examinez l' autocorrélation . Si vous cherchez un modèle qui peut apprendre les tendances saisonnières et en faire des prévisions, alors Holt-Winters est un bon début et ARIMA serait une bonne chose à suivre. Voici [pdf] le tutoriel qui m'a fait décoller.

TheGrimmScientist
la source
Le travail est (pour l'instant) académique, plutôt que purement pratique. Je peux faire des prévisions très tard ou à l'avenir, mais je suis plus intéressé par l'exploration des données passées pour l'instant. Le regroupement est un objectif en soi, ainsi que certaines idées que je veux explorer au-delà de ce point.
Jo Douglass
Désolé, appuyez sur Entrée prématurément. J'ai étudié l'autocorrélation dans une certaine mesure et je l'ai exécutée sur un sous-ensemble de mes données il y a un certain temps, mais je ne savais pas vraiment ce que je pouvais en tirer. Les données sont assez bruyantes. Les schémas de saisonnalité sont parfois assez évidents à la visualisation, mais inexacts dans leur timing - donc je recherche peut-être des schémas similaires, mais pas selon un horaire régulier et agréable. On m'a dit que l'autocorrélation était susceptible d'être problématique sur de telles données, mais heureux d'avoir un autre regard s'il y a de la valeur. Je ne veux pas simplement trouver la saisonnalité, mais le comprendre est un objectif.
Jo Douglass
Suivez ce didacticiel au moins jusqu'à la version 2.5 incluse. Il utilise R, ce qui est particulièrement bon pour votre environnement académique. Il vous apprendra l'autocorrélation qui sonne exactement comme ce que vous recherchez (ne peut pas dire si ce n'était pas un ajustement parce que vous ne saviez pas ce que vous regardiez, ou les données sont en fait trop bruyantes). Si le bruit est le problème, le lissage exponentiel est un moyen d'y remédier, qui sera enseigné dans le cadre du modèle holt-winters. Même si tout cela ne vous donne pas la réponse, cela clarifiera certainement votre prochaine étape.
TheGrimmScientist
J'ai lu le didacticiel, mais il revient surtout sur des choses que je connais déjà. En fait, je travaille en Python et je suis un peu trop loin dans les choses pour passer à R, bien que j'aie l'intention de récupérer rpy à un moment donné au cas où il y aurait des choses que je ne pourrais trouver dans aucune bibliothèque Python. J'ai réécrit ma question au cas où cela aiderait - comme je le dis, le clustering est un objectif en soi, je ne cherche pas une direction complètement différente. Je crains que le didacticiel ne le fasse pas '' t vraiment répondre à ma question.
Jo Douglass