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 ks
paket 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 ks
paket 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