Розбіжність Куллбека-Лейблера визначається як
щоб обчислити (оцінити) це з емпіричних даних, нам, можливо, знадобляться деякі оцінки функцій щільності . Таким чином, природним початковим моментом може бути оцінка щільності (а після цього просто числова інтеграція). Наскільки хорошим чи стабільним був би такий метод, я не знаю.
KL(P||Q)=∫∞−∞p(x)logp(x)q(x)dx
p(x),q(x)
Але спочатку ваше друге питання, потім я повернусь до першого. Скажімо, і - однакові щільності на та відповідно. Тоді тоді як важче визначити, але наскільки я бачу, єдине розумне значення для цього є , оскільки це передбачає інтегруючи який ми можемо вибрати для інтерпретації як . Ці результати обґрунтовані з інтерпретації, яку я даю в Інтуїції щодо розбіжності Кулбека-Лейблера (KL)pq[0,1][0,10]KL(p||q)=log10KL(q||p)∞log(1/0)log∞
Повертаючись до головного питання. Це задається дуже непараметричним чином, і припущення щодо густин не висловлюються. Напевно, потрібні певні припущення. Але якщо припустити, що обидві щільності запропоновані як конкуруючі моделі для одного і того ж явища, ми можемо припустити, що вони мають однаковий домінуючий показник: розбіжність KL між безперервним та дискретним розподілом ймовірностей завжди буде нескінченністю, наприклад. Один документ, що стосується цього питання, такий: https://pdfs.semanticscholar.org/1fbd/31b690e078ce938f73f14462fceadc2748bf.pdf Вони пропонують метод, який не потребує попереднього оцінювання щільності, та аналізують його властивості.
(Є багато інших робіт). Я повернусь і опублікую деякі деталі з цього паперу, ідеї.
EDIT
Деякі ідеї цього документу, які стосуються оцінки розбіжності KL із зразками iid із абсолютно неперервних розподілів. Я показую їх пропозицію щодо одновимірних розподілів, але вони дають рішення і для векторів (використовуючи оцінку щільності найближчого сусіда). Для доказів прочитайте папір!
Вони пропонують використовувати версію функції емпіричного розподілу, але лінійно інтерпольовану між точками вибірки, щоб отримати безперервну версію. Вони визначають
де - крок функції Heavyyside, але визначений так, що . Тоді ця функція, інтерпольована лінійно (і розширена горизонтально за межі діапазону), є ( для безперервної). Тоді вони пропонують оцінити розбіжність Куллбека-Лейблера за
де і
Pe(x)=1n∑i=1nU(x−xi)
UU(0)=0.5PccD^(P∥Q)=1n∑i=1nlog(δPc(xi)δQc(xi))
δPc=Pc(xi)−Pc(xi−ϵ)ϵ є числом, меншим за найменший інтервал між зразками.
R код для потрібної нам емпіричної функції розподілу
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
}
зауважте, що rle
використовується для опіки справи з дублікатами в x
.
Тоді оцінка розбіжності KL дається по
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
}
Потім я показую невелике моделювання:
KL <- replicate(1000, {x <- rnorm(100)
y <- rt(100, df=5)
KL_est(x, y)})
hist(KL, prob=TRUE)
яка дає наступну гістограму, що показує (оцінку) розподілу вибірки цього оцінника:
Для порівняння, ми обчислюємо дивергенцію KL у цьому прикладі шляхом числової інтеграції:
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
хм ... різниця є достатньо великою, що тут є багато для вивчення!