Skip to main content

Make normally distributed parameters non-centered in Stan programs.

Project description

decentralise

Build Status codecov

Make (some) Stan programs non-centered automatically.

Inspired by reading this paper.

Installation

Requires python 3.6+. Install with pip:

pip install decentralise

Example

This package provides a command line tool: decentralise, which is used as follows:

decentralise <input-file> <output-destination>

It will take any normally distributed parameters that have variances that are themselves parameters, and reparameterise them to make them non-centered. For example, the canonical eight schools code is:

data {
  int<lower=0> J; // number of schools
  vector[J] y; // estimated treatment effects
  vector<lower=0>[J] sigma; // s.e. of effect estimates
}
parameters {
  real mu;
  real<lower=0> tau;
  vector[J] theta;
}
model {
  theta ~ normal(mu, tau);
  y ~ normal(theta, sigma);
}

Once decentralise is applied, this program becomes

data {
  int<lower=0> J; // number of schools
  vector[J] y; // estimated treatment effects
  vector<lower=0>[J] sigma; // s.e. of effect estimates
}
parameters {
  real mu;
  real<lower=0> tau;
  vector[J] theta_std;
}
transformed parameters {
  vector[J] theta = mu + theta_std * tau;
}
model {
  theta_std ~ normal(0, 1);
  y ~ normal(theta, sigma);
}

I wrote this tool for fun, and have not thoroughly tested it. For example, it will fail for any parameters whose sampling statements are not vectorised. e.g.:

x ~ normal(mu, tau);

will work, but

for i in (1:n) {
    x[i] ~ normal(mu, tau);
}

will not. There are probably a ton of other cases where it will break that I have not anticipated, as well!

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Files for decentralise, version 0.0.1
Filename, size File type Python version Upload date Hashes
Filename, size decentralise-0.0.1-py2.py3-none-any.whl (5.0 kB) File type Wheel Python version py2.py3 Upload date Hashes View
Filename, size decentralise-0.0.1.tar.gz (6.7 kB) File type Source Python version None Upload date Hashes View

Supported by

AWS AWS Cloud computing Datadog Datadog Monitoring DigiCert DigiCert EV certificate Facebook / Instagram Facebook / Instagram PSF Sponsor Fastly Fastly CDN Google Google Object Storage and Download Analytics Microsoft Microsoft PSF Sponsor Pingdom Pingdom Monitoring Salesforce Salesforce PSF Sponsor Sentry Sentry Error logging StatusPage StatusPage Status page