Comparing Kullback-Leibler divergence values

Click For Summary
SUMMARY

This discussion focuses on evaluating the realism of two survival models in R by comparing their Kullback-Leibler divergence (KLD) values against a true observed survival dataset. The KLD values calculated using the LaplacesDemon library indicate that `dat.s2` has a lower divergence value (0.8827712) compared to `dat.s1` (1.17196), suggesting it is a better fit. However, visual density plots reveal that `dat.s1` aligns more closely with the observed data. The discrepancy arises from the non-commutative nature of KLD, where the order of datasets affects the results and the interpretation of the fitting process.

PREREQUISITES
  • Familiarity with R programming language
  • Understanding of Kullback-Leibler divergence
  • Experience with the LaplacesDemon library in R
  • Knowledge of density estimation techniques in statistics
NEXT STEPS
  • Explore the implications of Kullback-Leibler divergence in model fitting
  • Learn about density estimation methods in R
  • Investigate the differences between KL(Q||P) and KL(P||Q) formulations
  • Review case studies on survival analysis using R
USEFUL FOR

Statisticians, data scientists, and researchers involved in survival analysis and model evaluation using R, particularly those interested in understanding Kullback-Leibler divergence and its applications in comparing statistical models.

nigels
Messages
36
Reaction score
0
I’m currently evaluating the "realism" of two survival models in R by comparing the respective Kullback-Leibler divergence between their simulated survival time dataset (`dat.s1` and `dat.s2`) and a “true”, observed survival time dataset (`dat.obs`). Initially, directed KLD functions show that `dat.s2` is a better match to the observation:

> library(LaplacesDemon)
> KLD(dat.s1, dat.obs)$sum.KLD.py.px
[1] 1.17196
> KLD(dat.s2, dat.obs)$sum.KLD.py.px
[1] 0.8827712​

However, when I visualize the densities of all three datasets, it seems quite clear that `dat.s1` (green) better alignes with the observation:

> plot(density(dat.obs), lwd=3, ylim=c(0,0.9))
> lines(density(dat.s1), col='green')
> lines(density(dat.s2), col='purple')​

What is the cause behind this discrepancy? Am I applying KLD incorrectly due to some conceptual misunderstanding?
 

Attachments

  • KL_nonsense_sof.png
    KL_nonsense_sof.png
    14.2 KB · Views: 802
Physics news on Phys.org
Keep in mind that the KL-divergence is non-commutative, and different "orders" correspond to different objective functions (and different research questions). The way you're fitting it (that is, KL(Q||P), where Q is being fit to P) is trying to match regions of high density, and it does seem to be the case that the highest probability mass in your "worse fitting" model coincides with the highest probability mass in your target better than does the "better fitting" model. There's a fairly good discussion related to the topic here:

https://stats.stackexchange.com/questions/188903/intuition-on-the-kullback-leibler-kl-divergence
and
http://timvieira.github.io/blog/post/2014/10/06/kl-divergence-as-an-objective-function/

The other direction may actually be closer to what you're interested in:
KLD(dat.obs, dat.s1)$sum.KLD.py.px
KLD(dat.obs, dat.s2)$sum.KLD.py.px
 
Last edited: