paquete de np estimación de densidad del núcleo con núcleo Epanechnikov

8

Estoy trabajando con el conjunto de datos "géiser" del paquete MASS y comparando las estimaciones de densidad del núcleo del paquete np.

Mi problema es comprender la estimación de densidad utilizando la validación cruzada de mínimos cuadrados y el núcleo Epanechnikov:

blep<-npudensbw(~geyser$waiting,bwmethod="cv.ls",ckertype="epanechnikov")
plot(npudens(bws=blep))

ingrese la descripción de la imagen aquí

Para el núcleo gaussiano parece estar bien:

blga<-npudensbw(~geyser$waiting,bwmethod="cv.ls",ckertype="gaussian")
plot(npudens(bws=blga))

ingrese la descripción de la imagen aquí

O si uso el kernel Epanechnikov y el cv de máxima probabilidad:

bmax<-npudensbw(~geyser$waiting,bwmethod="cv.ml",ckertype="epanechnikov")
plot(npudens(~geyser$waiting,bws=bmax))

¿Es mi culpa o es un problema en el paquete?

Editar: Si uso Mathematica para el núcleo Epanechnikov y cv de mínimos cuadrados está funcionando:

d = SmoothKernelDistribution[data, bw = "LeastSquaresCrossValidation", ker = "Epanechnikov"]
Plot[{PDF[d, x], {x, 20,110}]
TMoek
fuente

Respuestas:

6

EDITAR

Esto se explica en las preguntas frecuentes :

Uso plot () (npplot ()) para trazar, por ejemplo, una densidad y el gráfico resultante se ve como una densidad invertida en lugar de una densidad

Esto puede ocurrir cuando el ancho de banda controlado por datos está dramáticamente subestimado. No siempre se garantiza que los procedimientos de selección de ancho de banda basados ​​en datos (es decir, automáticos) produzcan buenos resultados debido quizás a la presencia de valores atípicos o al redondeo / discretización de datos continuos, entre otros. De forma predeterminada, npplot () toma los dos extremos de los datos (mínimo, máximo, es decir, puntos de datos reales) y luego crea una cuadrícula igualmente espaciada de datos de evaluación (es decir, no puntos de datos reales en general) y calcula la densidad de estos puntos. Dado que el ancho de banda es extremadamente pequeño, la estimación de densidad en estos puntos de evaluación es correctamente cero, mientras que los de las realizaciones de muestra (en este caso solo dos, el mínimo y el máximo) son distintos de cero, por lo tanto, obtenemos dos picos en los bordes de la trama y un tazón plano igual a cero en cualquier otro lugar. Esto también puede suceder cuando sus datos están muy discretos y los trata como continuos. En tales casos, tratar los datos según lo ordenado puede dar lugar a estimaciones más razonables

Como se sugiere tratar los datos como se ordenó, funciona:

blep<-npudensbw(~ordered(geyser$waiting), 
                bwmethod="cv.ls", ckertype="epanechnikov", ckerorder=2)

ingrese la descripción de la imagen aquí

También tiene éxito con órdenes de kernel más altas, como ckerorder=4en este ejemplo:

ingrese la descripción de la imagen aquí

derechos
fuente
Gracias, pero ¿por qué funciona con el núcleo gaussiano o en Mathematica?
TMoek