La divergencia Kullback-Leibler se define como
así que para calcular (estimar) esto a partir de datos empíricos necesitaríamos, tal vez, algunas estimaciones de las funciones de densidad p ( x ) , q ( x ) . Entonces, un punto de partida natural podría ser a través de la estimación de densidad (y después de eso, solo integración numérica). Qué tan bueno o estable sería un método así, no lo sé.
KL( PEl | El | Q)= ∫∞- ∞p ( x ) logp ( x )q( x )reX
p ( x ) , q( x )
Pero primero su segunda pregunta, luego volveré a la primera. Digamos que y q son densidades uniformes en [ 0 , 1 ] y [ 0 , 10 ] , respectivamente. Entonces KL ( p | | q ) = log 10 mientras que KL ( q | | p ) es más difícil de definir, pero el único valor razonable para darle es ∞ , por lo que puedo ver, ya que implica integrar log ( 1) / /pagq[ 0 , 1 ][ 0 , 10 ]KL( p | | q) = log10KL( qEl | El | p)∞ que podemos elegir interpretar como log ∞ . Estos resultados son razonables de la interpretación que doy enIntuition on the Kullback-Leibler (KL) DivergenceIniciar sesión( 1 / 0 )Iniciar sesión∞
Volviendo a la pregunta principal. Se pregunta de una manera muy no paramétrica, y no se establecen suposiciones sobre las densidades. Probablemente se necesitan algunas suposiciones. Pero suponiendo que las dos densidades se propongan como modelos competitivos para el mismo fenómeno, probablemente podemos suponer que tienen la misma medida dominante: la divergencia KL entre una distribución de probabilidad continua y una discreta siempre sería infinita, por ejemplo. Un artículo que aborda esta pregunta es el siguiente: https://pdfs.semanticscholar.org/1fbd/31b690e078ce938f73f14462fceadc2748bf.pdf Proponen un método que no necesita estimación de densidad preliminar y analiza sus propiedades.
(Hay muchos otros documentos). Volveré y publicaré algunos detalles de ese documento, las ideas.
EDIT
Algunas ideas de ese artículo, que trata sobre la estimación de la divergencia de KL con muestras iid de distribuciones absolutamente continuas. Muestro su propuesta para distribuciones unidimensionales, pero también dan una solución para vectores (usando la estimación de densidad de vecinos más cercana). Para pruebas, lea el periódico!
PAGmi( x ) = 1norte∑i = 1norteU( x - xyo)
UU( 0 ) = 0.5PAGCCre^( P∥ Q ) = 1norte∑i = 1norteIniciar sesión( δPAGC( xyo)δQC( xyo))
δPAGC= PC( xyo) - PC( xyo- ϵ )ϵ
El código R para la versión de la función de distribución empírica que necesitamos es
my.ecdf <- function(x) {
x <- sort(x)
x.u <- unique(x)
n <- length(x)
x.rle <- rle(x)$lengths
y <- (cumsum(x.rle)-0.5) / n
FUN <- approxfun(x.u, y, method="linear", yleft=0, yright=1,
rule=2)
FUN
}
tenga en cuenta que rle
se utiliza para atender el caso con duplicados en x
.
Entonces la estimación de la divergencia KL viene dada por
KL_est <- function(x, y) {
dx <- diff(sort(unique(x)))
dy <- diff(sort(unique(y)))
ex <- min(dx) ; ey <- min(dy)
e <- min(ex, ey)/2
n <- length(x)
P <- my.ecdf(x) ; Q <- my.ecdf(y)
KL <- sum( log( (P(x)-P(x-e))/(Q(x)-Q(x-e)))) / n
KL
}
Luego muestro una pequeña simulación:
KL <- replicate(1000, {x <- rnorm(100)
y <- rt(100, df=5)
KL_est(x, y)})
hist(KL, prob=TRUE)
que proporciona el siguiente histograma, que muestra (una estimación) de la distribución muestral de este estimador:
A modo de comparación, calculamos la divergencia KL en este ejemplo mediante integración numérica:
LR <- function(x) dnorm(x,log=TRUE)-dt(x,5,log=TRUE)
100*integrate(function(x) dnorm(x)*LR(x),lower=-Inf,upper=Inf)$value
[1] 3.337668
hmm ... ¡la diferencia es tan grande que hay mucho aquí para investigar!