Desarrollé un estimador de densidad de kernel simple en Java, basado en unas pocas docenas de puntos (tal vez hasta cien) y una función de kernel gaussiana. La implementación me da el PDF y el CDF de mi distribución de probabilidad en cualquier momento.
Ahora me gustaría implementar un método de muestreo simple para este KDE. Por supuesto, una opción obvia sería dibujar desde el conjunto de puntos que componen el KDE, pero me gustaría poder recuperar puntos que son ligeramente diferentes de los del KDE.
Hasta ahora no he encontrado una técnica de muestreo que pueda implementar fácilmente para resolver este problema (sin depender de bibliotecas externas para la integración numérica o cálculos complejos). ¿Algún consejo? No tengo requisitos especialmente estrictos en cuanto a precisión o eficiencia, mi principal preocupación es tener una función de muestreo que funcione y se pueda implementar fácilmente. ¡Gracias!
rnorm(n, sample(dx$x, n, prob = dx$y, replace = TRUE), dx$bw)
dondedx
se emite ladensity
función.prob
Se debe proporcionar un argumento porque, de lo contrario, se muestra de manera uniforme.Respuestas:
Como mencionó el Procrastinator, hay una manera simple de tomar muestras de un estimador de densidad del Kernel:
fuente