RStan矢量化循环

时间:2017-12-15 17:06:19

标签: vectorization stan

我正在努力学习STAN。我知道STAN中的矢量化循环(如在R中)提高了效率。但我还没弄清楚如何正确地做到这一点。下面的STAN模型来自Sorenson等人。

  data {
  int<lower=1> N;                //number of data points
  real rt[N];                    //reading time
  real<lower=-1,upper=1> so[N];  //predictor
}

parameters {
  vector[2] beta;            //intercept and slope
  real<lower=0> sigma_e;     //error sd
}

model {
  real mu;
  for (i in 1:N){                   // likelihood
    mu = beta[1] + beta[2]*so[i];
    rt[i] ~ lognormal(mu,sigma_e);
  }
}

我尝试了以下对模型块的编辑:

model {
  vector[N] mu;
    mu = beta[1] + beta[2]*so;
    rt ~ lognormal(mu,sigma_e);
}

但我被告知这个块格式错误,第3行的“so”后面有错误。我认为这条线在R中有用,但显然不在STAN中。我究竟做错了什么?在此先感谢您的帮助。

我似乎已经弄明白了。我不得不编辑数据块以输入“so”作为向量而不是简单地作为真实[N]。 “real [N]”和“vector [N]”之间有什么区别?

data {
  int<lower=1> N;                //number of data points
  real rt[N];                    //reading time
  vector<lower=-1,upper=1>[N] so;  //predictor
}

0 个答案:

没有答案