As part of my MSc studies, I developed the BOCD.jl, a Julia implementation of the Bayesian Online Changepoint Detection (BOCD) algorithm, based on the Adams & MacKay’s 2007 paper, “Bayesian Online Changepoint Detection”.
This implementation is inspired by existing versions in Python. The package version v0.3.0 currently supports the following models:
-
Hazard Functions:
- Constant Hazard
-
Conjugate Models:
- Normal with unknown mean and known precision
- Normal with unknown mean and unknown precision
- LogNormal with unknown mean and known precision
The package README.md has instructions on how to use it.
Any constructive feedback are welcome! Such as considerations about the package architecture, implemented statistical features, and potential errors. Your insights would be greatly appreciated!
PS: In the future I will try to implement this algorithm using the RxInfer.jl package, as the message passing algorithm from RxInfer.jl could be used in place of the currently manual posterior hyperparameter calculation for each conjugate model — at least I think it might be feasible. This is currently on hold due to other research commitments.