¿Cómo lidiar con series de tiempo que cambian en la estacionalidad u otros patrones?

22

Fondo

Estoy trabajando en un conjunto de datos de series temporales de lecturas de medidores de energía. La longitud de la serie varía según el metro: para algunos tengo varios años, otros solo unos pocos meses, etc. Muchos muestran una estacionalidad significativa y, a menudo, varias capas, dentro del día, semana o año.

Una de las cosas en las que he estado trabajando es la agrupación de estas series de tiempo. Mi trabajo es académico por el momento, y aunque también estoy haciendo otro análisis de los datos, tengo un objetivo específico para llevar a cabo una agrupación.

Hice un trabajo inicial donde calculé varias características (porcentaje utilizado los fines de semana frente a los días laborables, porcentaje utilizado en diferentes bloques de tiempo, etc.). Luego pasé a ver el uso de la deformación dinámica del tiempo (DTW) para obtener la distancia entre diferentes series y la agrupación en función de los valores de diferencia, y encontré varios documentos relacionados con esto.

Pregunta

¿La estacionalidad en un cambio de serie específico hará que mi agrupación sea incorrecta? Y si es así, ¿cómo lo trato?

Mi preocupación es que las distancias obtenidas por DTW podrían ser engañosas en los casos en que el patrón en una serie temporal ha cambiado. Esto podría conducir a una agrupación incorrecta.

En caso de que lo anterior no esté claro, considere estos ejemplos:

Ejemplo 1

Un medidor tiene lecturas bajas desde la medianoche hasta las 8 a.m., las lecturas aumentan bruscamente durante la siguiente hora y permanecen altas desde las 9 a.m. hasta las 5 p.m., luego disminuyen bruscamente durante la próxima hora y luego permanecen bajas desde las 6 p.m. hasta la medianoche. El medidor continúa este patrón constantemente todos los días durante varios meses, pero luego cambia a un patrón donde las lecturas simplemente se mantienen en un nivel constante durante todo el día.

Ejemplo 2

Un medidor muestra aproximadamente la misma cantidad de energía que se consume cada mes. Después de varios años, cambia a un patrón en el que el uso de energía es mayor durante los meses de verano antes de volver a la cantidad habitual.

Posibles Direcciones

  • Me he preguntado si puedo seguir comparando series de tiempo completo, pero dividirlas y considerarlas como series separadas si el patrón cambia considerablemente. Sin embargo, para hacer esto necesitaría poder detectar tales cambios. Además, simplemente no sé si esta es una forma adecuada o trabajar con los datos.
  • También he considerado dividir los datos y considerarlos como muchas series de tiempo separadas. Por ejemplo, podría considerar cada combinación de día / metro como una serie separada. Sin embargo, tendría que hacer lo mismo si quisiera considerar los patrones semanales / mensuales / anuales. Creo que esto funcionaría, pero es potencialmente bastante oneroso y odiaría seguir este camino si hay una mejor manera que me estoy perdiendo.

Notas adicionales

Estas son cosas que han surgido en los comentarios, o cosas que he pensado debido a los comentarios, que podrían ser relevantes. Los pongo aquí para que la gente no tenga que leer todo para obtener información relevante.

  • Estoy trabajando en Python, pero tengo rpy para aquellos lugares donde R es más adecuado. Sin embargo, no estoy necesariamente buscando una respuesta de Python: si alguien tiene una respuesta práctica de lo que debe hacerse, me complace descubrir los detalles de la implementación yo mismo.
  • Tengo un montón de código de "borrador" en funcionamiento: he realizado algunas ejecuciones de DTW, he realizado un par de diferentes tipos de agrupación, etc. Creo que entiendo en gran medida la dirección que estoy tomando y lo que hago. Lo que realmente busco está relacionado con la forma en que proceso mis datos antes de encontrar distancias, ejecutar agrupaciones, etc. Dado esto, sospecho que la respuesta sería la misma si las distancias entre series se calculan a través de DTW o una Distancia Euclidiana (DE) más simple.
  • He encontrado estos documentos especialmente informativos sobre series temporales y DTW y pueden ser útiles si se necesitan algunos antecedentes sobre el tema: http://www.cs.ucr.edu/~eamonn/selected_publications.htm
Jo Douglass
fuente
+1 Muy buena pregunta, ¡y es genial ver tanto entusiasmo! Creo que podrías precisar un poco tu pregunta, por lo que es más atractivo para que otros la lean y luego te den una respuesta.
Rubens
@Rubens Gracias! Lo volveré a trabajar cuando esté en casa esta noche, puedo ver dónde sería útil incluir más información sobre cómo he llegado a este punto y por qué. Me preocupaba que fuera demasiado tiempo, pero separaré el fondo y haré preguntas un poco más para evitar que se vuelva ilegible.
Jo Douglass
Puede que no sea una pregunta de "estadísticas puras" pero necesita una respuesta de estadísticas puras. Lucharás hasta que puedas pensarlo en términos estadísticos puros.
Spacedman
@Spacedman: agradezco las respuestas de cualquier manera que la gente sienta que es la mejor manera de responderlas, con la advertencia de que podría tener más preguntas si la respuesta tiene muchas fórmulas o referencias a conceptos estadísticos que aún no entiendo.
Jo Douglass
Jo, ¿encontraste la respuesta correcta para tu pregunta? Estoy en la misma situación y necesito ayuda. Gracias
LSola

