使正态分布参数在stan程序中不居中。

decentralise的Python项目详细描述


分散

Build Statuscodecov

使(某些)斯坦程序不自动居中。

灵感来自阅读this paper

安装

需要Python3.6+。 安装时使用pip

pip install decentralise

示例

这个包提供了一个命令行工具:decentralise,使用如下:

decentralise <input-file> <output-destination>

它将接受任何正态分布的参数,这些参数的方差本身就是参数,并重新参数化它们以使它们不居中。 例如,规范的八所学校代码是:

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);
}

应用decentralise后,此程序变为

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);
}

我写这个工具是为了好玩,还没有彻底测试过。 例如,对于采样语句未矢量化的任何参数,它都将失败。 例如:

x ~ normal(mu, tau);

会起作用,但

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

不会的。 可能还有很多其他的情况下,它会打破,我没有预料到,以及!

欢迎加入QQ群-->: 979659372 Python中文网_新手群

推荐PyPI第三方库


热门话题
编译器构造为什么在Java中允许初始化对Null的引用?   java手动调用javax的actionPerformed。摆动计时器   使用git分支的java Maven版本控制   Java8句子流   java JPA OneToOne和OneToMany实体实例化/创建   java如何将值添加到列表<Map<String,Object>>?   java如何使用ComboBox在一个框架内更改JPanel。getSelectedIndex()   java在比较XML和xmlunit时忽略文本差异   java无法从其他pc连接到本地主机   Java中分配对象id的优雅方式   Java中静态变量的使用   java试图从Neteller获取OAuth访问令牌时产生错误:“服务器返回HTTP响应代码:401表示URL”   Java:基元类型是否会影响性能?   java可以让hasNext()不区分大小写吗?   基于AutoCompleteTextView建议属性或AutoCompleteTextView值的java Android搜索   java流文件到firefox浏览器有时无法打开应用程序对话框   在没有ArrayList的Java中返回数组中的搜索结果   复制java。木卫一。IOException:数据错误(CRC)   java为什么我在尝试删除Facebook测试用户时会出现“方法未实现”错误   java如何使用JNA调用SetProcessReliationPolicy