Optymalna szerokość pasma do oszacowania pochodnych będzie inna niż szerokość pasma do oszacowania gęstości. Ogólnie rzecz biorąc, każda cecha gęstości ma swój własny optymalny selektor przepustowości.
Jeśli Twoim celem jest zminimalizowanie średniego zintegrowanego błędu kwadratu (co jest zwykłym kryterium), nie ma w tym nic subiektywnego. Jest to kwestia wyprowadzenia wartości, która minimalizuje kryterium. Równania podano w sekcji 2.10 Hansen (2009) .
Problem polega na tym, że optymalna przepustowość jest funkcją samej gęstości, więc to rozwiązanie nie jest bezpośrednio przydatne. Istnieje wiele metod rozwiązania tego problemu. Zwykle aproksymują one niektóre funkcjonały gęstości za pomocą normalnych aproksymacji. (Uwaga: nie ma założenia, że sama gęstość jest normalna. Założeniem jest, że niektóre funkcjonały gęstości można uzyskać przy założeniu normalności.)
To, gdzie są nałożone przybliżenia, określa, jak dobry jest selektor przepustowości. Najgroźniejsze podejście nazywa się „normalną regułą odniesienia”, która nakłada zbliżenie na wysoki poziom. Koniec rozdziału 2.10 w Hansen (2009) podaje formułę wykorzystującą to podejście. To podejście jest realizowane w hns()
funkcji z ks
pakietu CRAN. To prawdopodobnie najlepsze, co otrzymasz, jeśli nie chcesz pisać własnego kodu. Możesz więc oszacować pochodną gęstości w następujący sposób (używając ks
):
library(ks)
h <- hns(x,deriv.order=1)
den <- kdde(x, h=h, deriv.order=1)
Lepsze podejście, zwykle nazywane selektorem „bezpośredniego podłączenia”, nakłada aproksymację na niższym poziomie. W celu określenia gęstości prostej, to metoda Sheather-Jones, realizowany w R z zastosowaniem density(x,bw="SJ")
. Nie sądzę jednak, aby w dowolnym pakiecie R dostępna była podobna funkcja do szacowania instrumentów pochodnych.
Zamiast korzystać z prostego oszacowania jądra, lepiej byłoby skorzystać z lokalnego estymatora wielomianowego. Można to zrobić za pomocą locpoly()
funkcji z ks
pakietu w R. Ponownie, nie ma zaimplementowanego optymalnego wyboru przepustowości, ale odchylenie będzie mniejsze niż w przypadku estymatorów jądra. na przykład,
den2 <- locpoly(x, bandwidth=?, drv=1) # Need to guess a sensible bandwidth