Respuestas:

14

Después de leer su pregunta, sentí curiosidad por el tema de la agrupación de series temporales y la deformación dinámica del tiempo (DTW) . Entonces, realicé una búsqueda limitada y obtuve una comprensión básica (para mí) y el siguiente conjunto de referencias relevantes de la OMI (para usted). Espero que lo encuentre útil, pero tenga en cuenta que he omitido intencionalmente trabajos de investigación, ya que estaba más interesado en aspectos prácticos del tema.

Recursos:

Aleksandr Blekh
fuente
1
Algunos de estos son recursos que he estado analizando, he implementado una versión modificada del trabajo en los puntos 2 y 4, por ejemplo, por lo que probablemente ahora estamos en la misma página. Y la gran mayoría de lo que sé se basa en los documentos o artículos de Eamonn Keogh basados ​​en ellos. Pero hay algunos aquí que no había leído, y el que trata sobre la agrupación de series temporales de bicicletas compartidas es interesante, ¡gracias! No veo nada que responda específicamente a mi pregunta, pero sí lo señalo si me he perdido algo mientras leía.
Jo Douglass
1
Además, si todavía te parece interesante, vale la pena leer los documentos de Keogh. Son sorprendentemente fáciles de leer y bastante prácticos dado el enfoque en usar muchos conjuntos de datos y proporcionar suficiente información para que alguien pueda recrear todos los experimentos. El más reciente es interesante, y es por lo que estaba trabajando cuando me vi apartado por mi pregunta. cs.ucr.edu/~eamonn/selected_publications.htm
Jo Douglass
1
@JoDouglass: ¡De nada! No tenía la intención de responder a su pregunta directamente (debido a mi conocimiento limitado del tema), pero esperaba que fuera útil, lo que parece ser el caso. Gracias por los buenos comentarios y la referencia. Examinaré los documentos e intentaré tener una mejor idea. Hay mucho que aprender, es un poco abrumador.
Aleksandr Blekh
1
Abrumador es correcto, ¡me estaba pateando por elegir este tema por un tiempo! Sin embargo, siento que estoy llegando allí, y ha sido realmente interesante conocerlo. Tengo varias cosas en funcionamiento como una especie de versiones aproximadas de lo que necesito hacer, y creo que ahora se trata más de descubrir cómo procesar mis datos antes de ejecutarlos en mis modelos. Ese enlace para compartir bicicletas es interesante para mí, ya que es el primero que he visto sobre el promedio de series de tiempo desde que leí el reciente artículo de Keogh que mencioné.
Jo Douglass
1
@JoDouglass: Cuando dije "abrumador", me refería a todo el dominio de la ciencia de datos (incluyendo AI / ML y estadísticas, específicamente). Estoy todavía encontrar un recurso , el cual presenta un alto nivel de discusión de los diversos enfoques y / o métodos como temas , integrados en un amplio , sin embargo, parsimoniosa , marco .
Aleksandr Blekh
4

Si solo desea extraer patrones estacionales, busque autocorrelación . Si está buscando un modelo que pueda aprender patrones estacionales y hacer pronósticos a partir de él, entonces Holt-Winters es un buen comienzo, y ARIMA sería un buen seguimiento. Aquí [pdf] es el tutorial que me hizo despegar.

TheGrimmCientífico
fuente
El trabajo es (por ahora) académico, más que puramente práctico. Puedo hacer algunos pronósticos muy tarde o en el futuro, pero estoy más interesado en explorar los datos del pasado por ahora. La agrupación es un objetivo en sí mismo, así como algunas ideas que quiero explorar más allá de ese punto.
Jo Douglass
Lo sentimos, pulsa enter prematuramente. Investigué la autocorrelación hasta cierto punto y la ejecuté en un subconjunto de mis datos hace un tiempo, pero no estaba realmente claro qué podía obtener de ella. Los datos son bastante ruidosos. Los patrones de estacionalidad a veces son bastante obvios en la visualización, pero inexactos en sus tiempos, por lo que puedo estar buscando patrones similares pero no en un horario agradable y uniforme. Me dijeron que la autocorrelación podría ser problemática en tales datos, pero me alegra tener otra mirada si hay algún valor. No solo quiero encontrar la estacionalidad, pero entenderlo es un objetivo.
Jo Douglass
Trabaje en ese tutorial al menos hasta 2.5 inclusive. Utiliza R, que es especialmente bueno para su entorno académico. Le enseñará la autocorrelación que suena exactamente como lo que está buscando (no puedo decir si no encajaba porque no sabía lo que estaba mirando o si los datos son realmente demasiado ruidosos). Si el problema es el ruido, el suavizado exponencial es una forma de ayudar con eso, que se enseñará como parte del modelo holt-winters. Incluso si todo eso no te da la respuesta, sin duda hará que tu próximo paso sea más claro.
TheGrimmScientist
Leí el tutorial, pero en su mayoría se trata de cosas que ya sé. De hecho, estoy trabajando en Python y estoy demasiado lejos para cambiar a R, aunque tengo la intención de tomar rpy en algún momento en caso de que haya algunas cosas que no pueda encontrar en ninguna biblioteca de Python. He reescrito mi pregunta en caso de que ayude a alguien, como digo, el agrupamiento es un objetivo en sí mismo, no estoy buscando una dirección completamente diferente. Me temo que el tutorial no lo hace. Realmente respondo mi pregunta.
Jo Douglass