Encontrar el punto GPS promedio

11

Necesito escribir un programa para encontrar el punto GPS promedio de una población de puntos.

En la práctica sucede lo siguiente:

  • Cada mes, una persona registra un punto GPS del mismo activo estático.
  • Debido a la naturaleza del GPS, estos puntos difieren ligeramente cada mes.
  • A veces, la persona comete un error y registra la evaluación incorrecta en un lugar completamente diferente.
  • Cada punto GPS tiene un peso de certeza ( HDOP ) que indica cuán precisos son los datos GPS actuales. Los puntos GPS con mejores valores de HDOP son preferibles a los más bajos.

¿Cómo determino lo siguiente?

  • Tratar con datos con 2 valores frente a un solo valor como la edad. (Encuentre la edad promedio en una población de personas)
  • Determinar los valores atípicos. En el siguiente ejemplo, estos serían [-28.252, 25.018] y [-28.632, 25.219]
  • Después de excluir los valores atípicos, encuentre el punto GPS promedio en esto, podría ser [-28.389, 25.245].
  • Sería una ventaja si puede trabajar el "peso" proporcionado por el valor HDOP para cada punto.

texto alternativo

Philip Fourie
fuente
1
Esta respuesta es lo suficientemente similar para ayudarlo a promediar los puntos, stats.stackexchange.com/questions/2493/… , es simple incorporar pesos en ese marco. Creo que podría usar algunas heurísticas simples para identificar valores atípicos, pero eso no le impide adoptar un enfoque más empírico, como sugirió Stephan.
Andy W

Respuestas:

8

Uno de los problemas con los datos multivariados es decidir y luego interpretar una métrica adecuada para calcular distancias, por lo tanto, conceptos inteligentes pero algo difíciles de explicar, como la distancia de Mahalanobis. Pero en este caso seguramente la elección es obvia: la distancia euclidiana . Sugeriría un algoritmo heurístico simple como:

  1. Calcule el centroide (no ponderado) de los puntos de datos, es decir, la media (no ponderada) de las 2 coordenadas
  2. Calcule la distancia euclidiana de todas las lecturas del centroide
  3. Excluya cualquier lectura que esté más allá de una cierta distancia (se determinará en función de su experiencia y conocimiento de la tecnología, o si falla un poco de validación cruzada de prueba y error : 100 m, 1 km, 10 km ??)
  4. Calcule el promedio ponderado de ambas coordenadas de los puntos restantes, ponderando por el inverso de la puntuación HDOP (o alguna función monótona de la misma; eché un vistazo rápido a la página de Wikipedia vinculada en la pregunta y creo que tal vez no necesite tal una función pero necesitaría estudiarla más para estar seguro)

Claramente, hay varias formas de hacer que esto sea más sofisticado, como la disminución de los valores atípicos o el uso de estimadores M en lugar de simplemente excluirlos, pero no estoy seguro de si esa sofisticación es realmente necesaria aquí.

una parada
fuente
3

Rob Hyndman recientemente planteó una pregunta sobre la detección de valores atípicos en datos multivariados . Las respuestas pueden proporcionar un par de posibles enfoques (y de lo contrario, es posible que desee plantear la cuestión de encontrar valores atípicos en 2-d en una pregunta separada).

Y puede promediar el componente de datos GPS restante por componente: agregue todos los primeros componentes y divídalos por el número de puntos, lo que le dará el primer componente del promedio. Lo mismo con los segundos componentes.

Este promedio puede ser ponderado por HDOP. Resuma los productos del primer componente, multiplíquelos con el puntaje HDOP correspondiente, y divida la suma por la suma de los puntajes HDOP. Lo mismo con los segundos componentes.

Me tomaré la libertad de eliminar la etiqueta de "distribución normal" ...

Stephan Kolassa
fuente
Gracias @Stephan Kolassa, esto ya ayudará a encontrar una solución.
Philip Fourie
2

Llame al HDOP la variable independiente. Use esto para ponderar más adelante. Entonces tiene conjuntos de coordenadas - llame a esto (x1, y1); (x2, y2), etc ... Primero ignore los valores atípicos. Calcule los promedios ponderados de las coordenadas x como [(x1 * h1) + (x2 * h2) + .... + (xn * hn)] / [sum (h1, h2, ..., hn)] donde h1, h2, ... es el valor de HDOP. Haga lo mismo para las coordenadas y. Esto dará un valor promedio bastante preciso para cada coordenada.

Tratar con valores atípicos puede ser un poco complicado. ¿Cómo saber si son atípicos o no? Estrictamente, necesita determinar un ajuste estadístico a las observaciones y, dentro de un intervalo de confianza, determinar si son genuinas o no. Mirando la pregunta, me viene a la mente la Distribución de Veneno. Pero esto probablemente sea mucho trabajo y estoy seguro de que no quieres profundizar en esto. ¿Quizás usar una aproximación? Supongamos que asume que el valor de coordenadas promedio es un buen medio para usar. Luego determine un valor para la desviación estándar. Creo que el dev estándar o la distribución del veneno es 1 / (media). Luego aproximar usando la distribución normal y un intervalo de confianza del 95%. Digamos si una observación está fuera del intervalo (media- * 1.645 * std dev; media + 1.645 * std dev), entonces es un valor atípico? Dale una oportunidad.


fuente