Diffusion based kernel density estimation after [Botev et al., 2010]. This Python implementation is based on Botev’s MATLAB implementations for 1d and 2d samples, [Botev, 2015] and [Botev, 2015] respectively. The 1d python implementation is influenced by [Smith, 2013].

A brief description of the implemented method:

Reliable and extremely fast kernel density estimator for one-dimensional data; Gaussian kernel is assumed and the bandwidth is chosen automatically; Unlike many other implementations, this one is immune to problems caused by multimodal densities with widely separated modes (see example). The estimation does not deteriorate for multimodal densities, because we never assume a parametric model for the data (like those used in rules of thumb).

[Botev, 2015]

Differences to the MATLAB implementation

  • Extended to be able to handle weighted samples.

  • Extensive testing (mostly against the MATLAB implementation that is assumed to be correct).

  • Additional examples (Examples).