[ANN] BayesDensity.jl - A package for univariate nonparametric Bayesian density estimation

Hi Julia users!

I am pleased to announce the first release of the BayesDensity.jl package!

The goal of BayesDensity.jl is to provide a uniform interface to nonparametric Bayesian density estimation in one dimension. The package provides an alternative to kernel methods for smooth density estimation, providing implementations of several popular Bayesian approaches such as Dirichlet process mixtures and finite mixture models via both Markov chain Monte Carlo methods and variational inference. The package also makes it easy to visualize the resulting density estimates through its Makie.jl and Plots.jl extensions.

For the visually minded reader, here is a plot showing off the packages capabilities (using a HistSmoother and featuring the famous “claw” density)

A full list of the methods available in the package can be found in the documentation.
The package follows a monorepo approach, so that most of the provided models can be installed independently from each other.

I hope you will check out this package, or better yet, find it useful!

7 Likes

Thank you for sharing.
Looks like a great package with good documentation.
I like the Primer section introducing the subject.
How does this package compare to Turing.jl ?

1 Like

The difference between this package and Turing.jl is scope: Turing is a general-purpose framework for specifying and fitting Bayesian models, while BayesDensity.jl provides highly problem-specific inference tools for several Bayesian nonparametric density estimators. The type of models supported by BayesDensity are often high- or even infinite-dimensional, and therefore require tailor-made algorithms to enable efficient posterior inference. As such, BayesDensity does not use Turing at all for inference.

2 Likes