Détection de forme pour les données de séries chronologiques

8

J'ai une grande collection de séries chronologiques - des mesures prises toutes les 15 minutes (96 mesures par jour) sur une période d'un an à différents endroits.

J'ai divisé chaque série chronologique en 365 séries chronologiques plus petites distinctes, 1 pour chaque jour de l'année. En regardant ces séries chronologiques, il existe certainement de nombreuses formes distinctes pour une seule journée. Certains semblent sinusoïdaux, certains sont constants, certains ressemblent à un processus stochastique aléatoire, certains semblent paraboliques et certains ressemblent à des U.

Ce que je voudrais faire, c'est utiliser un algorithme qui peut trouver ces formes courantes. J'ai pensé au clustering et à l'utilisation des centroïdes de cluster pour définir des formes communes, mais je voulais vérifier auprès de la communauté si cela était vrai. Jusqu'à présent, j'ai considéré Dynamic Time Warp comme une métrique, mais il semble que cette métrique nécessite beaucoup de calculs. J'ai aussi trouvé

http://mox.polimi.it/it/progetti/pubblicazioni/quaderni/13-2008.pdf de SE.

J'ai également vu Est-il possible de faire un regroupement de séries temporelles en fonction de la forme de la courbe? mais cette question date de 2010 et pourrait être dépassée.

Une autre idée que j'ai eue était de prendre des compositions de matrices qui étaient formatées comme suit:

La matrice est une matrice de toutes les séries chronologiques observées au jour . Chaque ligne de la matrice est une série chronologique de longueur 96. Ensuite, je ferais 365 compositions de composition numérique et j'utiliserais les vecteurs propres comme formes courantes. Cela vous semble-t-il raisonnable?MiiMi

Merci!

JCWong
la source

Réponses:

7

Je n'irais pas trop loin dans le clustering des séries temporelles basé sur une analyse de courbe complexe, car vous avez probablement beaucoup de bruit dans vos données et vous obtiendrez probablement des clusters étranges (sans signification).

Je pense qu'un moyen plus simple sera de découvrir le schéma majeur de vos données, qui sera très probablement basé sur les tendances et la saisonnalité (jours de la semaine, week-ends, jours fériés ...). Vous pouvez le trouver en traçant des statistiques de chaque jour (moyenne, tendance du matin, tendance du soir ...) avec l'heure (jour de l'année, jour de la semaine, jour du mois ...) sur l'axe des x. Cela vous donnera la base de vos données, et donc vos clusters de base.

Par exemple, dans R, si vous avez votre date dans le col 1 et votre moyenne dans le col 2, vous pouvez facilement tracer votre ligne de base du modèle de semaine en:

data[,3] <- as.factor(weekdays(data[,1]))
plot(data[,3],data[,2],main='mean by Day of Week')

La prochaine étape peut être d'identifier vos valeurs aberrantes et de vérifier si vous pouvez y trouver des modèles.

Si vous préférez travailler dans un ordre inverse; exécuter une analyse automatique comme celles que vous avez suggérées ou plusieurs séries temporelles réglées comme LB_Keogh ou kml , c'est OK. Mais vous devez revenir à l'interprétation significative des résultats avec la logique ci-dessus.

Gars
la source