He estado tratando de resolver este problema durante más de un año sin mucho progreso. Es parte de un proyecto de investigación que estoy haciendo, pero lo ilustraré con un ejemplo de historia que inventé, porque el dominio real del problema es un poco confuso (seguimiento ocular).
Usted es un avión que rastrea un barco enemigo que viaja a través del océano, por lo que ha recopilado una serie de coordenadas (x, y, tiempo) del barco. Usted sabe que un submarino oculto viaja con el barco para protegerlo, pero si bien existe una correlación entre sus posiciones, el submarino a menudo se aleja del barco, por lo que, aunque a menudo está cerca de él, también puede estar al otro lado del barco. mundo de vez en cuando. Desea predecir el camino del submarino, pero desafortunadamente está oculto para usted.
Pero un mes de abril notas que el submarino se olvida de esconderse, por lo que tienes una serie de coordenadas tanto para el submarino como para el barco a lo largo de 1,000 viajes. Con estos datos, le gustaría construir un modelo para predecir la trayectoria del submarino oculto dados solo los movimientos de la nave. La línea de base ingenua sería decir "posición del submarino conjetura =" posición actual del barco ", pero a partir de los datos de abril en los que el submarino era visible, se nota una tendencia de que el submarino esté un poco por delante del barco, así que" posición del submarino supongo que la posición del barco en 1 minuto "es una estimación aún mejor. Además, los datos de abril muestran que cuando el barco se detiene en el agua durante un período prolongado, es probable que el submarino esté muy lejos patrullando las aguas costeras. Hay otros patrones por supuesto.
¿Cómo construiría este modelo, dados los datos de abril como datos de entrenamiento, para predecir el camino del submarino? Mi solución actual es una regresión lineal ad-hoc donde los factores son "tiempo de viaje", "coordenada x del barco", "estuvo inactivo el barco durante 1 día", etc. y luego hacer que R calcule los pesos y realice una validación cruzada . Pero realmente me encantaría una forma de generar estos factores automáticamente a partir de los datos de abril. Además, un modelo que usa secuencia o tiempo sería bueno, ya que la regresión lineal no lo hace y creo que es relevante.
Gracias por leer todo esto y me complacería aclarar cualquier cosa.
fuente
Respuestas:
Aquí hay un enfoque que no utiliza ninguna información "contextual", es decir, no tiene en cuenta el hecho de que "un submarino está siguiendo a un barco". Por otro lado, es fácil comenzar con:
Denotamos por
las coordenadas del submarino y el barco en el tiempo , y definen la "serie de distancia" port
Mi sugerencia es que prediga cada uno de estos por separado (puede vincularlos más adelante).
Tomemos un momento para imaginar cómo son estos. Centrémonos en la coordenada , y digamos que el barco se está moviendo hacia la derecha con el siguiente sub detrás. Supongamos que el submarino está a unos 100 metros detrás del barco, con una desviación de unos 10 metros.x
Luego
Otra estrategia que las personas emplean (que creo que funcionará para usted) es dividir sus series en
En el caso de un submarino y un barco, la parte polinómica probablemente sería constante y la parte cíclica una suma de senos y cosenos (de las olas del océano ...). Este puede no ser el caso para el seguimiento ocular.
Existen herramientas que pueden resolver esto por usted. Aquí hay dos que sé:
Aquí hay una captura de pantalla de la herramienta SQL Server (la parte punteada es la predicción):
Un algoritmo que usan se llama ARIMA. Deseando aprender cómo funciona, busqué en Google y encontré este libro: Primer curso sobre series de tiempo (y no se preocupe, no necesita tener SAS para seguirlo. No lo hago). Es muy legible.
No tiene que saber cómo funciona ARIMA para usar estas herramientas, pero creo que siempre es más fácil si tiene contexto, ya que hay que establecer "parámetros de modelo", etc.
fuente