¿Existe un ancho de banda óptimo para un estimador de densidad del núcleo de derivados?

14

Necesito estimar la función de densidad basada en un conjunto de observaciones usando el estimador de densidad del núcleo. Basado en el mismo conjunto de observaciones, también necesito estimar la primera y segunda derivadas de la densidad usando las derivadas del estimador de densidad del núcleo. El ancho de banda ciertamente tendrá un gran efecto del resultado final.

Primero, sé que hay un par de funciones R que le dan ancho de banda a KDE. No estoy seguro de cuál es el más preferido. ¿Alguien puede recomendar una de estas funciones R para el ancho de banda de KDE?

En segundo lugar, para la derivada de KDE, ¿debería elegir el mismo ancho de banda?

usuario13154
fuente
Para una densidad, la elección del ancho de banda siempre es algo subjetiva. Se trata de lo que es demasiado estrecho y, por lo tanto, causa una variación en la curva que esencialmente sigue al ruido frente a demasiado ancho, donde la curva es demasiado suave y pierde algunas características reales de la curva. Pero estimas la densidad para descubrir la forma. Entonces, qué tan suave debería ser la estimación no es fácil de saber. Para las derivadas, creo que depende de qué característica de la derivada desee saber.
Michael R. Chernick

Respuestas:

15

El ancho de banda óptimo para la estimación derivada será diferente del ancho de banda para la estimación de densidad. En general, cada característica de una densidad tiene su propio selector de ancho de banda óptimo.

Si su objetivo es minimizar el error cuadrático medio integrado (que es el criterio habitual), no hay nada subjetivo al respecto. Se trata de derivar el valor que minimiza el criterio. Las ecuaciones se dan en la Sección 2.10 de Hansen (2009) .

La parte difícil es que el ancho de banda óptimo es una función de la densidad misma, por lo que esta solución no es directamente útil. Existen varios métodos para tratar de resolver ese problema. Estos usualmente se aproximan a algunos funcionales de la densidad usando aproximaciones normales. (Tenga en cuenta que no se asume que la densidad en sí misma es normal. La suposición es que se pueden obtener algunos funcionales de la densidad asumiendo la normalidad)

Donde se imponen las aproximaciones determina cuán bueno es el selector de ancho de banda. El enfoque más crudo se llama la "regla de referencia normal" que impone la aproximación a un nivel alto. El final de la Sección 2.10 en Hansen (2009) da la fórmula usando este enfoque. Este enfoque se implementa en la hns()función del kspaquete en CRAN. Probablemente sea lo mejor que obtendrá si no desea escribir su propio código. Entonces puede estimar la derivada de una densidad de la siguiente manera (usando ks):

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

Un mejor enfoque, generalmente conocido como selector de "conexión directa", impone la aproximación en un nivel inferior. Para la estimación de densidad directa, este es el método de Sheather-Jones, implementado en R usando density(x,bw="SJ"). Sin embargo, no creo que haya una instalación similar disponible en ningún paquete R para la estimación derivada.

En lugar de utilizar la estimación directa del núcleo, es mejor que tenga un estimador polinómico local. Esto se puede hacer usando la locpoly()función del kspaquete en R. Una vez más, no hay una selección óptima de ancho de banda implementada, pero el sesgo será menor que para los estimadores del núcleo. p.ej,

den2 <- locpoly(x, bandwidth=?, drv=1) # Need to guess a sensible bandwidth
Rob Hyndman
fuente
Un millón de gracias, Rob. Probablemente usaré el ancho de banda SJ para la estimación de densidad.
user13154
Para la estimación derivada, si uso h <- hns (x); den <- kdde (x, h = h, deriv.order = 1), es h el ancho de banda óptimo utilizado para la estimación. Estoy preguntando esto porque h <- hns (x) se elige sin especificar el orden derivado. Gracias.
user13154
Verifiqué la fórmula dada al final de la Sección 2.10 en Hansen (2009). Parece que el ancho de banda depende del orden de la derivada, digamos la cuarta derivada. h <- hns (x) no parece depender de la r.
user13154
Acabo de descubrir que la función hns tiene un argumento deriv.order donde puedo especificar el orden de las derivadas. Muchas gracias de nuevo, Rob.
user13154
Lo siento. Lo dejé fuera. Ahora arreglado.
Rob Hyndman