Оптимальна пропускна здатність для оцінки похідних буде відрізнятися від ширини смуги для оцінки щільності. Взагалі, кожна особливість густини має власний вибір селектора оптимальної пропускної здатності.
Якщо ваша мета - звести до мінімуму середню інтегральну помилку квадрата (що є звичайним критерієм), в цьому немає нічого суб'єктивного. Це питання виведення значення, яке мінімізує критерій. Рівняння наведені у розділі 2.10 Хансена (2009) .
Хитра частина полягає в тому, що оптимальна пропускна здатність - це функція самої щільності, тому таке рішення не є корисним безпосередньо. Існує ряд методів, щоб спробувати вирішити цю проблему. Зазвичай вони наближають деякі функціонали щільності, використовуючи нормальні наближення. (Зауважте, немає припущення, що сама щільність є нормальною. Припущення полягає в тому, що деякі функціонали щільності можна отримати, припускаючи нормальність.)
Там, де накладені наближення, визначається, наскільки хороший селектор пропускної здатності. Найбільш грубий підхід називається «нормальним еталонним правилом», яке нав'язує наближення на високому рівні. Кінець розділу 2.10 в Хансені (2009) дає формулу, використовуючи цей підхід. Цей підхід реалізований у hns()
функції з ks
пакету на CRAN. Це, мабуть, найкраще, що ви отримаєте, якщо не хочете писати власний код. Таким чином, ви можете оцінити похідну густини наступним чином (використовуючи ks
):
library(ks)
h <- hns(x,deriv.order=1)
den <- kdde(x, h=h, deriv.order=1)
Кращий підхід, зазвичай відомий як селектор «прямий підключення», накладає наближення на нижчому рівні. Для оцінки щільності прямий, це метод Sheather-Джонса, реалізований в R , використовуючи density(x,bw="SJ")
. Однак я не думаю, що в будь-якому пакеті R для подібних засобів є можливість визначення похідних.
Замість того, щоб використовувати пряму оцінку ядра, вам може бути краще з локальним оцінкою поліномів. Це можна зробити за допомогою locpoly()
функції з ks
пакету в R. Знову ж, не здійснено оптимального вибору пропускної здатності, але зміщення буде меншим, ніж для оцінювачів ядра. наприклад,
den2 <- locpoly(x, bandwidth=?, drv=1) # Need to guess a sensible bandwidth