CmdStan.rb

Bayesian inference for Ruby, powered by CmdStan

Build Status

Installation

Add this line to your application’s Gemfile:

gem "cmdstan"

Getting Started

Create a Stan file, like bernoulli.stan

data {
  int<lower=0> N;
  int<lower=0,upper=1> y[N];
}
parameters {
  real<lower=0,upper=1> theta;
}
model {
  theta ~ beta(1,1);
  y ~ bernoulli(theta);
}

Compile the model (this can take a few minutes the first time as CmdStan downloads and builds)

model = CmdStan::Model.new(stan_file: "bernoulli.stan")

Fit the model

data = {"N" => 10, "y" => [0, 1, 0, 0, 0, 0, 0, 0, 0, 1]}
fit = model.sample(data: data, chains: 5)

Summarize the results

fit.summary

Load a compiled model

model = CmdStan::Model.new(exe_file: "bernoulli")

Check out Strata for shipping models

Maximum Likelihood Estimation

mle = model.optimize(data: data)
mle.optimized_params

Reference

Check if CmdStan is installed

CmdStan.cmdstan_installed?

Install CmdStan manually

CmdStan.install_cmdstan

Credits

This library is modeled after the CmdStanPy API.

History

View the changelog

Contributing

Everyone is encouraged to help improve this project. Here are a few ways you can help:

To get started with development:

git clone https://github.com/ankane/cmdstan-ruby.git
cd cmdstan-ruby
bundle install
bundle exec rake test