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.
Jawaban:
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:
uji coba dan kesalahancross-validation - 100m, 1km, 10km ??)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.
sumber
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" ...
sumber
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.
sumber