Trovare il punto GPS medio


11

Devo scrivere un programma per trovare il punto GPS medio da una popolazione di punti.

In pratica succede quanto segue:

  • Ogni mese una persona registra un punto GPS della stessa risorsa statica.
  • A causa della natura del GPS, questi punti differiscono leggermente ogni mese.
  • A volte la persona commette un errore e registra il test sbagliato in una posizione completamente diversa.
  • Ogni punto GPS ha un peso di certezza ( HDOP ) che indica l'accuratezza dei dati GPS correnti. I punti GPS con valori HDOP migliori sono preferiti a quelli inferiori.

Come posso determinare quanto segue:

  • Gestisci i dati con 2 valori rispetto a un singolo valore come l'età. (Trova l'età media in una popolazione di persone)
  • Determina i valori anomali. Nell'esempio che segue questi sarebbero [-28.252, 25.018] e [-28.632, 25.219]
  • Dopo aver escluso gli outlier, trova il punto GPS medio in questo potrebbe essere [-28.389, 25.245].
  • Sarebbe un vantaggio se potesse funzionare il "peso" fornito dal valore HDOP per ogni punto.

testo alternativo


1
Questa risposta è abbastanza simile per aiutarvi con la media dei punti, stats.stackexchange.com/questions/2493/… , è semplice incorporare pesi in quel quadro. Penserei che saresti in grado di usare alcune semplici euristiche per identificare i valori anomali, ma ciò non ti impedisce di adottare un approccio più empirico come suggerito da Stephan.
Andy W,

Risposte:


8

Uno dei problemi con i dati multivariati è decidere e quindi interpretare una metrica adatta per calcolare le distanze, quindi concetti intelligenti ma piuttosto difficili da spiegare come la distanza di Mahalanobis. Ma in questo caso sicuramente la scelta è ovvia: la distanza euclidea . Suggerirei un semplice algoritmo euristico qualcosa del tipo:

  1. Calcola il centroide (non ponderato) dei punti dati, ovvero la media (non ponderata) delle 2 coordinate
  2. Calcola la distanza euclidea di tutte le letture dal centroide
  3. Escludere eventuali letture oltre una certa distanza (da determinare in base alla propria esperienza e conoscenza della tecnologia, o in mancanza di un po 'di convalida incrociata di prova ed errore - 100m, 1km, 10km ??)
  4. Calcola la media ponderata di entrambi i coordini dei punti rimanenti, ponderando per l'inverso del punteggio HDOP (o qualche sua funzione monotonica - ho dato una rapida occhiata alla pagina di Wikipedia collegata nella domanda e penso che forse non hai bisogno di tale una funzione ma avrei bisogno di studiarla ulteriormente per essere sicuro)

Esistono chiaramente diversi modi per renderlo più sofisticato, come la riduzione del peso dei valori anomali o l'utilizzo di stimatori M piuttosto che semplicemente la loro esclusione, ma non sono sicuro se tale raffinatezza sia davvero necessaria qui.


3

Rob Hyndman ha recentemente posto una domanda sul rilevamento di valori anomali nei dati multivariati . Le risposte possono fornire un paio di possibili approcci (e in caso contrario, potresti voler porre la domanda di trovare valori anomali 2-d in una domanda separata).

E puoi calcolare la media del componente dati GPS rimanente per componente: aggiungi tutti i primi componenti e dividi per il numero di punti, che ti darà il primo componente della media. Lo stesso con i secondi componenti.

Questa media può essere ponderata dall'HDOP. Sommare i prodotti del primo componente, moltiplicati per il punteggio HDOP corrispondente e dividere la somma per la somma dei punteggi HDOP. Lo stesso con i secondi componenti.

Mi prenderò la libertà di rimuovere il tag "distribuzione normale" ...


Grazie @Stephan Kolassa, questo aiuterà già a trovare una soluzione.
Philip Fourie,

2

Chiamare l'HDOP la variabile indipendente. Usalo per la ponderazione in seguito. Quindi hai una serie di coordinate - chiama questo (x1, y1); (x2, y2), ecc ... Innanzitutto ignora i valori anomali. Calcola le medie ponderate delle coordinate x come [(x1 * h1) + (x2 * h2) + .... + (xn * hn)] / [sum (h1, h2, ..., hn)] dove h1, h2, ... è il valore HDOP. Fai lo stesso per le coordinate y. Ciò fornirà un valore medio abbastanza accurato per ciascuna coordinata.

Trattare con gli outlier può essere un po 'complicato. Come fai a sapere se sono anomali o no? È assolutamente necessario determinare un adattamento statistico alle osservazioni e, entro un intervallo di confidenza, determinare se sono autentiche o meno. Guardando alla domanda che viene in mente la Poison Distribution. Ma questo probabilmente richiede molto lavoro e sono sicuro che non vorrai approfondire. Forse usi un'approssimazione? Supponi di supporre che il valore medio delle coordinate sia un buon mezzo da usare. Quindi determinare un valore per la deviazione standard. Penso che lo sviluppatore standard o la distribuzione del veleno sia 1 / (media). Quindi approssimare usando la distribuzione normale e un intervallo di confidenza al 95%. Dire se un'osservazione è al di fuori dell'intervallo (media- * 1.645 * dev deviazione standard; media + 1.645 * dev deviazione standard) allora è un valore anomalo? Provalo.

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.