Menemukan titik GPS rata-rata


11

Saya perlu menulis sebuah program untuk menemukan titik GPS rata-rata dari populasi titik.

Dalam praktiknya hal berikut terjadi:

  • Setiap bulan seseorang merekam titik GPS dari aset statis yang sama.
  • Karena sifat GPS, titik-titik ini sedikit berbeda setiap bulan.
  • Kadang-kadang orang membuat kesalahan dan mencatat kesalahan yang salah di lokasi yang sama sekali berbeda.
  • Setiap titik GPS memiliki bobot kepastian ( HDOP ) yang menunjukkan seberapa akurat data GPS saat ini. Titik GPS dengan nilai HDOP yang lebih baik lebih disukai daripada yang lebih rendah ..

Bagaimana cara menentukan yang berikut:

  • Menangani data dengan 2 nilai vs. nilai tunggal seperti usia. (Temukan usia rata-rata dalam populasi orang)
  • Tentukan outlier. Dalam contoh di bawah ini adalah [-28.252, 25.018] dan [-28.632, 25.219]
  • Setelah mengecualikan outlier, temukan titik GPS rata-rata di sini mungkin [-28.389, 25.245].
  • Ini akan menjadi bonus jika dapat bekerja dengan "bobot" yang disediakan oleh nilai HDOP untuk setiap poin.

teks alternatif


1
Jawaban ini cukup mirip untuk membantu Anda dengan rata-rata poin, stats.stackexchange.com/questions/2493/… , mudah untuk memasukkan bobot dalam kerangka itu. Saya pikir Anda akan dapat menggunakan beberapa heuristik sederhana untuk mengidentifikasi outlier, tetapi itu tidak menghalangi Anda untuk mengambil pendekatan yang lebih empiris seperti yang disarankan Stephan.
Andy W

Jawaban:


8

Salah satu masalah dengan data multivariat adalah memutuskan, dan kemudian menafsirkan, metrik yang cocok untuk menghitung jarak, karenanya konsep yang cerdas tetapi agak sulit dijelaskan seperti jarak Mahalanobis. Tetapi dalam hal ini tentu pilihannya jelas - jarak Euclidean . Saya akan menyarankan algoritma heuristik sederhana seperti:

  1. Hitung centroid (tidak tertimbang) dari titik data, yaitu rata-rata (tidak tertimbang) dari 2 koordinat
  2. Hitung jarak Euclidean dari semua bacaan dari centroid
  3. Kecualikan pembacaan yang lebih jauh dari jarak tertentu (harus ditentukan berdasarkan pengalaman dan pengetahuan Anda tentang teknologi, atau gagal karena sedikit uji coba dan kesalahan cross-validation - 100m, 1km, 10km ??)
  4. Hitung rata-rata tertimbang dari kedua coord dari poin yang tersisa, pembobotan oleh kebalikan dari skor HDOP (atau beberapa fungsi monotonnya - saya melihat sekilas halaman wikipedia yang tertaut dalam pertanyaan dan berpikir mungkin Anda tidak memerlukannya sebuah fungsi tetapi saya harus mempelajarinya lebih lanjut untuk memastikan)

Jelas ada beberapa cara untuk membuat ini lebih canggih, seperti outlier yang mengurangi bobot atau menggunakan penaksir-M daripada hanya mengecualikannya, tapi saya tidak yakin apakah kecanggihan seperti itu benar-benar diperlukan di sini.


3

Rob Hyndman baru-baru ini mengajukan pertanyaan tentang mendeteksi outlier dalam data multivarian . Jawabannya dapat memberikan beberapa pendekatan yang mungkin (dan jika tidak, Anda mungkin ingin mengajukan pertanyaan untuk menemukan outlier 2-d dalam pertanyaan terpisah).

Dan Anda dapat membuat rata-rata komponen data GPS yang tersisa menurut komponen - tambahkan semua komponen pertama dan bagi dengan jumlah poin, yang akan memberi Anda komponen pertama dari rata-rata. Sama dengan komponen kedua.

Rata-rata ini dapat ditimbang oleh HDOP. Ringkas produk dari komponen pertama, dikalikan dengan skor HDOP yang sesuai, dan bagi jumlah dengan jumlah skor HDOP. Sama dengan komponen kedua.

Saya akan mengambil kebebasan untuk menghapus tag "distribusi normal" ...


Terima kasih @Stephan Kolassa, ini sudah akan membantu menemukan solusi.
Philip Fourie

2

Sebut HDOP variabel independen. Gunakan ini untuk pembobotan nanti. Jadi Anda memiliki set koordinat - sebut ini (x1, y1); (x2, y2), dll ... Pertama-tama abaikan outlier. Hitung rata-rata tertimbang dari koordinat x sebagai [(x1 * h1) + (x2 * h2) + .... + (xn * hn)] / [jumlah (h1, h2, ..., hn)] di mana h1, h2, ... adalah nilai HDOP. Lakukan hal yang sama untuk koordinat Anda. Ini akan memberikan nilai rata-rata yang cukup akurat untuk setiap koordinat.

Berurusan dengan outlier bisa sedikit rumit. Bagaimana Anda tahu jika mereka outlier atau tidak? Anda perlu menentukan kecocokan statistik dengan pengamatan dan dalam interval kepercayaan menentukan apakah mereka asli atau tidak. Melihat pertanyaan, Distribusi Racun memang muncul di benak saya. Tapi ini mungkin banyak pekerjaan dan saya yakin Anda tidak ingin membahas ini. Mungkin menggunakan aproksimasi? Katakan Anda berasumsi bahwa nilai rata-rata koordinat adalah cara yang baik untuk digunakan. Kemudian tentukan nilai untuk standar deviasi. Saya pikir dev standar atau distribusi racun adalah 1 / (rata-rata). Kemudian perkiraan menggunakan distribusi normal dan interval kepercayaan 95%. Katakanlah jika sebuah pengamatan berada di luar interval (mean- * 1,645 * std dev; rata-rata + 1,645 * std dev) maka itu adalah outlier? Coba ini.

Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.