StealLikeBayes
A Compendium of Bayesian Statistical Routines Written in C++
This is a compendium of C++ routines useful for Bayesian statistics. We steal other people’s C++ code, repurpose it, and export it so developers of R packages can use it in their C++ code. We actually don’t steal anything, or claim that Thomas Bayes did, but copy code that is compatible with our GPL 3 licence, fully acknowledging the authorship of the original code.
How to contribute
You are welcome to contribute to StealLikeBayes! How does this work?
Things to remember
- We only accept code from packages and repositories with compatible licences. If you are contributing code from a package distributed under GPL 3 you’re good. Otherwise, you must argue the licence compatibility.
- Fully acknowledge the source of the contributed code in the file with your code and documentation.
- Once you contribute, we might reach out later for you to join the authors of a paper to be published on the basis of this package.
- Provide one Bayesian statistical routine per submission.
- Your submission must consist of:
- one C++ file,
src/*.cpp - the corresponding C++ header file,
src/*.h - one R file with a wrapper for your main C++ function,
R/*.Rwith full documentation and acknowledgement of the original code authorship, - one R file with tests of your function,
inst/tinytest/test_*.R, - updates on your authorship in
DESCRIPTION, - if required, updates on dependencies in
DESCRIPTIONandR/StealLikeBayes-package.R.
- one C++ file,
To-do list
- Open an issue by clicking New issue >> A new submission template.
- Fork the repository bsvars/StealLikeBayes.
- Follow the instructions from the issue.
- Always push your commits linking them all to your issue by including the hash tag of your issue.
- Run checks of the package locally. They all need to pass!
Rcpp::compileAttributes()
devtools::document()
devtools::check()- Submit your Pull Request.
- Respond to all the comments from the maintainer.
How to use the package StealLikeBayes
Please, feel free to use it whatever way you feel like, ofc! We create it with two intended uses:
Use our C++ code in your R package
In order to use our C++ code in your R package you need to ensure you include all the dependencies to both: our package, and packages on which our functions rely on such as RcppArmadillo. The latter is on you!
To use C++ code from StealLikeBayes follow the steps:
- Include dependencies in your
DESCRIPTIONfile, e.g.:LinkingTo: StealLikeBayesandImports: StealLikeBayes. - Include dependencies in your
R/*-package.Rfile, e.g.:@import: StealLikeBayes - Include our header in your
src/*.cppfiles, e.g.:#include "StealLikeBayes.h". - Use our functions in your C++ code, e.g.:
arma::vec out = StealLikeBayes::rnorm1_precision_sampler(zeros<vec>(10), ones<vec>(10), -0.5);Use our R code in your R package
That’s simple!
- Include dependencies in your
DESCRIPTIONfile, e.g.:Imports: StealLikeBayes. - Include dependencies in your
R/*-package.Rfile, e.g.@importFrom StealLikeBayes rnorm1_precision_sampler. - Use our functions in your R code, e.g.:
out = StealLikeBayes::rnorm1_precision_sampler(rep(0, 10), rep(1, 10), -0.5)Installation
The first time you install the package
You must have a cpp compiler. Follow the instructions from Section 1.3. by Eddelbuettel & François (2023). In short, for Windows: install RTools, for macOS: install Xcode Command Line Tools, and for Linux: install the standard development packages.
Once that’s done:
You can install the StealLikeBayes package by running:
install_packages("StealLikeBayes")You can install the developer’s version of StealLikeBayes from its GitHub repository by running:
devtools::install_github("bsvars/StealLikeBayes")