Die optimale Bandbreite für die Ableitungsschätzung unterscheidet sich von der Bandbreite für die Dichteschätzung. Im Allgemeinen verfügt jedes Merkmal einer Dichte über einen eigenen optimalen Bandbreitenselektor.
Wenn es Ihr Ziel ist, den mittleren integrierten quadratischen Fehler (das ist das übliche Kriterium) zu minimieren, ist nichts Subjektives daran. Es geht darum, den Wert abzuleiten, der das Kriterium minimiert. Die Gleichungen sind in Abschnitt 2.10 von Hansen (2009) angegeben .
Der schwierige Teil ist, dass die optimale Bandbreite eine Funktion der Dichte selbst ist, so dass diese Lösung nicht direkt nützlich ist. Es gibt eine Reihe von Methoden, um dieses Problem zu lösen. Diese approximieren normalerweise einige Funktionen der Dichte unter Verwendung normaler Approximationen. (Es gibt keine Annahme, dass die Dichte selbst normal ist. Die Annahme ist, dass einige Funktionen der Dichte unter der Annahme der Normalität erhalten werden können.)
Wo die Annäherungen auferlegt werden, bestimmt, wie gut der Bandbreitenselektor ist. Der gröbste Ansatz wird als "normale Referenzregel" bezeichnet, die die Annäherung auf einem hohen Niveau auferlegt. Das Ende von Abschnitt 2.10 in Hansen (2009) gibt die Formel unter Verwendung dieses Ansatzes an. Dieser Ansatz ist in der hns()
Funktion aus dem ks
Paket auf CRAN implementiert . Das ist wahrscheinlich das Beste, was Sie bekommen, wenn Sie keinen eigenen Code schreiben möchten. So können Sie die Ableitung einer Dichte wie folgt abschätzen (mit ks
):
library(ks)
h <- hns(x,deriv.order=1)
den <- kdde(x, h=h, deriv.order=1)
Ein besserer Ansatz, der üblicherweise als "Direct Plug In" -Selektor bezeichnet wird, erzwingt die Annäherung auf einer niedrigeren Ebene. Für die direkte Dichteschätzung ist dies die in R implementierte Sheather-Jones-Methode density(x,bw="SJ")
. Ich glaube jedoch nicht, dass es in einem R-Paket eine ähnliche Möglichkeit für die Ableitungsschätzung gibt.
Anstatt die direkte Kernelschätzung zu verwenden, ist ein lokaler Polynomschätzer möglicherweise besser geeignet. Dies kann mit der locpoly()
Funktion aus dem ks
Paket in R erfolgen. Auch hier ist keine optimale Bandbreitenauswahl implementiert, aber die Abweichung ist geringer als bei Kernel-Schätzern. z.B,
den2 <- locpoly(x, bandwidth=?, drv=1) # Need to guess a sensible bandwidth