11 votos

Encontrando el punto GPS promedio

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

En la práctica ocurre 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 el activo incorrecto en una ubicación completamente diferente.
  • Cada punto GPS tiene un peso de certeza (HDOP) que indica qué tan precisa es la data GPS actual. Se prefieren los puntos GPS con mejores valores de HDOP sobre los más bajos.

¿Cómo determino lo siguiente:

  • Manejar data con 2 valores vs. un solo valor como la edad. (Encontrar la edad promedio en una población de personas)
  • Determinar los valores atípicos. En el ejemplo a continuación, estos serían [-28.252, 25.018] y [-28.632, 25.219]
  • Después de excluir los valores atípicos, encontrar el punto GPS promedio en esto podría ser [-28.389, 25.245].
  • Sería un bono si pudiera trabajar con el "peso" proporcionado por el valor HDOP para cada punto.

alt text

1 votos

Esta respuesta es lo suficientemente similar como para ayudarte con el promedio de los puntos, stats.stackexchange.com/questions/2493/…, es fácil incorporar pesos en ese marco. Creo que podrías usar algunas heurísticas simples para identificar valores atípicos, pero eso no te impide adoptar un enfoque más empírico como sugirió Stephan.

8voto

Berek Bryan Puntos 349

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

  1. Calcular el centroide (sin ponderar) de los puntos de datos, es decir, la media (sin ponderar) de las 2 coordenadas
  2. Calcular la distancia euclidiana de todas las lecturas desde el centroide
  3. Excluir cualquier lectura que esté más allá de cierta distancia (por determinar según su experiencia y conocimiento de la tecnología, o en su defecto un poco de prueba y error validación cruzada - ¿100m, 1km, 10km??)
  4. Calcular el promedio ponderado de ambas coordenadas de los puntos restantes, ponderando por el inverso de la puntuación de HDOP (o alguna función monótona de la misma - eché un vistazo rápido a la página de wikipedia enlazada en la pregunta y creo que tal vez no necesites esa función pero necesitaría estudiarla más para estar seguro)

Claramente hay varias formas de hacer esto más sofisticado, como disminuir el peso de los valores atípicos o usar estimadores M en lugar de simplemente excluirlos, pero no estoy seguro de si tal sofisticación es realmente necesaria aquí.

3voto

icelava Puntos 548

Rob Hyndman recientemente planteó una pregunta sobre cómo detectar valores atípicos en datos multivariados. Las respuestas pueden proporcionar un par de posibles enfoques (y de lo contrario, es posible que desees plantear la pregunta sobre cómo encontrar valores atípicos en 2 dimensiones en una pregunta separada).

Y puedes promediar tus datos de GPS restantes componente por componente: suma todos los primeros componentes y divídelos por el número de puntos, eso te dará el primer componente del promedio. Lo mismo con los segundos componentes.

Este promedio puede ser ponderado por HDOP. Suma los productos del primer componente, multiplicado por la puntuación HDOP correspondiente, y divide la suma por la suma de las puntuaciones HDOP. Lo mismo con los segundos componentes.

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

0 votos

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

2voto

Llame al HDOP la variable independiente. Úsela para ponderar más adelante. Así que 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)] / [suma(h1,h2,...,hn)] donde h1, h2,... es el valor de HDOP. Haga lo mismo para las coordenadas y. Esto le dará un valor promedio bastante preciso para cada coordenada.

Tratar con valores atípicos puede ser un poco complicado. ¿Cómo saber si son valores atípicos o no? Estrictamente necesita determinar un ajuste estadístico a las observaciones y dentro de un intervalo de confianza determinar si son genuinos o no. Al mirar la pregunta, la Distribución de Poisson viene a la mente. Pero esto probablemente es mucho trabajo y estoy seguro de que no quiere meterse en esto. ¿Quizás usar una aproximación? Digamos que asume que el valor medio de la coordenada es una buena media para usar. Luego determine un valor para la desviación estándar. Creo que la desviación estándar de la distribución de Poisson es 1/(media). Luego aproxime usando la distribución normal y un intervalo de confianza del 95%. Diga que si una observación está fuera del intervalo (media-1.645*desv estándar ; media + 1.645*desv estándar) entonces es un valor atípico. Inténtelo. ¡Quizás haga un poco de lectura sobre la distribución de Poisson e incorpore el valor de HDOP en esto!

i-Ciencias.com

I-Ciencias es una comunidad de estudiantes y amantes de la ciencia en la que puedes resolver tus problemas y dudas.
Puedes consultar las preguntas de otros usuarios, hacer tus propias preguntas o resolver las de los demás.

Powered by:

X