【问题标题】:Convert Jags model to stan model将 Jags 模型转换为 stan 模型
【发布时间】:2020-03-26 16:11:47
【问题描述】:

我正在尝试将 Jags 模型转换为 stan 模型。

锯齿:

model{

    for (i in 1:n){

        theta[i] ~ dbeta(u*s, s-u*s)

        y[i] ~ dbin(theta[i],N[i])
    } 

    u ~ dunif(0,1)
    s ~ dlnorm(4,0.25)

}

斯坦:

data {
  int<lower=0> J;

  int y[J];

  int N[J]; 
}


parameters {

  real<lower=0, upper=1> u;

  real<lower=0> s;

  vector[J] theta;

}


model {

    s ~ lognormal(4,2);

    theta ~ beta(s*u, s*(1-u));

    y ~ binomial(N, theta);

}

但是当我运行它时,它会返回如下消息:

链 1:拒绝初始值: 链 1:在初始值处评估对数概率的错误。 链 1:异常:beta_lpdf:随机变量 [4] 为 -1.58608,但必须 >= 0! (在第 18 行的“model29e45483bba0_model”中)

什么会在这个模型中产生负值?

【问题讨论】:

    标签: r model stan


    【解决方案1】:

    错误消息是由于theta 上没有适当的边界而导致的。应该是

    vector<lower = 0, upper = 1>[J] theta;
    

    许多 Stan 的新用户认为,在 theta 上放置一个类似于 beta 的东西意味着它介于零和一之间。但是,没有这样的含义,特别是在theta 的提案中,正如您从错误消息中看到的那样,除非声明了边界(在这种情况下,它们通过无约束变量的转换来强制执行),否则它可能是负数或大于一.

    【讨论】:

      猜你喜欢
      • 2017-04-08
      • 2021-03-31
      • 1970-01-01
      • 2017-02-08
      • 2021-09-18
      • 2018-10-05
      • 2020-08-25
      • 2019-05-06
      • 2021-02-13
      相关资源
      最近更新 更多