Vengo de esta pregunta en caso de que alguien quiera seguir el rastro.
Básicamente tengo un conjunto de datos compuesto de objetos donde cada objeto tiene un número dado de valores medidos adjuntos (dos en este caso):
Necesito una manera de determinar la probabilidad de un nuevo objeto de pertenencia a por lo que estaba previsto en esa pregunta para obtener una densidad de probabilidad f a través de un estimador de densidad de kernel, que creo que ya tengo .
Desde mi objetivo es obtener la probabilidad de que este nuevo objeto ( ) de que pertenecen a este conjunto de datos en 2D , me dijeron para integrar el pdf f sobre " valores de la ayuda para el que la densidad es menor que la que observaste ". La densidad "observado" es f evaluado en el nuevo objeto de p , es decir: f ( x p , y p ) . Entonces necesito resolver la ecuación:
El PDF de mi conjunto de datos 2D (obtenido a través del módulo stats.gaussian_kde de Python ) se ve así:
donde el punto rojo representa el nuevo objeto trazado sobre el PDF de mi conjunto de datos.
Entonces la pregunta es: ¿cómo puedo calcular la integral anterior para los límites cuando el pdf se ve así?
Añadir
Hice algunas pruebas para ver qué tan bien funcionaba el método de Monte Carlo que menciono en uno de los comentarios. Esto es lo que conseguí:
Los valores parecen variar un poco más para las áreas de menor densidad con ambos anchos de banda que muestran más o menos la misma variación. La mayor variación en la tabla se produce para el punto (x, y) = (2.4,1.5) que compara el valor de muestra de Silverman 2500 vs 1000, lo que da una diferencia de 0.0126
o ~1.3%
. En mi caso, esto sería en gran medida aceptable.
Editar : Acabo de notar que en 2 dimensiones la regla de Scott es equivalente a la de Silverman según la definición dada aquí .
Respuestas:
Una manera simple es rasterizar el dominio de integración y calcular una aproximación discreta a la integral.
Hay algunas cosas a tener en cuenta:
Asegúrese de cubrir más que la extensión de los puntos: debe incluir todas las ubicaciones donde la estimación de densidad del núcleo tendrá valores apreciables. Esto significa que necesita expandir la extensión de los puntos entre tres y cuatro veces el ancho de banda del núcleo (para un núcleo gaussiano).
El resultado variará un poco con la resolución del ráster. La resolución debe ser una pequeña fracción del ancho de banda. Debido a que el tiempo de cálculo es proporcional al número de celdas en el ráster, casi no se necesita tiempo adicional para realizar una serie de cálculos con resoluciones más gruesas que la prevista: verifique que los resultados para los más gruesos converjan en el resultado para La mejor resolución. Si no lo son, puede ser necesaria una resolución más fina.
Aquí hay una ilustración para un conjunto de datos de 256 puntos:
Los puntos se muestran como puntos negros superpuestos en dos estimaciones de densidad del núcleo. Los seis puntos rojos grandes son "sondas" en las que se evalúa el algoritmo. Esto se ha hecho para cuatro anchos de banda (un valor predeterminado entre 1.8 (verticalmente) y 3 (horizontalmente), 1/2, 1 y 5 unidades) con una resolución de 1000 por 1000 celdas. La siguiente matriz de diagrama de dispersión muestra cuán fuertemente dependen los resultados del ancho de banda para estos seis puntos de sonda, que cubren una amplia gama de densidades:
La variación ocurre por dos razones. Obviamente, las estimaciones de densidad difieren, introduciendo una forma de variación. Más importante aún, las diferencias en las estimaciones de densidad pueden crear grandes diferencias en cualquier punto único ("sonda"). La última variación es mayor en torno a las "franjas" de densidad media de los grupos de puntos, exactamente aquellos lugares donde es probable que este cálculo sea el más utilizado.
Esto demuestra la necesidad de una precaución sustancial al usar e interpretar los resultados de estos cálculos, ya que pueden ser muy sensibles a una decisión relativamente arbitraria (el ancho de banda a usar).
Código R
El algoritmo está contenido en la media docena de líneas de la primera función
f
,. Para ilustrar su uso, el resto del código genera las figuras anteriores.fuente
Default
yHp5
los anchos de banda (supongoH1
yH5
mediah=1
yh=5
) esHp5
el valorh=1/2
? Si es así, ¿qué esDefault
?kde2d
usobandwidth.nrd
. Para los datos de la muestra, es igual a en la dirección horizontal y en la dirección vertical, aproximadamente a la mitad entre los valores de y en la prueba. Tenga en cuenta que estos anchos de banda predeterminados son lo suficientemente grandes como para colocar una proporción apreciable de la densidad total mucho más allá de la extensión de los puntos en sí, por lo que esa extensión debe ampliarse independientemente del algoritmo de integración que elija utilizar.kde
también aumenta (y por lo tanto necesito extender los límites de integración)? Dado que puedo vivir con un error<10%
en el valor resultante de la integral, ¿qué piensa sobre el uso de la regla de Scott?Si tiene un número decente de observaciones, es posible que no necesite realizar ninguna integración. Digamos que su nuevo punto es . Suponga que tiene un estimador de densidad ; resuma el número de observaciones para las cuales y divida por el tamaño de la muestra. Esto le da una aproximación a la probabilidad requerida. f x f ( x )< f ( x 0)x0 f^ x f^(x)<f^(x0)
Esto supone que no es "demasiado pequeño" y que el tamaño de la muestra es lo suficientemente grande (y lo suficientemente extendido) como para dar una estimación decente en las regiones de baja densidad. Sin embargo, 20000 casos parecen lo suficientemente grandes para bivariado .xf^(x0) x
fuente