Apakah ada bandwidth optimal untuk penduga kerapatan turunan kernel?

14

Saya perlu memperkirakan fungsi kerapatan berdasarkan serangkaian pengamatan menggunakan penduga kerapatan kernel. Berdasarkan set pengamatan yang sama, saya juga perlu memperkirakan turunan pertama dan kedua dari kepadatan menggunakan turunan dari penduga kepadatan kernel. Bandwidth pasti akan memiliki efek yang besar pada hasil akhir.

Pertama, saya tahu ada beberapa fungsi R yang memberikan bandwidth KDE. Saya tidak yakin mana yang lebih disukai. Adakah yang bisa merekomendasikan salah satu dari fungsi R ini untuk bandwidth KDE?

Kedua, untuk turunan dari KDE, haruskah saya memilih bandwidth yang sama?

pengguna13154
sumber
Untuk kepadatan pilihan bandwidth selalu agak subyektif. Ini adalah pertanyaan tentang apa yang terlalu sempit dan karena itu menyebabkan variasi dalam kurva yang pada dasarnya mengikuti noise vs terlalu lebar di mana kurva terlalu halus dan melewatkan beberapa fitur nyata dalam kurva. Tetapi Anda memperkirakan kerapatan untuk mengetahui bentuknya. Jadi seberapa halus estimasi seharusnya tidak mudah diketahui. Untuk turunannya, saya pikir itu tergantung pada fitur turunan yang ingin Anda ketahui.
Michael R. Chernick

Jawaban:

15

Bandwidth optimal untuk estimasi turunan akan berbeda dari bandwidth untuk estimasi kepadatan. Secara umum, setiap fitur densitas memiliki pemilih bandwidth optimal sendiri.

Jika tujuan Anda adalah untuk meminimalkan rata-rata kesalahan kuadrat terintegrasi (yang merupakan kriteria biasa), tidak ada yang subjektif tentang hal itu. Ini adalah masalah menurunkan nilai yang meminimalkan kriteria. Persamaan diberikan dalam Bagian 2.10 dari Hansen (2009) .

Bagian yang sulit adalah bandwidth yang optimal adalah fungsi dari kepadatan itu sendiri, sehingga solusi ini tidak berguna secara langsung. Ada sejumlah metode di sekitar untuk mencoba mengatasi masalah itu. Ini biasanya memperkirakan beberapa fungsi kerapatan menggunakan perkiraan normal. (Catatan, tidak ada asumsi bahwa kerapatan itu sendiri normal. Asumsinya adalah bahwa beberapa fungsi kerapatan dapat diperoleh dengan asumsi normalitas.)

Di mana perkiraan dikenakan menentukan seberapa baik pemilih bandwidth. Pendekatan paling kasar disebut "aturan referensi normal" yang memaksakan perkiraan pada tingkat tinggi. Akhir Bagian 2.10 dalam Hansen (2009) memberikan rumus menggunakan pendekatan ini. Pendekatan ini diimplementasikan dalam hns()fungsi dari kspaket pada CRAN. Itu mungkin yang terbaik yang akan Anda dapatkan jika Anda tidak ingin menulis kode Anda sendiri. Jadi, Anda dapat memperkirakan turunan kepadatan sebagai berikut (menggunakan ks):

library(ks)
h <- hns(x,deriv.order=1)
den <- kdde(x, h=h, deriv.order=1)

Pendekatan yang lebih baik, biasanya dikenal sebagai pemilih "plug langsung", memaksakan pendekatan pada tingkat yang lebih rendah. Untuk estimasi kepadatan lurus, ini adalah metode Sheather-Jones, diimplementasikan dalam R menggunakan density(x,bw="SJ"). Namun, saya tidak berpikir ada fasilitas serupa yang tersedia dalam paket R untuk estimasi turunan.

Daripada menggunakan estimasi kernel langsung, Anda mungkin lebih baik dengan estimator polinomial lokal. Ini dapat dilakukan dengan menggunakan locpoly()fungsi dari kspaket di R. Sekali lagi, tidak ada pemilihan bandwidth yang optimal diimplementasikan, tetapi bias akan lebih kecil daripada untuk estimator kernel. misalnya,

den2 <- locpoly(x, bandwidth=?, drv=1) # Need to guess a sensible bandwidth
Rob Hyndman
sumber
Terima kasih banyak, Rob. Saya mungkin akan menggunakan bandwidth SJ untuk estimasi kepadatan.
user13154
Untuk estimasi turunan, jika saya menggunakan h <- hns (x); den <- kdde (x, h = h, deriv.order = 1), adalah h bandwidth optimal yang digunakan untuk estimasi. Saya menanyakan hal ini karena h <- hns (x) dipilih tanpa menentukan urutan turunannya. Terima kasih.
user13154
Saya memeriksa formula yang diberikan pada akhir Bagian 2.10 dalam Hansen (2009). Sepertinya bandwidth tergantung pada urutan turunannya, katakanlah turunan rth. h <- hns (x) tampaknya tidak bergantung pada r.
user13154
Saya baru tahu bahwa fungsi hns memiliki argumen deriv.order di mana saya dapat menentukan urutan turunannya. Terima kasih sekali lagi, Rob.
user13154
Maaf. Saya meninggalkan itu. Sekarang sudah diperbaiki.
Rob Hyndman