From ef080d5f9873d92051c038b3baeb38c0a25f5c9e Mon Sep 17 00:00:00 2001 From: Matt Graham Date: Thu, 23 Jul 2026 14:45:00 +0100 Subject: [PATCH 1/2] Make package description in metadata and README more generic --- DESCRIPTION | 33 ++++++------------- README.Rmd | 28 +++++++++++------ README.md | 40 +++++++++++++++--------- man/figures/README-banana-samples-1.png | Bin 37401 -> 38555 bytes 4 files changed, 55 insertions(+), 46 deletions(-) diff --git a/DESCRIPTION b/DESCRIPTION index 21214c4..2430e91 100644 --- a/DESCRIPTION +++ b/DESCRIPTION @@ -12,29 +12,16 @@ Authors@R: c( person("University College London", role = "cph"), person("Engineering and Physical Sciences Research Council", role = "fnd") ) -Description: Functions for simulating Markov chains using the Barker proposal - to compute Markov chain Monte Carlo (MCMC) estimates of expectations with - respect to a target distribution on a real-valued vector space. The Barker - proposal, described in Livingstone and Zanella (2022) - , is a gradient-based MCMC algorithm inspired by the - Barker accept-reject rule. It combines the robustness of simpler MCMC - schemes, such as random-walk Metropolis, with the efficiency of - gradient-based methods, such as the Metropolis adjusted Langevin algorithm. - The key function provided by the package is sample_chain(), which allows - sampling a Markov chain with a specified target distribution as its - stationary distribution. The chain is sampled by generating proposals and - accepting or rejecting them using a Metropolis-Hasting acceptance rule. - During an initial warm-up stage, the parameters of the proposal distribution - can be adapted, with adapters available to both: tune the scale of the - proposals by coercing the average acceptance rate to a target value; tune - the shape of the proposals to match covariance estimates under the target - distribution. As well as the default Barker proposal, the package also - provides implementations of alternative proposal distributions, such as - (Gaussian) random walk and Langevin proposals. Optionally, if 'BridgeStan's - R interface , - available on GitHub , is installed, - then 'BridgeStan' can be used to specify the target distribution to sample - from. +Description: Functions for simulating Markov chains using random-walk, Langevin, + Hamiltonian or Barker proposals, to compute Markov chain Monte Carlo (MCMC) + estimates of expectations with respect to a target distribution on a + real-valued vector space. Proposal shape and scale parameters can be + automatically adapted in an initial warm-up stage. The package has a modular + design allowing different algorithmic components such as proposals and + adapters to be mixed and matched. If 'BridgeStan's R interface + , available on + GitHub , is installed, then it can + be used to specify the target distribution to sample from. License: MIT + file LICENSE Encoding: UTF-8 Roxygen: list(markdown = TRUE) diff --git a/README.Rmd b/README.Rmd index 9b190f4..82b974b 100644 --- a/README.Rmd +++ b/README.Rmd @@ -25,9 +25,9 @@ knitr::opts_chunk$set( [![JOSS-status](https://joss.theoj.org/papers/b3d646dcf01299076e8a724ec8d909dc/status.svg)](https://joss.theoj.org/papers/b3d646dcf01299076e8a724ec8d909dc) -`rmcmc` is an R package for simulating Markov chains using the Barker proposal -to compute _Markov chain Monte Carlo_ (MCMC) estimates of expectations with -respect to a target distribution on a real-valued vector space. +`rmcmc` is an R package for simulating Markov chains using random-walk, Langevin, +Hamiltonian or Barker proposals, to compute _Markov chain Monte Carlo_ (MCMC) +estimates of expectations with respect to a target distribution on a real-valued vector space. The Barker proposal, described in [Livingstone and Zanella (2022)](https://doi.org/10.1111/rssb.12482), is a gradient-based MCMC algorithm inspired by the Barker accept-reject rule. It combines the robustness of simpler MCMC schemes, such as random-walk Metropolis, @@ -41,12 +41,22 @@ During an initial warm-up stage, the parameters of the proposal distribution can with adapters available to both: tune the scale of the proposals by coercing the average acceptance rate to a target value; tune the shape of the proposals to match covariance estimates under the target distribution. -As well as the default Barker proposal, the package also provides implementations of alternative proposal distributions, -such as (Gaussian) random walk and Langevin proposals. -Optionally, if [BridgeStan's R interface](https://roualdes.us/bridgestan/latest/languages/r.html), -available [on GitHub](https://github.com/roualdes/bridgestan), is installed, -[then BridgeStan can be used to specify the target distribution to sample -from](https://github-pages.ucl.ac.uk/rmcmc/articles/interfacing-with-stan-models.html). + +The package has a modular design allowing different algorithmic components such +as proposals and adapters to be mixed and matched and to allow to it interface +with various existing packages: + +- If [BridgeStan's R interface](https://roualdes.us/bridgestan/latest/languages/r.html), + available [on GitHub](https://github.com/roualdes/bridgestan), is installed, + [then BridgeStan can be used to specify the target distribution to sample from]( + https://github-pages.ucl.ac.uk/rmcmc/articles/interfacing-with-stan-models.html). +- The robust adaptive Metropolis algorithm described in [Vihola (2012)]( + https://doi.org/10.1007/s11222-011-9269-5) can be used for adapting the + proposal scale and shape if [the _ramcmc_ package]( + https://cran.r-project.org/web/packages/ramcmc/index.html) is installed. +- The generated chain output can be directly passed to functions for + computing summary statistics and convergence diagnostics in + [the _posterior_ package](https://mc-stan.org/posterior/). ## Installation diff --git a/README.md b/README.md index be0d5c0..b3140a3 100644 --- a/README.md +++ b/README.md @@ -14,10 +14,11 @@ [![JOSS-status](https://joss.theoj.org/papers/b3d646dcf01299076e8a724ec8d909dc/status.svg)](https://joss.theoj.org/papers/b3d646dcf01299076e8a724ec8d909dc) -`rmcmc` is an R package for simulating Markov chains using the Barker -proposal to compute *Markov chain Monte Carlo* (MCMC) estimates of -expectations with respect to a target distribution on a real-valued -vector space. The Barker proposal, described in [Livingstone and Zanella +`rmcmc` is an R package for simulating Markov chains using random-walk, +Langevin, Hamiltonian or Barker proposals, to compute *Markov chain +Monte Carlo* (MCMC) estimates of expectations with respect to a target +distribution on a real-valued vector space. The Barker proposal, +described in [Livingstone and Zanella (2022)](https://doi.org/10.1111/rssb.12482), is a gradient-based MCMC algorithm inspired by the Barker accept-reject rule. It combines the robustness of simpler MCMC schemes, such as random-walk Metropolis, with @@ -32,15 +33,26 @@ acceptance rule. During an initial warm-up stage, the parameters of the proposal distribution can be adapted, with adapters available to both: tune the scale of the proposals by coercing the average acceptance rate to a target value; tune the shape of the proposals to match covariance -estimates under the target distribution. As well as the default Barker -proposal, the package also provides implementations of alternative -proposal distributions, such as (Gaussian) random walk and Langevin -proposals. Optionally, if [BridgeStan’s R -interface](https://roualdes.us/bridgestan/latest/languages/r.html), -available [on GitHub](https://github.com/roualdes/bridgestan), is -installed, [then BridgeStan can be used to specify the target -distribution to sample -from](https://github-pages.ucl.ac.uk/rmcmc/articles/interfacing-with-stan-models.html). +estimates under the target distribution. + +The package has a modular design allowing different algorithmic +components such as proposals and adapters to be mixed and matched and to +allow to it interface with various existing packages: + +- If [BridgeStan’s R + interface](https://roualdes.us/bridgestan/latest/languages/r.html), + available [on GitHub](https://github.com/roualdes/bridgestan), is + installed, [then BridgeStan can be used to specify the target + distribution to sample + from](https://github-pages.ucl.ac.uk/rmcmc/articles/interfacing-with-stan-models.html). +- The robust adaptive Metropolis algorithm described in [Vihola + (2012)](https://doi.org/10.1007/s11222-011-9269-5) can be used for + adapting the proposal scale and shape if [the *ramcmc* + package](https://cran.r-project.org/web/packages/ramcmc/index.html) is + installed. +- The generated chain output can be directly passed to functions for + computing summary statistics and convergence diagnostics in [the + *posterior* package](https://mc-stan.org/posterior/). ## Installation @@ -128,4 +140,4 @@ results <- sample_chain( plot(results$traces[, "x"], results$traces[, "y"], col = "#1f77b4", pch = 20) ``` - + diff --git a/man/figures/README-banana-samples-1.png b/man/figures/README-banana-samples-1.png index c6304115cec450cf562befd618a3e96ba28c2014..5a9a37f35f64215177455e5f5717e0d53d60fddf 100644 GIT binary patch literal 38555 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 literal 37401 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 o5uEaWwI_dgb@E>&l Date: Mon, 7 Sep 2026 10:56:19 +0100 Subject: [PATCH 2/2] Make README and metadata descriptions more generic per Sam's review comments --- DESCRIPTION | 10 ++++++---- README.Rmd | 15 ++++++++------- README.md | 29 +++++++++++++++-------------- 3 files changed, 29 insertions(+), 25 deletions(-) diff --git a/DESCRIPTION b/DESCRIPTION index 2430e91..0faab03 100644 --- a/DESCRIPTION +++ b/DESCRIPTION @@ -12,10 +12,12 @@ Authors@R: c( person("University College London", role = "cph"), person("Engineering and Physical Sciences Research Council", role = "fnd") ) -Description: Functions for simulating Markov chains using random-walk, Langevin, - Hamiltonian or Barker proposals, to compute Markov chain Monte Carlo (MCMC) - estimates of expectations with respect to a target distribution on a - real-valued vector space. Proposal shape and scale parameters can be +Description: Functions for simulating Markov chains to compute Markov chain + Monte Carlo (MCMC) estimates of expectations with respect to a target + distribution on a real-valued vector space. The package has built-in support + for using Metropolis-Hastings transitions with random-walk, Langevin, + Hamiltonian or Barker proposals, and is designed to be easy to extend with + additional algorithms. Proposal shape and scale parameters can be automatically adapted in an initial warm-up stage. The package has a modular design allowing different algorithmic components such as proposals and adapters to be mixed and matched. If 'BridgeStan's R interface diff --git a/README.Rmd b/README.Rmd index 82b974b..f90a49e 100644 --- a/README.Rmd +++ b/README.Rmd @@ -25,11 +25,14 @@ knitr::opts_chunk$set( [![JOSS-status](https://joss.theoj.org/papers/b3d646dcf01299076e8a724ec8d909dc/status.svg)](https://joss.theoj.org/papers/b3d646dcf01299076e8a724ec8d909dc) -`rmcmc` is an R package for simulating Markov chains using random-walk, Langevin, -Hamiltonian or Barker proposals, to compute _Markov chain Monte Carlo_ (MCMC) +`rmcmc` is an R package for simulating Markov chains to compute _Markov chain Monte Carlo_ (MCMC) estimates of expectations with respect to a target distribution on a real-valued vector space. -The Barker proposal, described in [Livingstone and Zanella (2022)](https://doi.org/10.1111/rssb.12482), -is a gradient-based MCMC algorithm inspired by the Barker accept-reject rule. +The package has built-in support for using Metropolis-Hastings transitions with random-walk, Langevin, +Hamiltonian or Barker proposals, and is designed to be easy to extend with additional algorithms. + +By default chains are sampled using the Barker proposal, +described in [Livingstone and Zanella (2022)](https://doi.org/10.1111/rssb.12482), +which is a gradient-based MCMC algorithm inspired by the Barker accept-reject rule. It combines the robustness of simpler MCMC schemes, such as random-walk Metropolis, with the efficiency of gradient-based methods, such as the Metropolis adjusted Langevin algorithm. @@ -38,9 +41,7 @@ which allows sampling a Markov chain with a specified target distribution as its The chain is sampled by generating proposals and accepting or rejecting them using a Metropolis-Hasting acceptance rule. During an initial warm-up stage, the parameters of the proposal distribution can be adapted, -with adapters available to both: -tune the scale of the proposals by coercing the average acceptance rate to a target value; -tune the shape of the proposals to match covariance estimates under the target distribution. +with adapters available to both tune the scale and shape of proposals. The package has a modular design allowing different algorithmic components such as proposals and adapters to be mixed and matched and to allow to it interface diff --git a/README.md b/README.md index b3140a3..d121455 100644 --- a/README.md +++ b/README.md @@ -14,26 +14,27 @@ [![JOSS-status](https://joss.theoj.org/papers/b3d646dcf01299076e8a724ec8d909dc/status.svg)](https://joss.theoj.org/papers/b3d646dcf01299076e8a724ec8d909dc) -`rmcmc` is an R package for simulating Markov chains using random-walk, -Langevin, Hamiltonian or Barker proposals, to compute *Markov chain -Monte Carlo* (MCMC) estimates of expectations with respect to a target -distribution on a real-valued vector space. The Barker proposal, -described in [Livingstone and Zanella -(2022)](https://doi.org/10.1111/rssb.12482), is a gradient-based MCMC -algorithm inspired by the Barker accept-reject rule. It combines the -robustness of simpler MCMC schemes, such as random-walk Metropolis, with -the efficiency of gradient-based methods, such as the Metropolis -adjusted Langevin algorithm. +`rmcmc` is an R package for simulating Markov chains to compute *Markov +chain Monte Carlo* (MCMC) estimates of expectations with respect to a +target distribution on a real-valued vector space. The package has +built-in support for using Metropolis-Hastings transitions with +random-walk, Langevin, Hamiltonian or Barker proposals, and is designed +to be easy to extend with additional algorithms. + +By default chains are sampled using the Barker proposal, described in +[Livingstone and Zanella (2022)](https://doi.org/10.1111/rssb.12482), +which is a gradient-based MCMC algorithm inspired by the Barker +accept-reject rule. It combines the robustness of simpler MCMC schemes, +such as random-walk Metropolis, with the efficiency of gradient-based +methods, such as the Metropolis adjusted Langevin algorithm. The key function provided by the package is `sample_chain()`, which allows sampling a Markov chain with a specified target distribution as its stationary distribution. The chain is sampled by generating proposals and accepting or rejecting them using a Metropolis-Hasting acceptance rule. During an initial warm-up stage, the parameters of the -proposal distribution can be adapted, with adapters available to both: -tune the scale of the proposals by coercing the average acceptance rate -to a target value; tune the shape of the proposals to match covariance -estimates under the target distribution. +proposal distribution can be adapted, with adapters available to both +tune the scale and shape of proposals. The package has a modular design allowing different algorithmic components such as proposals and adapters to be mixed and matched and to