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.

Source Distribution

decentralise-0.0.1.tar.gz (6.7 kB view hashes)

Uploaded source

Built Distribution

decentralise-0.0.1-py2.py3-none-any.whl (5.0 kB view hashes)

Uploaded py2 py3

Supported by

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