Bagaimana cara mengelompokkan poin berdasarkan kepadatan kernel?

10

Saya memiliki dataset besar dengan 36k poin yang mewakili penggunaan lahan komersial, masing-masing dengan bidang yang berisi rekaman persegi. Saya telah menjalankan analisis kepadatan kernel pada dataset ini, menghasilkan raster yang menunjukkan kepadatan cuplikan persegi komersial di seluruh area metro. Saya perlu membagi raster ini menjadi daerah yang sesuai dengan maxima lokal, yang saya sebut "pusat". Saya sudah menentukan lokasi pusat, dan sekarang saya perlu melakukan satu dari dua hal:

  • menggunakan alat pengelompokan titik, seperti "mempartisi sekitar medoids", untuk mengelompokkan poin menjadi kelompok di sekitar pusat yang telah saya identifikasi. Masalah dengan metode ini adalah bahwa itu adalah komputasi yang intens, dan terlebih lagi jika saya mencoba menggunakan matriks ketidaksamaan untuk menimbang poin berdasarkan ukuran.

  • entah bagaimana membagi raster kepadatan kernel (yang kira-kira menyerupai raster medan) menjadi "bukit" individual di sekitar masing-masing pusat. Tapi saya tidak bisa memikirkan alat apa pun untuk melakukan ini.

Masalah ini telah mengganggu saya untuk sementara waktu, dan saya berharap saya dapat melakukan metode pengelompokan dalam R, tetapi itu memakan waktu dan saya kehabisan waktu. Apakah ada yang tahu tentang metode sederhana untuk membagi raster kepadatan menjadi lingkungan intensitas atau untuk dengan cepat mengelompokkan dataset besar?

Patrick
sumber
1
Pertanyaan ini terkait erat: stats.stackexchange.com/questions/13995/…
whuber
1
Dan juga diposting oleh saya, ternyata.
Patrick
itu akan menjadi 1 pt untuk Patrick saya pikir .....
BWill

Jawaban:

6

Diskusi berikut a posting yang berkaitan erat mengungkapkan solusi sederhana, efektif : untuk menemukan "bukit", membalikkan grid (dengan meniadakan nilai-nilainya) dan menemukan daerah aliran sungai. Bukit-bukit itu adalah sink dan batas-batas daerah aliran sungai mempartisi grid menjadi sink-sink itu.

whuber
sumber
Solusi ini sederhana, cepat, dan persis apa yang saya cari. Terima kasih.
Patrick
3

Jawaban paling sederhana adalah dengan menggunakan ambang untuk menutup area yang berada di bawah ambang. Ini akan memberi Anda area berbeda di sekitar pusat Anda. Maka itu harus dapat mengubah area-area itu menjadi bentuk.

Anda juga dapat menemukan alat statistik Spasial: analisis pengelompokan data raster diskusi yang bermanfaat dari masalah yang sama.

Ian Turton
sumber
Ya, itu adalah diskusi yang sangat relevan! Saya membaca tesis MSc Anda dan akan mencoba beberapa metode.
Patrick
2
Menggunakan ambang batas mungkin tidak akan berfungsi di sini, karena saya mencoba membedakan pusat dari pusat lain yang berbatasan langsung. Di pusat kota, batas antara keduanya akan memiliki kepadatan yang sangat tinggi, tetapi di pinggiran kota, itu akan memiliki kepadatan yang sangat rendah. Tetapi saya berharap bahwa menggunakan turunan kedua akan efektif.
Patrick
3

Saya pikir Anda harus kembali ke masalah awal Anda: Temukan kelompok rekaman persegi komersial di seluruh wilayah metro.

Saya berasumsi poin Anda adalah centroid paket dengan nilai komersial cuplikan persegi? Saya berasumsi Anda juga dapat memiliki lapisan poligon paket dengan total luas persegi untuk setiap paket? Itu memberi Anda satu set kasus (centroid) dan populasi (paket poligon) untuk masing-masing cuplikan komersial dan cuplikan persegi.

Pergi ambil SatScan http://www.satscan.org/ dan jalankan model hanya ruang Poisson-didistribusikan dan Anda akan memiliki cluster rekaman persegi komersial Anda dalam urutan yang cukup cepat. (Anda juga dapat menggunakan luas tanah persegi sebagai populasi Anda juga daripada luas bangunan persegi. Itu mungkin bahkan populasi yang lebih baik.)

tuan-castillo
sumber
Anda benar bahwa poinnya adalah centroid, tetapi sayangnya dataset tersebut dikompilasi oleh orang lain dari setiap lapisan paket kabupaten dan hanya didistribusikan sebagai poin. Tapi SatScan terlihat seperti perangkat lunak yang sangat berguna, jadi saya akan mengingat aplikasi lain.
Patrick