Simulasikan dari Kernel Density Estimate (empiris PDF)

8

Saya memiliki vektor Xdari N=900pengamatan yang terbaik dimodelkan oleh estimator bandwidth yang global yang kepadatan Kernel (model parametrik, termasuk model campuran yang dinamis, ternyata tidak menjadi cocok baik):

masukkan deskripsi gambar di sini

Sekarang, saya ingin mensimulasikan dari KDE ini. Saya tahu ini bisa dicapai dengan bootstrap.

Dalam R, semuanya bermuara pada baris kode sederhana ini (yang hampir merupakan kode semu): di x.sim = mean(X) + { sample(X, replace = TRUE) - mean(X) + bw * rnorm(N) } / sqrt{ 1 + bw^2 * varkern/var(X) }mana bootstrap yang dihaluskan dengan koreksi varians diimplementasikan dan varkernmerupakan varian dari fungsi Kernel yang dipilih (misalnya, 1 untuk Gaussian Kernel).

Apa yang kami dapatkan dengan 500 pengulangan adalah sebagai berikut:

masukkan deskripsi gambar di sini

Ini bekerja, tetapi saya kesulitan memahami bagaimana pengamatan acak (dengan beberapa suara tambahan) adalah hal yang sama dengan mensimulasikan dari distribusi probabilitas? (distribusinya di sini adalah KDE), seperti dengan Monte Carlo standar. Selain itu, apakah bootstrap satu-satunya cara untuk mensimulasikan dari KDE?

Sunting: silakan lihat jawaban saya di bawah ini untuk informasi lebih lanjut tentang bootstrap yang dihaluskan dengan koreksi varians.

Antoine
sumber
1
Eksperimen bootstrap memberi Anda indikasi variabilitas estimasi kepadatan kernel. Ini tidak ada hubungannya dengan simulasi dari kernel, seperti yang lebih baik dijelaskan oleh Dougal di bawah ini.
Xi'an,
ya, itu cukup variabilitas. Apakah Anda pikir KDE akan menjadi pendekatan yang lebih baik daripada model campuran dinamis di sini?
Antoine
jadi, saya mengerti bahwa bootstrap yang halus seperti yang ditunjukkan di atas tidak setara dengan simulasi dari Kernel. Namun, ia mencapai tujuan yang sama: mensimulasikan dari PDF empiris, bukan? Saya akan mencoba memposting hasil strategi yang diusulkan oleh Douglas di bawah ini (disimulasikan langsung dari KDE) untuk dibandingkan ketika saya punya waktu.
Antoine
Simulasi dari estimator kernel tidak mengarah pada simulasi dari cdf empiris dan tidak ada definisi yang jelas tentang pdf empiris, antara histogram dan estimasi kernel, yang semuanya memerlukan kalibrasi bandwidth.
Xi'an
Saya tidak setuju dengan komentar pertama Anda, silakan lihat jawaban saya di bawah ini.
Antoine

Jawaban:

10

Berikut ini adalah algoritma untuk mengambil sampel dari campuran acak f(x)=1Ni=1Nfi(x):

  • Pilih komponen campuran i seragam secara acak.
  • Sampel dari fi.

Harus jelas bahwa ini menghasilkan sampel yang tepat.

Perkiraan kepadatan kernel Gaussian adalah campuran 1Ni=1NN(x;xi,h2). Jadi Anda bisa mengambil sampel ukuranN dengan memilih banyak xidan menambahkan noise normal dengan nol mean dan varians h2 untuk itu.

Cuplikan kode Anda memilih sekelompok xis, tapi kemudian melakukan sesuatu yang sedikit berbeda:

  • berubah xi untuk μ^+xiμ^1+h2/σ^2
  • menambahkan nol-mean noise normal dengan varian h21+h2/σ^2=11h2+1σ^2, rata-rata harmonik dari h2 dan σ2.

Kita dapat melihat bahwa nilai sampel yang diharapkan menurut prosedur ini adalah

1Ni=1Nxi1+h2/σ^2+μ^11+h2/σ^2μ^=μ^
sejak μ^=1Ni=1Nxi.

Saya pikir distribusi sampel tidak sama.

Dougal
sumber
terima kasih atas jawaban yang bagus ini. Saat ini saya sedang mengeksplorasi pendekatan ini. Apakah Anda ingin melihat utas lainnya yang terbaru (dan agak terkait) ini ? Terima kasih sebelumnya.
Antoine
3

Untuk menghilangkan kebingungan tentang apakah mungkin untuk menarik nilai dari KDE menggunakan pendekatan bootstrap, itu mungkin . Bootstrap tidak terbatas pada estimasi interval variabilitas.

Di bawah ini adalah bootstrap yang diperhalus dengan algoritma koreksi varians yang menghasilkan nilai sintetisYis dari KDE K jendela h. Itu berasal dari buku ini oleh Silverman, lihat halaman 25 dari dokumen ini , bagian 6.4.1 "Simulasi dari perkiraan kepadatan". Seperti dicatat dalam buku ini, algoritma ini memungkinkan untuk menemukan realisasi independen dari KDEy^, tanpa perlu tahu y^ secara eksplisit:

Untuk menghasilkan nilai sintetis Y (dari set pelatihan {X1,...Xn}):

  • Langkah 1: Pilih i seragam dengan penggantian dari {1,...,n},
  • Langkah 2: Contoh ϵ dari K (Yaitu, dari distribusi Normal jika K adalah Gaussian),
  • Langkah 3: Tetapkan Y=X¯+(XiX¯+h.ϵ)/1+h2σK2/σX2.

Dimana X¯ dan σX2 adalah mean dan varians sampel, dan σK2 adalah varian dari K (Yaitu, 1 untuk Gaussian K). Seperti dijelaskan oleh Dougal, nilai yang diharapkan dari realisasi adalahX¯. Berkat koreksi varians, variansnya adalahσX2 (di sisi lain, bootstrap yang dihaluskan tanpa koreksi varians, di mana langkah 3 sederhana Y=Xi+h.ϵ, kembangkan varians).

Cuplikan kode R dalam pertanyaan saya di atas benar-benar mengikuti algoritme ini.

Keuntungan dari bootstrap yang dihaluskan di atas bootstrap adalah:

  • "fitur palsu" dalam data tidak direproduksi karena nilai yang berbeda dari yang ada dalam sampel dapat dihasilkan,
  • nilai-nilai di luar maks / menit pengamatan dapat dihasilkan.
Antoine
sumber