R stan 8schools示例失败

时间:2018-10-09 12:58:49

标签: r stan

我正在尝试从此官方tutorial运行经典的r-stan示例。但是我不能,因为我收到以下错误消息:

enter image description here

我使用的代码如下:

schools_dat <- list(J = 8, 
                    y = c(28,  8, -3,  7, -1,  1, 18, 12),
                    sigma = c(15, 10, 16, 11,  9, 11, 10, 18))
fit <- stan(file = '8schools.stan', data = schools_dat, 
            iter = 1000, chains = 4)

我另外创建了8schools.stan文件,并嵌套了以下代码:

data {
  int<lower=0> J; // number of schools 
  real y[J]; // estimated treatment effects
  real<lower=0> sigma[J]; // s.e. of effect estimates 
}
parameters {
  real mu; 
  real<lower=0> tau;
  real eta[J];
}
transformed parameters {
  real theta[J];
  for (j in 1:J)
    theta[j] = mu + tau * eta[j];
}
model {
  target += normal_lpdf(eta | 0, 1);
  target += normal_lpdf(y | theta, sigma);
}

我想弄清楚此错误的原因以及如何避免此错误

我还要提及:

  1. 以下代码正确运行并返回10:

    fx <-inline :: cxxfunction(signature(x =“ integer”,y =“ numeric”),'     返回ScalarReal(INTEGER(x)[0] * REAL(y)[0]); ) fx(2L,5)

  2. 我已经安装了Rtools的最新冻结版本。

  3. Rtools,R和Rstudio也位于没有空格的文件夹中。
  4. 我在Windows(不是笔记本电脑)上工作
  5. 我一直严格遵守installiation guide中的所有步骤。

将非常感谢您的帮助!

更新

我还按照Ben Goodrich的建议设置了Sys.setenv(USE_CXX14 = 1),但是现在我收到了以下错误消息

enter image description here

1 个答案:

答案 0 :(得分:2)

这是一个临时性的问题,这是因为(本周)StanHeaders R软件包(需要C ++ 14)已在CRAN上被接受,但尚未使用rstan R软件包(使用C ++ 14进行编译)模型)。因此,暂时,您首先需要致电 Sys.setenv(USE_CXX14=1) 但是将来在任何地方阅读大量这篇文章的人都不太可能需要明确地这样做(rstan R软件包将在内部完成)。

在Windows上,您需要输入 CXX14=g++ -std=c++1y CXX14FLAGS=-O3 到〜/ .R / Makevars文件中,但是在Mac上,这些行应该已经存在了。