metode pengambilan sampel sederhana untuk Penaksir Kerapatan Kernel

10

Saya telah mengembangkan Pengukur Kepadatan Kernel sederhana di Jawa, berdasarkan beberapa lusin poin (mungkin hingga seratus atau lebih) dan fungsi kernel Gaussian. Implementasinya memberi saya PDF dan CDF dari distribusi probabilitas saya pada titik mana pun.

Sekarang saya ingin menerapkan metode pengambilan sampel sederhana untuk KDE ini. Pilihan yang jelas tentu saja akan menarik dari set poin yang membentuk KDE, tapi saya ingin dapat mengambil poin yang sedikit berbeda dari yang ada di KDE.

Sejauh ini saya belum menemukan teknik pengambilan sampel yang dapat saya implementasikan dengan mudah untuk menyelesaikan masalah ini (tanpa bergantung pada perpustakaan eksternal untuk integrasi numerik atau perhitungan kompleks). Ada saran? Saya tidak memiliki persyaratan khusus yang kuat dalam hal presisi atau efisiensi, perhatian utama saya adalah memiliki fungsi pengambilan sampel yang berfungsi dan dapat dengan mudah diimplementasikan. Terima kasih!

Pierre Lison
sumber
4
Ini dirinci di halaman 5 dokumen ini .
terima kasih, itu berguna! Dan lebih sederhana dari yang saya kira ;-)
Pierre Lison
@ user10525 kode yang diberikan salah, seharusnya: di rnorm(n, sample(dx$x, n, prob = dx$y, replace = TRUE), dx$bw)mana dxoutput dari densityfungsi. Argumen probharus diberikan karena jika tidak, Anda sampel secara seragam.
Tim

Jawaban:

17

Seperti yang disebutkan oleh Procrastinator, ada cara sederhana untuk mengambil sampel dari penaksir kepadatan Kernel:

  1. Gambar satu poin dari set poin , ... termasuk dalam KDExix1xn
  2. Setelah Anda memiliki titik , gambarkan sebuah nilai dari kernel yang terkait dengan titik tersebut. Dalam hal ini, gambar dari Gaussian berpusat di dan dari varian (bandwidth)xiN(xi,h)xih
Pierre Lison
sumber
(+1) Untuk membagikan solusi Anda.
Apakah salah satu poin asli? Jika demikian, sepertinya kita tidak benar-benar perlu membangun KDE yang sebenarnya sama sekali. Hanya mengambil sampel dari salah satu poin asli, dan sudah cukup? xiN(xi,h)
Ram
Ya memang, jika Anda hanya menggunakan distribusi KDE untuk pengambilan sampel, Anda tidak perlu membuat PDF secara eksplisit: satu-satunya informasi yang diperlukan untuk operasi pengambilan sampel adalah kumpulan titik dan bandwidth.
Pierre Lison
hanya untuk menambah Pierre Lison: Pada langkah 2 .: Untuk pengambilan sampel dari kernel Gaussian, bandwidth h harus diambil sebagai standar deviasi dari distribusi Gaussian di sekitar titik x_i, bukan varians.
Tidakkah Anda ingin sampel menggunakan standar deviasi 1 / jam atau sesuatu? Seperti yang ditulis, semakin kecil kemungkinan x_i, semakin besar kemungkinan Anda untuk mengambil contoh titik terdekat lainnya karena standar deviasi N rendah.
Chris Anderson