Ermitteln des durchschnittlichen GPS-Punkts

11

Ich muss ein Programm schreiben, um den durchschnittlichen GPS-Punkt aus einer Population von Punkten zu ermitteln.

In der Praxis passiert Folgendes:

  • Jeden Monat zeichnet eine Person einen GPS-Punkt desselben statischen Assets auf.
  • Aufgrund der Art des GPS unterscheiden sich diese Punkte jeden Monat geringfügig.
  • Manchmal macht die Person einen Fehler und zeichnet den falschen Test an einem völlig anderen Ort auf.
  • Jeder GPS-Punkt hat ein Sicherheitsgewicht ( HDOP ), das angibt, wie genau die aktuellen GPS-Daten sind. GPS-Punkte mit besseren HDOP-Werten werden niedrigeren vorgezogen.

Wie bestimme ich Folgendes:

  • Behandeln Sie Daten mit 2 Werten gegenüber einem einzelnen Wert wie dem Alter. (Finden Sie das Durchschnittsalter in einer Bevölkerung von Menschen)
  • Bestimmen Sie die Ausreißer. Im folgenden Beispiel wären dies [-28,252, 25,018] und [-28,632, 25,219].
  • Nachdem Sie die Ausreißer ausgeschlossen haben, ermitteln Sie den durchschnittlichen GPS-Punkt darin [-28,389, 25,245].
  • Es wäre ein Bonus, wenn das vom HDOP-Wert für jeden Punkt bereitgestellte "Gewicht" berechnet werden könnte.

Alt-Text

Philip Fourie
quelle
1
Diese Antwort ist ähnlich genug, um Ihnen bei der Mittelung der Punkte zu helfen. Stats.stackexchange.com/questions/2493/… . Es ist einfach, Gewichte in dieses Framework zu integrieren. Ich würde denken, Sie könnten einige einfache Heuristiken verwenden, um Ausreißer zu identifizieren, aber das schließt Sie nicht aus, einen empirischeren Ansatz zu wählen, wie Stephan vorgeschlagen hat.
Andy W

Antworten:

8

Eines der Probleme mit multivariaten Daten besteht darin, eine geeignete Metrik für die Berechnung von Entfernungen festzulegen und diese dann zu interpretieren. Dies sind clevere, aber etwas schwer zu erklärende Konzepte wie die Mahalanobis-Entfernung. Aber in diesem Fall liegt die Wahl sicherlich auf der Hand - die euklidische Distanz . Ich würde einen einfachen heuristischen Algorithmus vorschlagen, wie zum Beispiel:

  1. Berechnen Sie den (ungewichteten) Schwerpunkt der Datenpunkte, dh das (ungewichtete) Mittel der beiden Koordinaten
  2. Berechnen Sie den euklidischen Abstand aller Messwerte vom Schwerpunkt
  3. Schließen Sie alle Messwerte aus, die weiter als bis zu einer bestimmten Entfernung liegen (die anhand Ihrer Erfahrung und Ihres Wissens über die Technologie ermittelt werden müssen, oder scheitern Sie an einer Kreuzvalidierung mit Versuch und Irrtum - 100 m, 1 km, 10 km ??).
  4. Berechnen Sie den gewichteten Durchschnitt beider Koordinaten der verbleibenden Punkte, gewichtet mit der Umkehrung des HDOP-Scores (oder einer monotonen Funktion davon - ich habe einen kurzen Blick auf die in der Frage verlinkte Wikipedia-Seite geworfen und denke, dass Sie solche möglicherweise nicht benötigen eine Funktion, aber ich müsste sie weiter studieren, um sicher zu sein)

Es gibt eindeutig mehrere Möglichkeiten, dies zu verfeinern, z. B. Auswärtsgewichtung von Ausreißern oder Verwendung von M-Schätzern, anstatt sie einfach auszuschließen, aber ich bin mir nicht sicher, ob eine solche Raffinesse hier wirklich notwendig ist.

ein Stop
quelle
3

Rob Hyndman hat kürzlich eine Frage zum Erkennen von Ausreißern in multivariaten Daten gestellt . Die Antworten bieten möglicherweise einige mögliche Ansätze (und andernfalls möchten Sie die Frage nach der Suche nach 2D-Ausreißern möglicherweise in einer separaten Frage zusammenfassen).

Und Sie können Ihre verbleibenden GPS-Daten Komponente für Komponente mitteln - addieren Sie alle ersten Komponenten und dividieren Sie sie durch die Anzahl der Punkte, um die erste Komponente des Durchschnitts zu erhalten. Gleiches gilt für die zweiten Komponenten.

Diese Mittelung kann mit HDOP gewichtet werden. Summieren Sie die Produkte der ersten Komponente, multipliziert mit der entsprechenden HDOP-Bewertung, und dividieren Sie die Summe durch die Summe der HDOP-Bewertungen. Gleiches gilt für die zweiten Komponenten.

Ich werde mir erlauben, das "Normalverteilungs" -Tag zu entfernen ...

Stephan Kolassa
quelle
Vielen Dank an @Stephan Kolassa, dies wird bereits dazu beitragen, eine Lösung zu finden.
Philip Fourie
2

Nennen Sie das HDOP die unabhängige Variable. Verwenden Sie dies später zur Gewichtung. Sie haben also Koordinatensätze - nennen Sie dies (x1, y1); (x2, y2) usw. Ignorieren Sie zuerst Ausreißer. Berechnen Sie die gewichteten Mittelwerte der x-Koordinaten als [(x1 * h1) + (x2 * h2) + .... + (xn * hn)] / [Summe (h1, h2, ..., hn)] Dabei ist h1, h2, ... der HDOP-Wert. Machen Sie dasselbe für die y-Koordinaten. Dies ergibt einen ziemlich genauen Durchschnittswert für jede Koordinate.

Der Umgang mit Ausreißern kann etwas schwierig sein. Woher wissen Sie, ob es sich um Ausreißer handelt oder nicht? Streng genommen müssen Sie eine statistische Anpassung an die Beobachtungen ermitteln und innerhalb eines Konfidenzintervalls feststellen, ob sie echt sind oder nicht. Bei der Betrachtung der Frage fällt mir die Giftverteilung ein. Aber das ist wahrscheinlich eine Menge Arbeit und ich bin sicher, dass Sie nicht darauf eingehen wollen. Vielleicht eine Annäherung verwenden? Angenommen, Sie gehen davon aus, dass der durchschnittliche Koordinatenwert ein gutes Mittel zur Verwendung ist. Bestimmen Sie dann einen Wert für die Standardabweichung. Ich denke, der Standardentwickler oder die Giftverteilung ist 1 / (Mittelwert). Dann approximieren Sie mit der Normalverteilung und einem 95% -Konfidenzintervall. Sagen wir, wenn eine Beobachtung außerhalb des Intervalls liegt (Mittelwert * 1,645 * Standardabweichung; Mittelwert + 1,645 * Standardabweichung), dann ist sie ein Ausreißer? Probieren Sie es aus.


quelle