chi-feng/mcmc-demo

Interactive Markov-chain Monte Carlo Javascript demos

See the code

README

Example: Hamiltonian Monte Carlo

Click on an algorithm below to view an interactive demo where you can change algorithm parameters on-the-fly:

Standard MCMC methods

Non-Markovian iterative sampling methods

References

[1] H. Haario, E. Saksman, and J. Tamminen, An adaptive Metropolis algorithm (2001)

[2] M. D. Hoffman, A. Gelman, The No-U-Turn Sampler: Adaptively Setting Path Lengths in Hamiltonian Monte Carlo (2011)

[3] G. O. Roberts, R. L. Tweedie, Exponential Convergence of Langevin Distributions and Their Discrete Approximations (1996)

[4] Li, Tzu-Mao, et al. Anisotropic Gaussian mutations for metropolis light transport through Hessian-Hamiltonian dynamics ACM Transactions on Graphics 34.6 (2015): 209.

[5] Q. Liu, et al. Stein Variational Gradient Descent: A General Purpose Bayesian Inference Algorithm Advances in Neural Information Processing Systems. 2016.

[7] Cajo J. F. ter Braak & Jasper A. Vrugt Differential Evolution Markov Chain with snooker updater and fewer chains Statistics and Computing. 2008.

[8] Jakob Robnik, G. Bruno De Luca, Eva Silverstein, Uroš Seljak Microcanonical Hamiltonian Monte Carlo (2022)

Running locally

Clone or download the repository and open index.html in your web browser. All dependencies are included in in lib/.

Adding an algorithm

  1. Copy one of the existing algorithms in the algorithms directory (a good starting point is algorithms/HamiltonianMC.js).
  2. in app.html include the your algorithm's javascript file at the bottom of the page. This will add your algorithm to the dropdown menu.
  3. Add any new visualizations to the Visualizer.prototype.dequeue function defined in main/Visualizer.js. The MCMC simulation adds visualization "events" onto an animation queue. Most common events such as accepting or rejecting a proposal have already been implemented. The renderer composites the contents of three offscreen canvases (densityCanvas, samplesCanvas, and overlayCanvas)
  4. Add a link to your algorithm in README.md and index.html

See also

Interactive Gaussian process regression demo

https://github.com/chi-feng/gp-demo

Star History

Star History Chart

chi-feng/mcmc-demo

Interactive Markov-chain Monte Carlo Javascript demos

See the code

README

Example: Hamiltonian Monte Carlo

Click on an algorithm below to view an interactive demo where you can change algorithm parameters on-the-fly:

Standard MCMC methods

Non-Markovian iterative sampling methods

References

[1] H. Haario, E. Saksman, and J. Tamminen, An adaptive Metropolis algorithm (2001)

[2] M. D. Hoffman, A. Gelman, The No-U-Turn Sampler: Adaptively Setting Path Lengths in Hamiltonian Monte Carlo (2011)

[3] G. O. Roberts, R. L. Tweedie, Exponential Convergence of Langevin Distributions and Their Discrete Approximations (1996)

[4] Li, Tzu-Mao, et al. Anisotropic Gaussian mutations for metropolis light transport through Hessian-Hamiltonian dynamics ACM Transactions on Graphics 34.6 (2015): 209.

[5] Q. Liu, et al. Stein Variational Gradient Descent: A General Purpose Bayesian Inference Algorithm Advances in Neural Information Processing Systems. 2016.

[7] Cajo J. F. ter Braak & Jasper A. Vrugt Differential Evolution Markov Chain with snooker updater and fewer chains Statistics and Computing. 2008.

[8] Jakob Robnik, G. Bruno De Luca, Eva Silverstein, Uroš Seljak Microcanonical Hamiltonian Monte Carlo (2022)

Running locally

Clone or download the repository and open index.html in your web browser. All dependencies are included in in lib/.

Adding an algorithm

  1. Copy one of the existing algorithms in the algorithms directory (a good starting point is algorithms/HamiltonianMC.js).
  2. in app.html include the your algorithm's javascript file at the bottom of the page. This will add your algorithm to the dropdown menu.
  3. Add any new visualizations to the Visualizer.prototype.dequeue function defined in main/Visualizer.js. The MCMC simulation adds visualization "events" onto an animation queue. Most common events such as accepting or rejecting a proposal have already been implemented. The renderer composites the contents of three offscreen canvases (densityCanvas, samplesCanvas, and overlayCanvas)
  4. Add a link to your algorithm in README.md and index.html

See also

Interactive Gaussian process regression demo

https://github.com/chi-feng/gp-demo

Star History

Star History Chart

Project health

Overall

4.0/10

Maintained

10/10

Code review

3/10
OpenSSF Scorecard

Significant stargazers

David Reguera

18 followers · starred Dec 2022

Adrien Barbaresi

512 followers · starred Mar 2023

Daniel Hollas

29 followers · starred Jan 2020

Atılım Güneş Baydin

409 followers · starred Jan 2020