Cómo predecir una serie temporal de otra serie temporal, si están relacionadas


14

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.


55
Una forma de facilitar la construcción de su modelo es utilizar coordenadas polares en lugar de cartesianas. Si establece el origen igual al barco enemigo, y tiene el barco mirando hacia el norte siempre, entonces podría decir algo así como la posición del submarino en el momento es ( r ( t j ) , θ ( t j ) ) con r siendo distancia y θ siendo ángulo. Ahora esperamos | θ | ser pequeño porque el submarino suele estar delante del barco, y r debe ser pequeño pero no cercano a cero (de lo contrario, el submarino choca contra el barco). Tu también tienestj(r(tj),θ(tj))rθ|θ|r creciendo para barcos que se detienen. r
probabilistico

2
Iba a sugerir algo similar a la lógica de probabilidad: necesita una variable que sea la distancia entre el barco y el submarino. Lo bueno de las coordenadas polares es que esta información, así como la direccionalidad, también están incluidas. Entonces puede intentar una regresión lineal en esta nueva variable.
aprendiz

Gracias por las sugerencias Una cosa por la que estoy luchando con las coordenadas polares es que si trato de predecir la variable de ángulo, "gira" de modo que 0 == 360, lo que no tiene sentido en un punto de vista de predicción. ¿Alguna sugerencia sobre cómo lidiar con eso?
Cargoship y Submarino

@probabilityislogic Después de pensar un poco más en esto, ¿tendría sentido usar coordenadas polares pero usar el sin (theta) en lugar de theta como la variable para predecir? Aunque entonces se comportaría más como un delta_y.
Cargoship and Submarine

Con respecto al uso de coordenadas polares, es posible que desee leer sobre estadísticas direccionales .
steadyfish

Respuestas:


3

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

xsub(t),ysub(t)

xship(t),yship(t)

las coordenadas del submarino y el barco en el tiempo , y definen la "serie de distancia" port

xdist(t)=xship(t)xsub(t)

ydist(t)=yship(t)ysub(t)

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

xdist(t)=100±10wiggle(t)

wiggle

xywiggleμσxdist

xdist(t)=μ+σWx(t)

Wx(t)xdist

Otra estrategia que las personas emplean (que creo que funcionará para usted) es dividir sus series en

Polynomial base + Cyclic pattern + Bounded randomness

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é:

  1. DTREG (licencia de evaluación de 30 días)
  2. Algoritmo de serie temporal de Microsoft que forma parte de su producto SQL Server. Actualmente estoy usando su edición de evaluación de 180 días, es fácil de usar.

Aquí hay una captura de pantalla de la herramienta SQL Server (la parte punteada es la predicción):

ingrese la descripción de la imagen aquí

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.


Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.