Similitud estadística de series temporales.

15

Supongamos que uno tiene una serie de tiempo a partir de la cual se pueden tomar varias medidas, como período, máximo, mínimo, promedio, etc. y luego usarlas para crear una onda sinusoidal modelo con los mismos atributos, ¿hay algún enfoque estadístico que se pueda usar que pueda cuantificar? ¿Cuán cerca se ajustan los datos reales al modelo asumido? El número de puntos de datos en la serie oscilaría entre 10 y 50 puntos.

Un primer pensamiento muy simplista mío fue atribuir un valor al movimiento direccional de la onda sinusoidal, es decir, +1 +1 +1 +1 -1 -1 -1 -1 -1 -1 -1 -1 +1 +1 +1 +1, haga lo mismo con los datos reales, y luego cuantifique de alguna manera el grado de similitud del movimiento direccional.

Editar: Después de pensar más en lo que realmente quiero hacer con mis datos, y a la luz de las respuestas a mi pregunta original, lo que necesito es un algoritmo de toma de decisiones para elegir entre supuestos competitivos: a saber, que mis datos son básicamente lineales (o tendencia) con ruido que posiblemente podría tener elementos cíclicos; mis datos son básicamente cíclicos sin tendencia direccional para hablar; los datos son esencialmente solo ruido; o está en transición entre cualquiera de estos estados.

Mis pensamientos ahora son tal vez combinar alguna forma de análisis bayesiano y métrica euclidiana / LMS. Los pasos en este enfoque serían

Crear la onda sinusoidal supuesta a partir de mediciones de datos

Ajustar una línea recta LMS a los datos

Derive una métrica Euclidiana o LMS para las desviaciones de los datos originales para cada uno de los anteriores

Cree un previo bayesiano para cada uno basado en esta métrica, es decir, el 60% de las salidas combinadas se unen a una, el 40% a la otra, por lo tanto, favorecen el 40%

deslice una ventana un punto de datos a lo largo de los datos y repita lo anterior para obtener un nuevo% de métricas para este conjunto de datos ligeramente cambiado - esta es la nueva evidencia - haga el análisis bayesiano para crear un posterior y cambiar las probabilidades que favorecen cada suposición

repita a lo largo de todo el conjunto de datos (más de 3000 puntos de datos) con esta ventana deslizante (longitud de ventana de 10-50 puntos de datos). La esperanza / intención es identificar la suposición predominante / favorecida en cualquier punto del conjunto de datos y cómo esto cambia con el tiempo

Cualquier comentario sobre esta metodología potencial sería bienvenido, particularmente sobre cómo podría realmente implementar la parte del análisis bayesiano.

lector de babelproof
fuente

Respuestas:

7

La distancia euclidiana es una métrica común en el aprendizaje automático. Las siguientes diapositivas proporcionan una buena visión general de esta área junto con referencias:

Consulte también las referencias en la página de referencias de Keogh para la clasificación de series temporales:

ars
fuente
5

Si tiene un modelo específico con el que desea comparar: recomendaría Mínimos cuadrados como una métrica para minimizar y calificar los posibles valores de los parámetros con respecto a un conjunto de datos específico. Básicamente, todo lo que tiene que hacer es conectar sus estimaciones de parámetros, usarlas para generar valores pronosticados y calcular la desviación cuadrática promedio de los valores verdaderos.

Sin embargo, podría considerar cambiar ligeramente su pregunta: "¿Qué modelo se ajustaría mejor a mis datos?" En cuyo caso sugeriría hacer una suposición de un término de error normalmente distribuido ~ algo que uno podría argumentar es similar a la suposición de mínimos cuadrados. Luego, dependiendo de su elección de modelo, puede suponer cómo cree que se distribuyen los otros parámetros del modelo (asignar un previo Bayesiano) y usar algo como el paquete MCMC de R para muestrear a partir de la distribución de los parámetros. Luego, puede observar las medias y variaciones posteriores para tener una idea de qué modelo tiene el mejor ajuste.

M. Tibbits
fuente
Si tengo dos modelos posibles para ajustar a mis datos, la onda sinusoidal como se describe en mi pregunta original y un ajuste de línea recta LMS, ¿podría simplemente comparar la desviación cuadrática promedio de los valores de datos verdaderos de la onda sinusoidal con los residuos de la ¿Línea de ajuste LMS y luego elegir el modelo con el valor general más bajo sobre la base de que este modelo exhibe un ajuste más preciso a los datos? Si es así, ¿también sería válido dividir los datos en mitades y hacer lo mismo con cada mitad por separado, usando los mismos ajustes de onda sinusoidal / LMS para ver cómo cada modelo puede mejorar / empeorar con el tiempo?
babelproofreader
No estoy seguro. Mi sugerencia era usar una métrica de mínimos cuadrados, pero no estaba diciendo que ejecutara una regresión lineal. Puede consultar Regresión periódica .
M. Tibbits
En cuanto a su otra pregunta, ¿podría reducir los datos a la mitad? Sería muy cauteloso al hacerlo, porque eso duplicaría la frecuencia mínima que podría considerar. Creo que puede terminar necesitando mirar los coeficientes de Fourier (¿tomar un FFT o un DCT y retroceder en ellos?!? - No estoy seguro ). O tal vez una regresión periódica como se mencionó anteriormente.
M. Tibbits
3

Su "primer pensamiento simplista" de representar cualitativamente solo el movimiento direccional es similar en espíritu al algoritmo SAX de Keogh para comparar series de tiempo. Te recomiendo que lo eches un vistazo: Eamonn Keogh y Jessica Lin: SAX .

Desde su edición, parece que ahora está pensando en abordar el problema de manera diferente, pero es posible que SAX proporcione una pieza del rompecabezas.

Tampón irlandés
fuente
0

Si bien llego un poco tarde a la fiesta, si estás pensando en algo sinusoidal, las transformaciones wavelet son una buena herramienta para tener en tu bolsillo también. En teoría, puede usar transformaciones wavelet para descomponer una secuencia en varias "partes" (p. Ej., Ondas de diferentes formas / frecuencias, componentes no ondulados como tendencias, etc.). Una forma específica de transformación de onda que se utiliza en una tonelada es la transformación de Fourier, pero hay mucho trabajo en esta área. Me encantaría poder recomendar un paquete actual, pero no he hecho el trabajo de análisis de señales en bastante tiempo. Sin embargo, recuerdo algunos paquetes de Matlab que admiten la funcionalidad en este sentido.

Otra dirección a seguir si solo está tratando de encontrar tendencias en los datos cíclicos es algo como la prueba de tendencia de Mann-Kendall. Se usa mucho para cosas como detectar cambios en el clima o la calidad del agua, que tiene fuertes influencias estacionales. No tiene las características de algunos enfoques más avanzados, pero como es una prueba estadística veterana, es bastante fácil de interpretar e informar.

Namey
fuente