¿Hay algún algoritmo documentado para separar secciones de un conjunto de datos dado en diferentes curvas de mejor ajuste?
Por ejemplo, la mayoría de los humanos que miran este cuadro de datos lo dividirían fácilmente en 3 partes: un segmento sinusoidal, un segmento lineal y el segmento exponencial inverso. De hecho, hice este en particular con una onda sinusoidal, una línea y una fórmula exponencial simple.
¿Existen algoritmos existentes para encontrar partes como esa, que luego pueden ajustarse por separado a varias curvas / líneas para hacer una especie de serie compuesta de los mejores ajustes de subconjuntos de datos?
Tenga en cuenta que aunque el ejemplo tiene los extremos de los segmentos bastante alineados, este no será necesariamente el caso; También puede haber una sacudida repentina en los valores en un corte de segmento. Quizás esos casos serán más fáciles de detectar.
Actualización: Aquí hay una imagen de un poco de datos del mundo real:
Actualización 2: aquí hay un conjunto inusualmente pequeño de datos del mundo real (solo 509 puntos de datos):
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
Aquí está, trazado, con el appoximate posición de algunos conocidos elemento del mundo real bordes marcados con líneas de puntos, un lujo que normalmente no tendremos:
Sin embargo, un lujo que tenemos es la retrospectiva: los datos en mi caso no son una serie temporal, sino que están relacionados espacialmente; solo tiene sentido analizar un conjunto de datos completo (generalmente 5000 - 15000 puntos de datos) a la vez, no de manera continua.
fuente
Respuestas:
Mi interpretación de la pregunta es que el OP está buscando metodologías que se ajusten a la (s) forma (s) de los ejemplos proporcionados, no a los residuos HAC. Además, se desean rutinas automatizadas que no requieran una intervención humana o analista significativa. Box-Jenkins puede no ser apropiado, a pesar de su énfasis en este hilo, ya que requieren una participación sustancial de los analistas.
Existen módulos R para este tipo de coincidencia de patrones sin momento. La agrupación de distribución de permutación es una técnica de coincidencia de patrones desarrollada por un científico del Instituto Max Planck que cumple con los criterios que usted ha descrito. Su aplicación es para datos de series temporales, pero no se limita a eso. Aquí hay una cita para el módulo R que se ha desarrollado:
pdc: un paquete R para la agrupación de series de tiempo basadas en la complejidad por Andreas Brandmaier
Además de PDC, está la rutina de aprendizaje automático, iSax desarrollada por Eamon Keogh en UC Irvine, que también vale la pena comparar.
Finalmente, está este documento sobre Destrucción de datos: descubrir el orden de acecho en los datospor Chattopadhyay y Lipson. Más allá del título inteligente, hay un propósito serio en el trabajo. Aquí está el resumen: "Desde el reconocimiento de voz automático hasta el descubrimiento de estrellas inusuales, la capacidad subyacente de casi todas las tareas de descubrimiento automatizadas es la capacidad de comparar y contrastar flujos de datos entre sí, para identificar conexiones y detectar valores atípicos. A pesar de la prevalencia de datos, los métodos automatizados no están manteniendo el ritmo. Un cuello de botella clave es que la mayoría de los algoritmos de comparación de datos de hoy dependen de un experto humano para especificar qué 'características' de los datos son relevantes para la comparación. Aquí, proponemos un nuevo principio para estimar la similitud entre las fuentes de arbitrariedad flujos de datos, sin utilizar el dominio del conocimiento ni el aprendizaje. Demostramos la aplicación de este principio al análisis de datos de una serie de problemas desafiantes del mundo real, incluyendo la desambiguación de patrones electroencefalográficos relacionados con ataques epilépticos, detección de actividad cardíaca anómala a partir de grabaciones de sonido cardíaco y clasificación de objetos astronómicos a partir de fotometría en bruto. En todos estos casos y sin acceso a ningún conocimiento de dominio, demostramos el rendimiento a la par con la precisión lograda por algoritmos especializados y heurística ideados por expertos en dominio. Sugerimos que los principios de destrucción de datos pueden abrir la puerta para comprender observaciones cada vez más complejas, especialmente cuando los expertos no saben qué buscar ". En todos estos casos y sin acceso a ningún conocimiento de dominio, demostramos el rendimiento a la par con la precisión lograda por algoritmos especializados y heurística ideados por expertos en dominio. Sugerimos que los principios de destrucción de datos pueden abrir la puerta para comprender observaciones cada vez más complejas, especialmente cuando los expertos no saben qué buscar ". En todos estos casos y sin acceso a ningún conocimiento de dominio, demostramos el rendimiento a la par con la precisión lograda por algoritmos especializados y heurística ideados por expertos en dominio. Sugerimos que los principios de destrucción de datos pueden abrir la puerta para comprender observaciones cada vez más complejas, especialmente cuando los expertos no saben qué buscar ".
Este enfoque va mucho más allá del ajuste curvilíneo. Vale la pena echarle un vistazo.
fuente
La detección de puntos de cambio en una serie temporal requiere la construcción de un modelo ARIMA global robusto (ciertamente defectuoso por los cambios del modelo y los cambios de parámetros con el tiempo en su caso) y luego identificar el punto de cambio más significativo en los parámetros de ese modelo. Usando sus valores 509, el punto de cambio más significativo fue alrededor del período 353. Utilicé algunos algoritmos patentados disponibles en AUTOBOX (que he ayudado a desarrollar) que posiblemente podrían tener licencia para su aplicación personalizada. La idea básica es separar los datos en dos partes y, al encontrar el punto de cambio más importante, volver a analizar cada uno de los dos intervalos de tiempo por separado (1-352; 353-509) para determinar más puntos de cambio dentro de cada uno de los dos conjuntos. Esto se repite hasta que tenga k subconjuntos. He adjuntado el primer paso con este enfoque.
fuente
Creo que el título del hilo es engañoso: no está buscando comparar funciones de densidad, pero en realidad está buscando interrupciones estructurales en una serie de tiempo. Sin embargo, no especifica si se supone que estas rupturas estructurales se encuentran en una ventana de tiempo variable o en retrospectiva al observar el historial total de la serie temporal. En este sentido, su pregunta es en realidad un duplicado de esto: ¿Qué método para detectar rupturas estructurales en series temporales?
Como mencionó Rob Hyndman en este enlace, R ofrece el paquete strucchange para este propósito. Jugué con sus datos, pero debo decir que los resultados son decepcionantes [¿el primer punto de datos es realmente 4 o se supone que es 54?]:
No soy un usuario habitual del paquete. Como puede ver, depende del modelo que se ajuste a los datos. Puedes experimentar con
que le da el mejor modelo ARIMA.
fuente